{"id":34704934,"url":"https://github.com/phil65/agentpool","last_synced_at":"2026-03-05T21:20:24.349Z","repository":{"id":266673076,"uuid":"899003856","full_name":"phil65/agentpool","owner":"phil65","description":"A unified agent orchestration hub that lets you configure and manage multiple AI agents (native, ACP, AGUI, Claude Code) via YAML, and exposes them through standardized protocols (ACP/OpenCode Server).","archived":false,"fork":false,"pushed_at":"2026-02-12T18:02:43.000Z","size":21420,"stargazers_count":83,"open_issues_count":6,"forks_count":17,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-02-12T19:12:03.032Z","etag":null,"topics":["acp","agent","ai","litellm","llm","llm-agent","mcp","pydantic","pydantic-ai","yaml"],"latest_commit_sha":null,"homepage":"https://phil65.github.io/agentpool/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phil65.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"phil65","custom":["https://www.paypal.me/phil65"]}},"created_at":"2024-12-05T12:50:17.000Z","updated_at":"2026-02-12T18:03:42.000Z","dependencies_parsed_at":"2026-02-03T23:00:45.426Z","dependency_job_id":null,"html_url":"https://github.com/phil65/agentpool","commit_stats":null,"previous_names":["phil65/llmling-agent"],"tags_count":258,"template":false,"template_full_name":null,"purl":"pkg:github/phil65/agentpool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil65%2Fagentpool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil65%2Fagentpool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil65%2Fagentpool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil65%2Fagentpool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phil65","download_url":"https://codeload.github.com/phil65/agentpool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil65%2Fagentpool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29500824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T03:57:51.541Z","status":"ssl_error","status_checked_at":"2026-02-16T03:55:59.854Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acp","agent","ai","litellm","llm","llm-agent","mcp","pydantic","pydantic-ai","yaml"],"created_at":"2025-12-24T23:16:13.575Z","updated_at":"2026-02-16T05:07:27.918Z","avatar_url":"https://github.com/phil65.png","language":"Python","funding_links":["https://github.com/sponsors/phil65","https://www.paypal.me/phil65"],"categories":["acp"],"sub_categories":[],"readme":"# AgentPool\n\n[![PyPI License](https://img.shields.io/pypi/l/agentpool.svg)](https://pypi.org/project/agentpool/)\n[![Package status](https://img.shields.io/pypi/status/agentpool.svg)](https://pypi.org/project/agentpool/)\n[![Monthly downloads](https://img.shields.io/pypi/dm/agentpool.svg)](https://pypi.org/project/agentpool/)\n[![Python version](https://img.shields.io/pypi/pyversions/agentpool.svg)](https://pypi.org/project/agentpool/)\n[![Github Stars](https://img.shields.io/github/stars/phil65/agentpool)](https://github.com/phil65/agentpool/stars)\n\n**A unified agent orchestration hub that lets you configure and manage heterogeneous AI agents via YAML and expose them through standardized protocols.**\n\n[Documentation](https://phil65.github.io/agentpool/)\n\n## The Problem\n\nYou want to use multiple AI agents together - Claude Code for refactoring, Codex for code editing with advanced reasoning, a custom analysis agent, maybe Goose for specific tasks. But each has different APIs, protocols, and integration patterns. Coordinating them means writing glue code for each combination.\n\n## The Solution\n\nAgentPool acts as a protocol bridge. Define all your agents in one YAML file - whether they're native (PydanticAI-based), direct integrations (Claude Code, Codex), external ACP agents (Goose), or AG-UI agents. Then expose them all through ACP or AG-UI protocols, letting them cooperate, delegate, and communicate through a unified interface. \n\n```mermaid\nflowchart TB\n    subgraph AgentPool\n        subgraph config[YAML Configuration]\n            native[Native Agents\u003cbr/\u003ePydanticAI]\n            direct[Direct Integrations\u003cbr/\u003eClaude Code, Codex]\n            acp_agents[ACP Agents\u003cbr/\u003eGoose, etc.]\n            agui_agents[AG-UI Agents]\n            workflows[Teams \u0026 Workflows]\n        end\n        \n        subgraph interface[Unified Agent Interface]\n            delegation[Inter-agent delegation]\n            routing[Message routing]\n            context[Shared context]\n        end\n        \n        config --\u003e interface\n    end\n    \n    interface --\u003e acp_server[ACP Server]\n    interface --\u003e opencode_server[OpenCode Server]\n    interface --\u003e agui_server[AG-UI Server]\n    \n    acp_server --\u003e clients1[Zed, Toad, ACP Clients]\n    opencode_server --\u003e clients2[OpenCode TUI/Desktop]\n    agui_server --\u003e clients3[AG-UI Clients]\n```\n\n## Quick Start\n\n```bash\nuv tool install agentpool\n\n```\n\n### Minimal Configuration\n\n```yaml\n# agents.yml\nagents:\n  assistant:\n    type: native\n    model: openai:gpt-4o\n    system_prompt: \"You are a helpful assistant.\"\n```\n\n```bash\n# Run via CLI\nagentpool run assistant \"Hello!\"\n\n# Or start as ACP server (for Zed, Toad, etc.)\nagentpool serve-acp agents.yml\n```\n\n### Integrating External Agents\n\nThe real power comes from mixing agent types:\n\n```yaml\nagents:\n  # Native PydanticAI-based agent\n  coordinator:\n    type: native\n    model: openai:gpt-4o\n    tools:\n      - type: subagent  # Can delegate to all other agents\n    system_prompt: \"Coordinate tasks between available agents.\"\n\n  # Claude Code agent (direct integration)\n  claude:\n    type: claude_code\n    description: \"Claude Code for complex refactoring\"\n\n  # Codex agent (direct integration)\n  codex:\n    type: codex\n    model: gpt-5.1-codex-max\n    reasoning_effort: medium\n    description: \"Codex for code editing with advanced reasoning\"\n\n  # ACP protocol agents\n  goose:\n    type: acp\n    provider: goose\n    description: \"Goose for file operations\"\n\n  # AG-UI protocol agent\n  agui_agent:\n    type: agui\n    url: \"http://localhost:8000\"\n    description: \"Custom AG-UI agent\"\n```\n\nNow `coordinator` can delegate work to any of these agents, and all are accessible through the same interface.\n\n## Key Features\n\n### Multi-Agent Coordination\n\nAgents can form teams (parallel) or chains (sequential):\n\n```yaml\nteams:\n  review_pipeline:\n    mode: sequential\n    members: [analyzer, reviewer, formatter]\n\n  parallel_coders:\n    mode: parallel\n    members: [claude, goose]\n```\n\n```python\nasync with AgentPool(\"agents.yml\") as pool:\n    # Parallel execution\n    team = pool.get_agent(\"analyzer\") \u0026 pool.get_agent(\"reviewer\")\n    results = await team.run(\"Review this code\")\n\n    # Sequential pipeline\n    chain = analyzer | reviewer | formatter\n    result = await chain.run(\"Process this\")\n```\n\n### Rich YAML Configuration\n\nEverything is configurable - models, tools, connections, triggers, storage:\n\n```yaml\nagents:\n  analyzer:\n    type: native\n    model:\n      type: fallback\n      models: [openai:gpt-4o, anthropic:claude-sonnet-4-0]\n    tools:\n      - type: subagent\n      - type: resource_access\n    mcp_servers:\n      - \"uvx mcp-server-filesystem\"\n    knowledge:\n      paths: [\"docs/**/*.md\"]\n    connections:\n      - type: node\n        name: reporter\n        filter_condition:\n          type: word_match\n          words: [error, warning]\n```\n\n### Server Protocols\n\nAgentPool can expose your agents through multiple server protocols:\n\n| Server | Command | Use Case |\n|--------|---------|----------|\n| **ACP** | `agentpool serve-acp` | IDE integration (Zed, Toad) - bidirectional communication with tool confirmations |\n| **OpenCode** | `agentpool serve-opencode` | OpenCode TUI/Desktop - supports remote filesystems via fsspec |\n| **MCP** | `agentpool serve-mcp` | Expose tools to other agents |\n| AG-UI | `agentpool serve-agui` | AG-UI compatible frontends |\n| OpenAI API | `agentpool serve-api` | Drop-in OpenAI API replacement |\n\nThe **ACP server** is ideal for IDE integration - it provides real-time tool confirmations and session management. The **OpenCode server** enables the OpenCode TUI to control AgentPool agents, including agents operating on remote environments (Docker, SSH, cloud sandboxes).\n\n### Additional Capabilities\n\n- **Structured Output**: Define response schemas inline or import Python types\n- **Storage \u0026 Analytics**: Track all interactions with configurable providers\n- **File Abstraction**: UPath-backed operations work on local and remote sources\n- **Triggers**: React to file changes, webhooks, or custom events\n- **Streaming TTS**: Voice output support for all agents\n\n## Usage Patterns\n\n### CLI\n\n```bash\nagentpool run agent_name \"prompt\"           # Single run\nagentpool serve-acp config.yml              # ACP server for IDEs\nagentpool serve-opencode config.yml         # OpenCode TUI server\nagentpool serve-mcp config.yml              # MCP server\nagentpool watch --config agents.yml         # React to triggers\nagentpool history stats --group-by model    # View analytics\n```\n\n### Programmatic\n\n```python\nfrom agentpool import AgentPool\n\nasync with AgentPool(\"agents.yml\") as pool:\n    agent = pool.get_agent(\"assistant\")\n\n    # Simple run\n    result = await agent.run(\"Hello\")\n\n    # Streaming\n    async for event in agent.run_stream(\"Tell me a story\"):\n        print(event)\n\n    # Multi-modal\n    result = await agent.run(\"Describe this\", Path(\"image.jpg\"))\n```\n\n## Documentation\n\nFor complete documentation including advanced configuration, connection patterns, and API reference, visit [phil65.github.io/agentpool](https://phil65.github.io/agentpool/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphil65%2Fagentpool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphil65%2Fagentpool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphil65%2Fagentpool/lists"}