A modern framework for orchestrating AI agents. Self-contained — no external services required for vector storage or embeddings.
- Agent Orchestration — Multi-agent workflows with LangGraph
- Vector-based Memory — DuckDB-powered vector storage with SentenceTransformers embeddings (no external DB needed)
- MCP Integration — Model Context Protocol for agent-tool communication
- Multi-LLM Support — OpenAI, Anthropic, Ollama
- Knowledge & Experience — Automatic vector-based memory per agent
- Local Skills — Claude/Codex-style
SKILL.mddiscovery from project and home directories - Team Management — Organize agents into collaborative teams with supervisors
- FastAPI — REST API for agent management
pip install mao-agentsOr for development:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv syncfrom mao import create_agent
agent = await create_agent(
provider="anthropic",
model_name="claude-sonnet-4-20250514",
agent_name="assistant",
system_prompt="You are a helpful data analyst.",
)
response = await agent.ainvoke(
{"messages": [{"role": "user", "content": "Analyze the latest data"}]}
)# LLM API Keys
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-...
# Vector Storage (optional — defaults to mao_vectors.duckdb)
VECTOR_DB_PATH=./data/mao_vectors.duckdb
# LangGraph checkpoints (durable short-term memory)
MAO_CHECKPOINT_DB_PATH=./data/mao_checkpoints.duckdb
# DuckDB Configuration
MCP_DB_PATH=./data/mcp_config.duckdb
# MCP / Ollama
MCP_CONFIG_PATH=./.mcp.json
OLLAMA_HOST=http://localhost:11434
# Optional skill discovery overrides (`;` on Windows, `:` on Unix)
MAO_SKILL_PATHS=./.codex/skills;./.claude/skills
# HITL for selected tool names (comma-separated)
MAO_HITL_TOOLS=send_email,delete_record
# LangSmith tracing / observability
LANGSMITH_API_KEY=lsv2_...
LANGSMITH_PROJECT=mao-agents
LANGSMITH_TRACING=true
LANGSMITH_TRACING_SAMPLING_RATE=0.25
LANGCHAIN_TRACING_V2=true
uv run uvicorn src.mao.api.api:api --host 0.0.0.0 --port 8000 --reloadEndpoints: /agents, /teams, /mcp, /config, /health
Docs: /docs (Swagger), /redoc
Runtime notes:
- Agent and supervisor checkpoint state is persisted via
MAO_CHECKPOINT_DB_PATH /agents/{id}/chatand/teams/{id}/chataccept optionalresponse_schemafor structured output- The same chat endpoints accept optional
approval_decisionsto resume human-in-the-loop tool approvals - Agents support optional
skillsandskill_pathsfields in create/update payloads - Discoverable skills are listed via
/config/skills - Skill discovery checks project and home roots such as
.codex/skills,.claude/skills, and.agents/skills - Workspace guidance from
AGENTS.mdandCLAUDE.mdis injected into the agent system prompt when found - Team members support typed communication policies via
paramswith fields such as:allow_supervisor_delegationrouting_keywordsblocked_keywordscan_receive_directallow_peer_messagescan_message_rolescan_message_agentsaccept_messages_from_roles
/teams/{id}/chatsupports direct member routing viadirect_to_agent_id- Team chat traces now include structured events for:
- supervisor delegations
- direct user-to-member routing
- peer member-to-member messages
{
"agent_id": "agent_writer_1",
"role": "writer",
"params": {
"allow_supervisor_delegation": true,
"routing_keywords": ["draft", "write", "summary"],
"blocked_keywords": ["delete", "shutdown"],
"can_receive_direct": true,
"allow_peer_messages": true,
"accept_messages_from_roles": ["researcher", "editor"]
}
}docker compose up -dMIT — see LICENSE.