Chatixia: a domain-agnostic skill-based AI agent framework
Project description
Chatixia
Chatixia is a skill-based AI assistant powered by Azure OpenAI. Its extensible skill system lets you perform document processing, image manipulation, database queries, workflow automation, and more through natural language.
Features
- Extensible skill system — Add custom capabilities via Python, JavaScript, or binary handlers
- Session management — Save and restore conversation history
- Long-term memory — Remember important facts across sessions
- Document processing — Analyze PDFs and images with Azure Document Intelligence
- Knowledge base — Ingest documents and web pages for agent-searchable context
- Workflow automation — Capture conversations as reusable multi-step workflows
- Integrations — Azure AI Search, PostgreSQL (read-only), and more
- MCP support — Connect external tool servers (Playwright, GitHub, etc.)
- Local deployment — Package and run agents anywhere with
pip install chatixia
Quick Start (SDK)
pip install chatixia
chatixia init my-agent
# Edit agent.yaml and .env with your API keys
chatixia run
See the SDK documentation for the full guide.
Full Platform Setup
Prerequisites
- Python 3.14+
- uv package manager
- Node.js 20+ (for the Web UI)
Installation
git clone https://github.com/Chatixia-AI/chatixia-agent.git
cd chatixia-agent
uv sync
cp .env.example .env
# Edit .env with your API keys
Environment Variables
Add the following to .env:
# Azure OpenAI (required)
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your-api-key
AZURE_OPENAI_DEPLOYMENT=gpt-5.2
# Azure Document Intelligence (for analyze_document skill)
AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT=https://your-resource.cognitiveservices.azure.com/
AZURE_DOCUMENT_INTELLIGENCE_KEY=your-api-key
Running
# CLI REPL
uv run cli/main.py
# Backend API (port 8000)
uv run uvicorn server.api:app --reload
# Web UI (port 5173)
cd web && npm install && npm run dev
# Debug logging
LOG_LEVEL=DEBUG uv run cli/main.py
CLI Commands
| Command | Description |
|---|---|
/new |
Start a new session (auto-saves current) |
/sessions |
List saved sessions |
/resume <id> |
Resume a saved session |
/delete <id> |
Delete a session |
/history |
Show current session info |
/export |
Export session as JSON |
/remember <text> |
Save a fact to long-term memory |
/memories |
List saved memories |
/forget <id> |
Delete a memory |
/help |
Show help |
quit, exit, q |
Exit |
Skills
Built-in Skills
| Skill | Description |
|---|---|
analyze_document |
Analyze documents with Azure Doc Intelligence |
pdf_to_images |
Convert PDF pages to images |
crop_image |
Crop an image |
get_image_size |
Get image dimensions |
summarizer |
Summarize text |
calculator |
Evaluate math expressions |
echo |
Echo a message back |
postgres_readonly_query |
Query PostgreSQL (read-only) |
get_ariba_data |
Fetch data from SAP Ariba |
azure_ai_search |
Search Azure AI Search index |
spawn_sub_agent |
Delegate tasks to a sub-agent |
render_ui |
Generate rich UI components (charts, tables) |
flow_chart_builder |
Build flow chart visualizations |
Creating Custom Skills
Create a new folder under skills/ with the following files:
skills/
└── my_skill/
├── skill.json # Skill definition (required)
├── handler.py # Python handler (recommended)
└── prompt.txt # Prompt template (optional)
skill.json:
{
"name": "my_skill",
"description": "What this skill does",
"version": "1.0.0",
"parameters": {
"input": {
"type": "string",
"description": "The input to process",
"required": true
}
}
}
handler.py:
def handle(input: str) -> str:
"""Process the input and return a result."""
return input.upper()
See the Skill Development Guide for details on JavaScript, TypeScript, and binary handlers.
MCP Server Integration
Chatixia supports the Model Context Protocol (MCP) for connecting external tool servers.
Create .mcp.json in the project root:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"],
"description": "Browser automation",
"enabled": true
}
}
}
| Option | Required | Description |
|---|---|---|
command |
Yes | Command to run (npx, uvx, node, etc.) |
args |
Command-line arguments | |
env |
Environment variables (API keys, etc.) | |
description |
Human-readable description | |
enabled |
Set to false to disable (default: true) |
See .mcp.example.json for more examples.
Project Structure
chatixia-agent/
├── cli/ # Interactive CLI (REPL + autonomous mode)
├── core/ # Agent core (skills, sessions, memory, DB, MCP)
├── server/ # FastAPI backend (REST + SSE streaming)
├── web/ # React frontend (Vite + TypeScript)
├── extension/ # Chrome extension (Manifest V3)
├── sdk/ # PyPI package (chatixia CLI)
├── skills/ # Skill definitions (26 skills)
├── docs/ # Documentation (MkDocs Material)
├── tests/ # pytest suite
├── .chatixia/ # Local data (SQLite DB, prompts, uploads)
└── pyproject.toml # Project configuration
Testing
uv run pytest
Documentation
Full documentation is available at chatixia-ai.github.io/chatixia-agent.
License
MIT
Contributing
Issues and Pull Requests are welcome!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chatixia_agent-0.1.2.tar.gz.
File metadata
- Download URL: chatixia_agent-0.1.2.tar.gz
- Upload date:
- Size: 88.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5daf576afbe394171b3156366d7de9704f388418ae3de0ee80253ceaa0443b9
|
|
| MD5 |
26d99edb8bfce3c009e6e4a2c50f42db
|
|
| BLAKE2b-256 |
ce42a814a0c9f8f2ff0a0993483e3b1648ddbbac855d041ef38bfb991cf0e14e
|
File details
Details for the file chatixia_agent-0.1.2-py3-none-any.whl.
File metadata
- Download URL: chatixia_agent-0.1.2-py3-none-any.whl
- Upload date:
- Size: 77.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81160c85da90d2750fa1c1ff55702b076fc860b754e6b3d5e95ecd601b288754
|
|
| MD5 |
df324866f2a2d30ff54ba8e6c10120b2
|
|
| BLAKE2b-256 |
4e29d74ac2f445b0d0783bf0baf61bd66a3af1093cd69442f88c99d0c01999cf
|