Version: 0.2.40
Agent Utilities provides a robust foundation for building production-ready Pydantic AI Agents. Recently refactored into a high-performance modular architecture, it simplifies agent creation, adds advanced Graph Orchestration, and provides essential "operating system" tools including state persistence, resilience, and high-fidelity streaming.
- Native Multi-Modal (Vision) Support: Direct processing of image context within the graph orchestrator. Decodes base64 image data into
pydantic_ai.BinaryContentfor high-fidelity multi-modal reasoning. - Dynamic MCP Tool Distribution: Load an
mcp_config.jsonand the system automatically connects to each MCP server, extracts and tags every tool, partitions them into focused specialist agents (~10-20 tools each), and registers them as graph nodes at runtime. This keeps context windows light - "GitLab Projects" specialist only sees 10 project tools. - Flexible Skill Loading: Unified
skill_typesparameter to dynamically loaduniversalskills,graphs, or custom workspace toolsets. - Advanced Graph Orchestration: Router → Planner → Dispatcher pipeline with parallel fan-out execution. Dynamic step registration for both hardcoded skill agents and MCP-discovered specialists.
- Self-Healing: Circuit breaker for MCP Servers (closed/open/half-open), specialist fallback chain, tool-level retries with exponential backoff, per-node timeout, and automatic re-planning on failure.
- Self-Correcting: Verifier feedback loop with structured
ValidationResultscoring. Low-quality results trigger re-dispatch with feedback injection and preserved message history. - Self-Improving: Execution memory persisted natively to the Knowledge Graph after each run. Past failure patterns automatically inform future routing decisions.
- Agentic Engineering Patterns: Out-of-the-box support for TDD Cycles (Red-Green-Refactor), First Run Tests (baseline establishment), Agentic Manual Testing (exploratory verification), Code Walkthroughs (linear documentation), and Interactive Explanations (HTML/JS artifacts).
- Resilience & Accuracy: Error recovery with local retries, re-planning loops, and result verification via the Verifier quality gate.
- Observability: Real-time Graph Streaming (SSE) and lifecycle events. Early OTEL/logfire gate.
- Typed Foundation: Zero-config dependency injection using
AgentDeps. - Specialist Discovery: Automated discovery of domain specialists directly from the Knowledge Graph.
- Autonomous Memory Architecture: MAGMA-inspired orthogonal reasoning views (Semantic, Temporal, Causal, Entity) combined with Agent Lightning-style self-improvement loops. Unifies code awareness, chat memory, and Research Knowledge Bases (Medical, Chemistry, etc.) into a singular, schema-enforced graph. Cross-domain relationships emerge automatically through shared concepts.
- Agent Server: Built-in FastAPI server with standardized
/mcp,/a2a,/acp(Standardized Protocol), and/docs(Swagger UI) endpoints. - Automatic Documentation: Runtime generation of OpenAPI specifications for all agent server APIs.
- Workspace Management: Automated management of agent state through standardized structures. (Note: Legacy files like
IDENTITY.mdandUSER.mdhave been migrated to the Knowledge Graph andmain_agent.mdtemplates). - Spec-Driven Development (SDD): High-fidelity orchestration pipeline that decomposes goals into structured Specifications (
Spec), Implementation Plans, and dependency-aware Tasks. Ensures technical precision and parallel execution safety. - Unified Intelligence Graph: A powerful 12-phase topological pipeline that unifies NetworkX in-memory analysis with Cypher persistence. Enables deep structural codebase awareness, cross-repository symbol mapping, and long-term agent memory.
- Graph Database Abstraction: Out-of-the-box support for multiple Cypher-compatible backends including LadybugDB (default embedded), FalkorDB, and Neo4j.
- Graph-Native Ecosystem State: Flat-file management (
MEMORY.md,USER.md,HEARTBEAT.md,CRON.md) has been fully deprecated. Agent memory, execution logs, client profiles, and background scheduled tasks are now stored natively as highly-relational nodes within the Knowledge Graph. - Automated Graph Maintenance: Built-in Cypher-driven maintenance routines (
maintenance.py) that handle vector embedding enrichment, scheduled cron log pruning, intelligent chat summarization, and Concept Merging/Pruning to ensure sustainable long-term memory. Supports Hub Node Protection for critical foundational knowledge. - Lightweight & Lazy: Core utilities are lightweight. Heavy dependencies are lazy-loaded only when requested via optional extras.
- Autonomous Graph-Native Memory: State-of-the-art architecture combining MAGMA orthogonal retrieval with Agent Lightning self-optimization loops. Supports unified ingestion of MCP, A2A, and Skill-based resources with automated importance scoring and temporal decay.
- JSON-as-Code Prompting: Standardized Pydantic models for structured prompting. Moves away from free-form Markdown to robust, versioned JSON blueprints for high-precision task specification (Content, Code, Strategy, etc.).
- Project-Aware Memory (AGENTS.md): Native support for Claude-style project rules and memory. Backend automatically loads and injects
AGENTS.md(Project Rules) andMEMORY.md(Learned Context) into the system prompt for high-fidelity codebase awareness.
Agent Utilities implements a sophisticated 12-phase pipeline to map and analyze your workspace. This system unifies NetworkX (for topological algorithms) and LadybugDB (for persistent Cypher queries and hybrid search).
| Phase | Name | Purpose |
|---|---|---|
| 1 | Memory | Hydrates existing state (Nodes/Edges) from LadybugDB to maintain session continuity. |
| 2 | Scan | Performs the initial directory walk, respecting .gitignore, to identify all source code files. |
| 3 | Registry | Ingests prompts/*.md and MCP server definitions into the Knowledge Graph as specialist nodes. |
| 4 | Parse | AST parsing (tree-sitter) to extract symbols (Classes, Functions) and raw import statements. |
| 5 | Resolve | Maps raw import strings into actual graph edges between File and Symbol nodes. |
| 6 | MRO | Calculates Method Resolution Order and inheritance hierarchies for OOP structures. |
| 7 | Reference | Builds the call graph by identifying where specific symbols are referenced or invoked. |
| 8 | Communities | Clusters nodes into tightly-coupled modules using topological algorithms like Louvain. |
| 9 | Centrality | Runs PageRank analysis to identify critical path "God Objects" and core utilities. |
| 10 | Embedding | Generates semantic vector embeddings for all symbols to enable high-fidelity hybrid search. |
| 11 | Registry Int | Maps MCP tools and agent skills directly to the code structures that implement them. |
| 12 | Sync | Projects the in-memory NetworkX graph into the persistent LadybugDB Cypher store. |
graph TD
subgraph Ingestion_Pipeline [12-Phase Intelligence Pipeline]
direction LR
Scan --> Parse --> Resolve --> MRO --> Ref --> Comm --> Cent --> Emb --> Sync
end
subgraph Memory_Layer [In-Memory Graph]
NX[(NetworkX MultiDiGraph)]
NX -- "Topological Algorithms" --> NX
end
subgraph Persistence_Layer [Persistent Graph Storage]
LDB[(LadybugDB)]
LDB -- "Cypher & Vectors" --> LDB
end
subgraph Query_Layer [Tool / CLI Interface]
Q_Impact[get_code_impact]
Q_Query[search_knowledge_graph]
end
Ingestion_Pipeline -- "Mutates" --> Memory_Layer
Memory_Layer -- "Syncs To" --> Persistence_Layer
Query_Layer -- "Query" --> Persistence_Layer
subgraph Autonomous_Loop [Autonomous Self-Improvement Loop]
direction TB
Outcome[Outcome Evaluation] --> Critique[Critique / Textual Gradient]
Critique --> Evolution[Prompt/Skill Evolution]
Evolution --> Persistence_Layer
end
The graph engine supports policy-guided retrieval across four orthogonal views:
- Semantic View: Traditional RAG/vector search for conceptual similarity.
- Temporal View: Episodic memory retrieval based on chronological sequences and Ebbinghaus-style temporal decay.
- Causal View: Reasoning traces and "Why" links (e.g.,
ReasoningTrace -> ToolCall -> OutcomeEvaluation). - Entity View: Structural knowledge of People, Organizations, Locations, and Code Symbols.
- Research Knowledge Base: Grounded evidence and sources for domain-specific topics (e.g., Medical Journals).
| adguard-home-agent | Graph |
| agent-utilities | Library | Production-grade Orchestration. Supports Parallel execution, Real-time sub-agent streaming, High-fidelity observability, and Session Resumability |
| agent-webui | Library | Cinematic Graph Activity Visualization. |
| agent-terminal-ui | Library | High-performance Terminal User Interface (TUI) achieving feature parity with Claude Code (Slash commands, Keyboard shortcuts, File mentions). |
agent-utilities implements a multi-stage execution pipeline using pydantic-graph for maximum precision and resilience.
graph TD
subgraph Packages ["Core Ecosystem Packages"]
direction TB
Utility["<b>agent-utilities</b><br/>(Python)"]
Terminal["<b>agent-terminal-ui</b><br/>(Python/Textual)"]
Web["<b>agent-webui</b><br/>(React/Next.js)"]
end
subgraph Internal_Deps ["Internal Interface Layer"]
direction LR
Terminal -- depends on --> Utility
Web -- interfaces with --> Utility
end
subgraph External_Utility ["agent-utilities Dependencies"]
direction TB
PAI[pydantic-ai]
PGraph[pydantic-graph]
PACP[pydantic-acp]
PAISkills[pydantic-ai-skills]
FastMCP[fastmcp]
FastAPI[fastapi]
Logfire[logfire]
end
subgraph External_Terminal ["agent-terminal-ui Dependencies"]
direction TB
Textual[textual]
Rich[rich]
HTTPX_T[httpx]
end
subgraph External_Web ["agent-webui Dependencies"]
direction TB
ASDK["@ai-sdk/react (Vercel)"]
AI["ai (Vercel SDK)"]
React[react]
Tailwind[tailwindcss]
Vite[vite]
end
Utility --> PAI
Utility --> PGraph
Utility --> PACP
Utility --> PAISkills
Utility --> FastMCP
Utility --> FastAPI
Utility --> Logfire
Terminal --> Textual
Terminal --> Rich
Terminal --> HTTPX_T
Web --> ASDK
Web --> AI
Web --> React
Web --> Tailwind
Web --> Vite
C4Container
title Container diagram for Agent Orchestration System
Person(user, "User", "Interacts via Web UI")
Container_Boundary(c1, "Agent Ecosystem") {
Container(webui, "Agent WebUI", "React, Tailwind", "Renders streaming responses and graph activity visualization")
Container(tui, "Agent Terminal UI", "Python, Textual", "Provides a high-performance terminal interface for direct CLI interaction")
Container(gateway, "Agent Gateway (FastAPI)", "Python, Pydantic-AI", "Handles ACP sessions and SSE streams, merges graph events into chat annotations")
Container(orchestrator, "Graph Orchestrator", "Pydantic-Graph", "Routes queries, executes parallel domains, validates results")
Container(subagent, "Domain Sub-Agents", "Pydantic-AI", "Specialized agents for Git, Web, Cloud, etc.")
}
System_Ext(mcp, "MCP Servers", "Contextual tools (GitHub, Slack, etc.)")
System_Ext(otel, "OpenTelemetry Collector", "Tracing and monitoring")
Rel(user, webui, "Uses", "HTTPS/WSS")
Rel(user, tui, "Uses", "Terminal/CLI")
Rel(webui, gateway, "Queries", "ACP /acp (SSE/RPC)")
Rel(tui, gateway, "Queries", "ACP /acp (SSE/RPC)")
Rel(gateway, orchestrator, "Dispatches", "Async Python")
Rel(orchestrator, subagent, "Delegates", "Parallel Execution")
Rel(subagent, mcp, "Invokes Tools", "JSON-RPC (stdio/SSE)")
Rel(orchestrator, otel, "Exports Spans", "OTLP")
agent-utilities provides true pause-and-resume human-in-the-loop for sensitive tool execution and MCP elicitation. When a specialist sub-agent calls a tool flagged with requires_approval=True, the graph suspends at that exact node, streams an approval request to the connected UI, and resumes only after the user responds.
Key Components:
ApprovalManager(approval_manager.py) — asyncio.Future-based registry that pauses coroutines and resumes them when the UI respondsrun_with_approvals()— wraps pydantic-ai's two-callDeferredToolRequests→DeferredToolResultspattern into a single blocking call/api/approveendpoint — REST endpoint that both UIs POST to when the user approves/deniesglobal_elicitation_callback()— MCPctx.elicit()callback using the same pause/resume mechanism
Protocol Support:
| Protocol | Approval Mechanism |
|---|---|
| AG-UI (web + terminal) | Sideband SSE events + POST /api/approve |
| ACP | pydantic-acp's native NativeApprovalBridge (automatic) |
SSE (/stream) |
Same as AG-UI |
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check and server metadata |
/ag-ui |
POST | AG-UI streaming with sideband graph events |
/stream |
POST | SSE stream for graph execution |
/acp |
MOUNT | ACP protocol (sessions, planning, approvals) |
/a2a |
MOUNT | Agent-to-Agent JSON-RPC |
/api/approve |
POST | Resolve pending tool approvals and MCP elicitation |
/chats |
GET | List chat sessions |
/chats/{id} |
GET/DELETE | Get or delete a chat session |
/mcp/config |
GET | Current MCP server configuration |
/mcp/tools |
GET | List all connected MCP tools |
/mcp/reload |
POST | Hot-reload MCP servers and rebuild graph |
agent-utilities implements a rigorous SDD workflow to ensure that complex feature requests are handled with absolute technical fidelity and measurable success criteria.
- Project Constitution (
constitution-generator): Establishes the governing principles, tech stack standards, and quality gates for the entire agent workshop. - Requirement Specification (
spec-generator): Decomposes user intent into a formalSpecincluding user scenarios, functional requirements, and measurable success metrics. - Technical Implementation Plan (
task-planner): Generates a step-by-step architectural approach and aTasksmodel with explicit dependencies and file-path affinity for collision-free parallel execution. - Baseline & Manual Testing: Integrates
first_run_testsandrun_manual_testinto the implementation phase to ensure baseline stability and exploratory verification. - Parallel Execution (
SDDManager): Thedispatcherleverages the SDD analysis engine to identify safe parallel execution batches, fanning out implementation tasks to domain specialists (Python, TS, etc.). - Quality Verification & Documentation: Audits results via
spec-verifier, then generatescode-walkthroughandinteractive-explainartifacts to document the final implementation.
agent-utilities implements a multi-stage execution pipeline with autonomous gap analysis and resilient feedback loops. The system can "fan out" research tasks in parallel before coalescing results. If implementation fails, it can automatically retry locally or loop back to research.
graph TB
Start([User Query + Images]) --> ACPLayer["<b>ACP / AG-UI / SSE </b><br/><i>(Unified Protocol Layer)</i>"]
ACPLayer --> UsageGuard[Usage Guard: Rate Limiting]
UsageGuard -- "Allow" --> router_step[Router: Topology Selection]
UsageGuard -- "Block" --> End([End Result])
router_step -- "Trivial Query" --> End
router_step -- "Full Pipeline" --> dispatcher[Dispatcher: Dynamic Routing]
dispatcher -- "First Entry" --> mem_step[Memory: Context Retrieval]
mem_step --> dispatcher[Dispatcher: Dynamic Routing]
subgraph "Discovery Phase"
direction TB
Researcher["<b>Researcher</b><br/>---<br/><i>u-skill:</i> web-search, web-crawler, web-fetch<br/><i>t-tool:</i> project_search, read_workspace_file"]
Architect["<b>Architect</b><br/>---<br/><i>u-skill:</i> c4-architecture, spec-generator, product-strategy, user-research, brainstorming<br/><i>t-tool:</i> developer_tools"]
KGDiscovery["<b>Unified Discovery</b><br/>---<br/><i>source:</i> Knowledge Graph<br/>"]
res_joiner[Research Joiner: Barrier Sync]
end
dispatcher -- "Research First" --> Researcher
dispatcher -- "Research First" --> Architect
dispatcher -- "Research First" --> KGDiscovery
Researcher --> res_joiner
Architect --> res_joiner
KGDiscovery --> res_joiner
res_joiner -- "Coalesced Context" --> dispatcher
subgraph "Execution Phase"
direction TB
subgraph "Programmers"
direction LR
PyP["<b>Python</b><br/>---<br/><i>u-skill:</i> agent-builder, tdd-methodology, mcp-builder, jupyter-notebook<br/><i>g-skill:</i> python-docs, fastapi-docs, pydantic-ai-docs<br/><i>t-tool:</i> developer_tools"]
TSP["<b>TypeScript</b><br/>---<br/><i>u-skill:</i> react-development, web-artifacts, tdd-methodology, canvas-design<br/><i>g-skill:</i> nodejs-docs, react-docs, nextjs-docs, shadcn-docs<br/><i>t-tool:</i> developer_tools"]
GoP["<b>Go</b><br/>---<br/><i>u-skill:</i> tdd-methodology<br/><i>g-skill:</i> go-docs<br/><i>t-tool:</i> developer_tools"]
RustP["<b>Rust</b><br/>---<br/><i>u-skill:</i> tdd-methodology<br/><i>g-skill:</i> rust-docs<br/><i>t-tool:</i> developer_tools"]
CSP["<b>C Programmer</b><br/>---<br/><i>u-skill:</i> developer-utilities<br/><i>g-skill:</i> c-docs<br/><i>t-tool:</i> developer_tools"]
CPP["<b>C++ Programmer</b><br/>---<br/><i>u-skill:</i> developer-utilities<br/><i>t-tool:</i> developer_tools"]
JSP["<b>JavaScript</b><br/>---<br/><i>u-skill:</i> web-artifacts, canvas-design, developer-utilities<br/><i>g-skill:</i> nodejs-docs, react-docs<br/><i>t-tool:</i> developer_tools"]
end
subgraph "Infrastructure"
direction LR
DevOps["<b>DevOps</b><br/>---<br/><i>u-skill:</i> cloudflare-deploy<br/><i>g-skill:</i> docker-docs, terraform-docs<br/><i>t-tool:</i> developer_tools"]
Cloud["<b>Cloud</b><br/>---<br/><i>u-skill:</i> c4-architecture<br/><i>g-skill:</i> aws-docs, azure-docs, gcp-docs<br/><i>t-tool:</i> developer_tools"]
DBA["<b>Database</b><br/>---<br/><i>u-skill:</i> database-tools<br/><i>g-skill:</i> postgres-docs, mongodb-docs, redis-docs<br/><i>t-tool:</i> developer_tools"]
end
subgraph Specialized ["Specialized & Quality"]
direction LR
Sec["<b>Security</b><br/>---<br/><i>u-skill:</i> security-tools<br/><i>g-skill:</i> linux-docs<br/><i>t-tool:</i> developer_tools"]
QA["<b>QA</b><br/>---<br/><i>u-skill:</i> spec-verifier, tdd-methodology<br/><i>g-skill:</i> testing-library-docs<br/><i>t-tool:</i> developer_tools"]
UIUX["<b>UI/UX</b><br/>---<br/><i>u-skill:</i> theme-factory, brand-guidelines, algorithmic-art<br/><i>g-skill:</i> shadcn-docs, framer-docs<br/><i>t-tool:</i> developer_tools"]
Debug["<b>Debugger</b><br/>---<br/><i>u-skill:</i> developer-utilities, agent-builder<br/><i>t-tool:</i> developer_tools"]
end
subgraph Ecosystem ["Agent Ecosystem"]
direction TB
subgraph Infra_Management ["Infrastructure & DevOps"]
AdGuardHome["<b>AdGuard Home Agent</b><br/>---<br/><i>mcp-tool:</i> adguard-mcp<br/>"]
AnsibleTower["<b>Ansible Tower Agent</b><br/>---<br/><i>mcp-tool:</i> ansible-tower-mcp<br/>"]
ContainerManager["<b>Container Manager Agent</b><br/>---<br/><i>mcp-tool:</i> container-mcp<br/>"]
Microsoft["<b>Microsoft Agent</b><br/>---<br/><i>mcp-tool:</i> microsoft-mcp<br/>"]
Portainer["<b>Portainer Agent</b><br/>---<br/><i>mcp-tool:</i> portainer-mcp<br/>"]
SystemsManager["<b>Systems Manager</b><br/>---<br/><i>mcp-tool:</i> systems-mcp<br/>"]
TunnelManager["<b>Tunnel Manager</b><br/>---<br/><i>mcp-tool:</i> tunnel-mcp<br/>"]
UptimeKuma["<b>Uptime Kuma Agent</b><br/>---<br/><i>mcp-tool:</i> uptime-mcp<br/>"]
RepositoryManager["<b>Repository Manager</b><br/>---<br/><i>mcp-tool:</i> repository-mcp<br/>"]
end
subgraph Media_HomeLab ["Media & Home Lab"]
ArchiveBox["<b>ArchiveBox API</b><br/>---<br/><i>mcp-tool:</i> archivebox-mcp<br/>"]
Arr["<b>Arr (Radarr/Sonarr)</b><br/>---<br/><i>mcp-tool:</i> arr-mcp<br/>"]
AudioTranscriber["<b>Audio Transcriber</b><br/>---<br/><i>mcp-tool:</i> audio-transcriber-mcp<br/>"]
Jellyfin["<b>Jellyfin Agent</b><br/>---<br/><i>mcp-tool:</i> jellyfin-mcp<br/>"]
MediaDownloader["<b>Media Downloader</b><br/>---<br/><i>mcp-tool:</i> media-mcp<br/>"]
Owncast["<b>Owncast Agent</b><br/>---<br/><i>mcp-tool:</i> owncast-mcp<br/>"]
qBittorrent["<b>qBittorrent Agent</b><br/>---<br/><i>mcp-tool:</i> qbittorrent-mcp<br/>"]
end
subgraph Productive_Dev ["Productivity & Development"]
Atlassian["<b>Atlassian Agent</b><br/>---<br/><i>mcp-tool:</i> atlassian-mcp<br/>"]
Genius["<b>Genius Agent</b><br/>---<br/><i>mcp-tool:</i> genius-mcp<br/>"]
GitHub["<b>GitHub Agent</b><br/>---<br/><i>mcp-tool:</i> github-mcp<br/>"]
GitLab["<b>GitLab API</b><br/>---<br/><i>mcp-tool:</i> gitlab-mcp<br/>"]
Langfuse["<b>Langfuse Agent</b><br/>---<br/><i>mcp-tool:</i> langfuse-mcp<br/>"]
LeanIX["<b>LeanIX Agent</b><br/>---<br/><i>mcp-tool:</i> leanix-mcp<br/>"]
Plane["<b>Plane Agent</b><br/>---<br/><i>mcp-tool:</i> plane-mcp<br/>"]
Postiz["<b>Postiz Agent</b><br/>---<br/><i>mcp-tool:</i> postiz-mcp<br/>"]
ServiceNow["<b>ServiceNow API</b><br/>---<br/><i>mcp-tool:</i> servicenow-mcp<br/>"]
StirlingPDF["<b>StirlingPDF Agent</b><br/>---<br/><i>mcp-tool:</i> stirlingpdf-mcp<br/>"]
end
subgraph Data_Lifestyle ["Data & Lifestyle"]
DocumentDB["<b>DocumentDB Agent</b><br/>---<br/><i>mcp-tool:</i> documentdb-mcp<br/>"]
HomeAssistant["<b>Home Assistant Agent</b><br/>---<br/><i>mcp-tool:</i> home-assistant-mcp<br/>"]
Mealie["<b>Mealie Agent</b><br/>---<br/><i>mcp-tool:</i> mealie-mcp<br/>"]
Nextcloud["<b>Nextcloud Agent</b><br/>---<br/><i>mcp-tool:</i> nextcloud-mcp<br/>"]
Searxng["<b>Searxng Agent</b><br/>---<br/><i>mcp-tool:</i> searxng-mcp<br/>"]
Vector["<b>Vector Agent</b><br/>---<br/><i>mcp-tool:</i> vector-mcp<br/>"]
Wger["<b>Wger Agent</b><br/>---<br/><i>mcp-tool:</i> wger-mcp<br/>"]
end
end
end
dispatcher -- "Parallel Dispatch" --> Programmers
dispatcher -- "Parallel Dispatch" --> Infrastructure
dispatcher -- "Parallel Dispatch" --> Specialized
dispatcher -- "Parallel Dispatch" --> Ecosystem
Programmers --> exe_joiner[Execution Joiner: Barrier Sync]
Infrastructure --> exe_joiner
Specialized --> exe_joiner
Ecosystem --> exe_joiner
exe_joiner -- "Implementation Results" --> dispatcher
dispatcher -- "Plan Complete" --> verifier[Verifier: Quality Gate]
verifier -- "Score >= 0.7" --> synthesizer[Synthesizer: Response Composition]
verifier -- "Score 0.4-0.7" --> dispatcher
verifier -- "Score < 0.4" --> planner_step[Planner: Re-plan with Feedback]
planner_step --> dispatcher
synthesizer -- "Final Response" --> End
dispatcher -- "Terminal Failure" --> End
%% Styling
style Researcher fill:#e1d5e7,stroke:#9673a6,stroke-width:2px
style Architect fill:#e1d5e7,stroke:#9673a6,stroke-width:2px
style A2ADiscovery fill:#e1d5e7,stroke:#9673a6,stroke-width:2px
style MCPDiscovery fill:#e1d5e7,stroke:#9673a6,stroke-width:2px
style Programmers fill:#dae8fe,stroke:#6c8ebf,stroke-width:2px
style PyP fill:#dae8fe,stroke:#6c8ebf,stroke-width:1px
style TSP fill:#dae8fe,stroke:#6c8ebf,stroke-width:1px
style GoP fill:#dae8fe,stroke:#6c8ebf,stroke-width:1px
style RustP fill:#dae8fe,stroke:#6c8ebf,stroke-width:1px
style CSP fill:#dae8fe,stroke:#6c8ebf,stroke-width:1px
style CPP fill:#dae8fe,stroke:#6c8ebf,stroke-width:1px
style JSP fill:#dae8fe,stroke:#6c8ebf,stroke-width:1px
style Infrastructure fill:#fad9b8,stroke:#d6b656,stroke-width:2px
style DevOps fill:#fad9b8,stroke:#d6b656,stroke-width:1px
style Cloud fill:#fad9b8,stroke:#d6b656,stroke-width:1px
style DBA fill:#fad9b8,stroke:#d6b656,stroke-width:1px
style Specialized fill:#e0d3f5,stroke:#82b366,stroke-width:2px
style Sec fill:#e0d3f5,stroke:#82b366,stroke-width:1px
style QA fill:#e0d3f5,stroke:#82b366,stroke-width:1px
style UIUX fill:#e0d3f5,stroke:#82b366,stroke-width:1px
style Debug fill:#e0d3f5,stroke:#82b366,stroke-width:1px
style Ecosystem fill:#f5f1d3,stroke:#d6b656,stroke-width:2px
style Infra_Management fill:#fef9e7,stroke:#d6b656,stroke-width:1px
style Media_HomeLab fill:#fef9e7,stroke:#d6b656,stroke-width:1px
style Productive_Dev fill:#fef9e7,stroke:#d6b656,stroke-width:1px
style Data_Lifestyle fill:#fef9e7,stroke:#d6b656,stroke-width:1px
style verifier fill:#fff2cc,stroke:#d6b656,stroke-width:2px
style synthesizer fill: #d5e8d4,stroke:#82b366,stroke-width:2px
style planner_step fill: #dae8fe,stroke:#6c8ebf,stroke-width:2px
style End fill:#f8cecc,stroke:#b85450,stroke-width:2px
style res_joiner fill:#f5f5f5,stroke:#666,stroke-dasharray: 5 5
style exe_joiner fill:#f5f5f5,stroke:#666,stroke-dasharray: 5 5
style dispatcher fill:#f5f5f5,stroke:#666,stroke-width:2px
style Start color:#000000,fill:#38B6FF
style subGraph0 color:#000000,fill:#f5ebd3
style subGraph5 color:#000000,fill:#f5f1d3
style dispatcher fill:#d5e8d4,stroke:#666,stroke-width:2px
style Ecosystem fill:#f5d0ef,stroke:#d6b656,stroke-width:2px
style LocalAgents fill:#f5d0ef,stroke:#d6b656,stroke-width:1px
style RemotePeers fill:#f5d0ef,stroke:#d6b656,stroke-width:1px
style ACPLayer color:#000000,fill:#38B6FF,stroke-width:2px
style Start color:#000000,fill:#38B6FF
style subGraph0 color:#000000,fill:#f5ebd3
style subGraph5 color:#000000,fill:#f5f1d3
style dispatcher fill:#d5e8d4,stroke:#666,stroke-width:2px
style Ecosystem fill:#f5d0ef,stroke:#d6b656,stroke-width:2px
style LocalAgents fill:#f5d0ef,stroke:#d6b656,stroke-width:1px
style RemotePeers fill:#f5d0ef,stroke:#d6b656,stroke-width:1px
This diagram illustrates how MCP servers are discovered, specialized, and persisted in the graph.
graph TD
subgraph Registry_Phase ["1. Registry Synchronization (Deployment)"]
Config["<b>mcp_config.json</b><br/><i>(Source of Truth)</i>"] --> Manager["<b>mcp_agent_manager.py</b><br/><i>sync_mcp_agents()</i>"]
KG_Registry["<b>Knowledge Graph</b><br/><i>(Unified Specialist Registry)</i>"] -.->|Read Hash| Manager
Manager -->|Config Hash Match?| Branch{Decision}
Branch -- "Yes (Cache Hit)" --> Skip["Skip Tool Extraction"]
Branch -- "No (Cache Miss)" --> Parallel["<b>Parallel Dispatch</b><br/>(Semaphore 30)"]
Parallel -->|Deploy STDIO| Servers["<b>N MCP Servers</b><br/>(Git, DB, Cloud, etc.)"]
Servers -->|JSON-RPC list_tools| Parallel
Parallel -->|Metadata| KG_Registry
end
subgraph Initialization_Phase ["2. Graph Initialization (Runtime)"]
Config -->|Per-server resilient load| Loader["<b>builder.py</b><br/><i>MCPServerStdio per server</i><br/>⚠️ Skips missing env-vars<br/>❌ Logs failed servers clearly"]
KG_Registry --> Builder["<b>builder.py</b><br/><i>initialize_graph_from_workspace()</i>"]
Loader -->|mcp_toolsets| 'graph'
Builder -->|Register Nodes| Specialists["<b>Specialist Superstates</b><br/>(Python, TS, GitLab, etc.)"]
Specialists -->|Compile| 'graph'["<b>Pydantic Graph Agent</b>"]
end
subgraph Operation_Phase ["3. Persistent Operation (Execution)"]
'graph' --> Lifespan["<b>runner.py</b><br/><i>run_graph() AsyncExitStack</i>"]
Lifespan -->|"Sequential connect<br/>per-server error reporting"| ConnPool["<b>Active Connection Pool</b><br/>(Warm Toolsets)<br/>❌ failing servers skipped & logged"]
ConnPool -->|Zero-Latency Call| Servers
end
%% Styling
style Config fill:#dae8fe,stroke:#6c8ebf,stroke-width:2px
style KG_Registry fill:#dae8fe,stroke:#6c8ebf,stroke-width:2px
style Manager fill:#e1d5e7,stroke:#9673a6,stroke-width:2px
style Parallel fill:#f8cecc,stroke:#b85450,stroke-width:2px
style ConnPool fill:#d5e8d4,stroke:#82b366,stroke-width:2px
style 'graph' fill:#fff2cc,stroke:#d6b656,stroke-width:2px
style Loader fill:#d5e8d4,stroke:#82b366,stroke-width:2px
# Core utilities only
pip install agent-utilities
# With full agent support (recommended)
pip install agent-utilities[agent]
# With MCP server support
pip install agent-utilities[mcp]
# With embedding/vector support
pip install agent-utilities[embeddings]from agent_utilities import create_agent
# Create a simple agent with workspace tools
agent = create_agent(name="MyAgent")
# Create a powerful Graph Agent with Universal Skills
# This automatically discovers domain specialists from the Knowledge Graph
agent = create_agent(
name="ProAgent",
skill_types=["universal", "graphs"]
)
# Environment variable support (standard in .env)
# SKILL_TYPES=universal,graphsEvery agent server automatically hosts an interactive Swagger UI for its APIs.
- URL:
http://localhost:8000/docs - Spec:
http://localhost:8000/openapi.json
This interface allows you to test the /health, /acp, and /mcp endpoints directly from your browser.
- ✅ Canonical agent lifecycle interfaces (AgentSpec, AgentInstance, AgentSession, AgentResult)
- ✅ Reference AGENTS.md for AI contributors
- ✅ Graph orchestration with Router → Planner → Dispatcher pipeline
- ✅ Unified Intelligence Graph (12-phase pipeline)
- ✅ MCP tool distribution and specialist discovery
- ✅ ACP, A2A, and AG-UI protocol adapters
- ✅ Knowledge Base layer with LLM-maintained wiki
- ✅ Spec-Driven Development (SDD) lifecycle
- ✅ JSON-as-Code Structured Prompting (Pydantic-native)
- 🔄 Single end-to-end example agent (in progress)
- Enhanced MCP capability registry with machine-readable tool descriptions
- Shared memory abstraction layer (ShortTermMemory, LongTermMemory, SharedTeamMemory)
- Pluggable backends for memory (Chroma, Qdrant, PGVector)
- Multi-agent coordination helpers
- Evaluation & tracing hooks
- Policy / guardrail integration
- Agent teams with P2P messaging
- Autonomous self-improvement loops (Agent Lightning)
- Advanced MAGMA orthogonal reasoning views
- Cross-repository symbol mapping
- Long-term agent memory consolidation
- Automated graph maintenance and pruning