Skip to content

Home

Connect all the agents!

Key Features

🔌 ACP Integration

First-class support for the Agent Client Protocol (ACP):

  • Integrate directly into IDEs like Zed, VS Code, and others
  • Wrap external agents (Claude Code, Goose, Codex, fast-agent) as nodes
  • Unified node abstraction - ACP agents work like native agents
  • Compose ACP agents into teams with native agents

📝 Easy Agent Configuration

AgentPool excels at static YAML-based agent configuration:

  • Define agents with extreme detail in pure YAML (Pydantic-backed)
  • Expansive JSON schema for IDE autocompletion and validation, backed by an extremely detailed schema.
  • Multi-Agent setups with native as well as remote (ACP / AGUI) agents

🧩 Unified Node Architecture

Everything is a MessageNode - enabling seamless composition:

  • Native agents with a large set of default tools
  • ACP agents
  • AG-UI agents
  • Teams (parallel and sequential)
  • Human-in-the-loop-agents
  • All nodes share the same interface

Dependencies

Name Summary Marker
tree-sitter-c C grammar for tree-sitter extra == "coding"
logfire The best Python observability tool! 🪵🔥
tree-sitter-python Python grammar for tree-sitter extra == "coding"
typeagent Incremental message indexing and querying pipelines using Structured RAG extra == "memory"
grep-ast A tool to grep through the AST of a source file extra == "coding"
autoevals Universal library for evaluating AI models extra == "braintrust"
tree-sitter-yaml YAML grammar for tree-sitter extra == "coding"
promptantic Generate pydantic models using prompts
httpx The next generation HTTP client.
python-dotenv Read key-value pairs from a .env file and set them as environment variables
searchly Search tools for agents
rich Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal
SQLAlchemy Database Abstraction Library
fastmcp The fast, Pythonic way to build MCP servers and clients.
tree-sitter-go Go grammar for tree-sitter extra == "coding"
llmling-models Pydantic-AI models for AgentPool
pydantic Data validation using Python type hints
markitdown Utility tool for converting various files to Markdown python_full_version < "3.14" and extra == "markitdown"
fasta2a Convert an AI Agent into a A2A server! ✨ extra == "a2a"
tokonomics Calcuate costs for LLM Usage based on token count
keyring Store and access your passwords safely. extra == "oauth"
tiktoken tiktoken is a fast BPE tokeniser for use with OpenAI's models extra == "tiktoken"
slashed Slash commands and autocompletions
mcp Model Context Protocol SDK
tree-sitter-json JSON grammar for tree-sitter extra == "coding"
mcpx-py An mcp.run client for Python extra == "mcp-run"
pydantic-ai-slim Agent Framework / shim to use Pydantic with LLMs, slim package
uvicorn The lightning-fast ASGI server. extra == "server"
clipman Python3 module for working with clipboard. Created because pyperclip is discontinued. extra == "clipboard"
tree-sitter-cpp C++ grammar for tree-sitter extra == "coding"
fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production extra == "server"
promptlayer PromptLayer is a platform for prompt engineering and tracks your LLM requests. extra == "promptlayer"
ast-grep-py Structural Search and Rewrite code at large scale using precise AST pattern. extra == "coding"
docler Abstractions & Tools for OCR / document processing
exxec Execution environments
evented Event emitters.
starlette The little ASGI library that shines. extra == "a2a"
anyenv Compatibility layer for some basic operations to allow painless operation in PyOdide and Python pre-releases
psygnal Fast python callback/event system modeled after Qt Signals
apprise Push Notifications that work with just about every platform! extra == "notifications"
anyvoice Common interface for streaming tts providers extra == "tts"
braintrust SDK for integrating Braintrust extra == "braintrust"
tree-sitter-javascript JavaScript grammar for tree-sitter extra == "coding"
schemez Pydantic shim for config stuff
jinjarope Jinja2 utilities, loaders & fsspec integration.
claude-agent-sdk Python SDK for Claude Code extra == "claude"
docstring_parser Parse Python docstrings in reST, Google and Numpydoc format
sqlmodel SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness.
tree-sitter-typescript TypeScript and TSX grammars for tree-sitter extra == "coding"
Jinja2 A very fast and expressive template engine.
langfuse A client library for accessing langfuse extra == "langfuse"
fsspec File-system specification
structlog Structured Logging for Python
epregistry A registry for entry points (cached and generically typed)
pydocket A distributed background task system for Python functions
platformdirs A small Python package for determining appropriate platform-specific dirs, e.g. a user data dir.
upathtools UPath utilities
tree-sitter Python bindings to the Tree-sitter parsing library extra == "coding"
ag-ui-protocol extra == "ag-ui"
composio SDK for integrating Composio with your applications. extra == "composio"
yamling Enhanced YAML loading and dumping.
rustworkx A High-Performance Graph Library for Python extra == "coding"
typer Typer, build great CLIs. Easy to code. Based on Python type hints.
tree-sitter-rust Rust grammar for tree-sitter extra == "coding"
textual Modern Text User Interface framework extra == "textual"
toprompt Convert python objects to LLM-friendly descriptions

License

MIT License - see LICENSE for details.

Quick Start

Basic Agent Configuration

# agents.yml
agents:
  assistant:
    name: "Technical Assistant"
    model: openai:gpt-4
    system_prompt: You are a helpful technical assistant.
    toolsets:
      - type: file_access

Python Usage

from agentpool import AgentPool

async def main():
    async with AgentPool("agents.yml") as pool:
        agent = pool.get_agent("assistant")
        response = await agent.run("What is Python?")
        print(response.data)

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())