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

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)