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

License

MIT License - see LICENSE for details.

Quick Start

Basic Agent Configuration

# agents.yml
agents:
  assistant:
    display_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)