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

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.
    tools:
      - 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 anyio
    anyio.run(main)