Skip to main content

A2A Adapter

PyPI version License: Apache-2.0 Python 3.11+

Make any AI agent an A2A Protocol server: a few lines of Python for your own agent, or one command for a local agent like Claude Code or Pi.

a2a-adapter wraps agent CLIs, local agents, workflow engines, and Python agent frameworks behind the A2A (Agent-to-Agent) Protocol. It handles AgentCard generation, JSON-RPC, task lifecycle, and streaming through the official A2A SDK, so your adapter only needs to invoke the underlying agent.

Works with Claude Code, Codex, Pi, OpenClaw, n8n, LangGraph, LangChain, CrewAI, Ollama, Hermes Agent, and custom Python functions.

Two Ways to Use It

Python SDK CLI
Use it when You're writing an agent (or wrapping a framework) and want it to speak A2A You want to put an existing local agent such as Claude Code or Pi on A2A, without writing code
Install pip install a2a-adapter in your project's virtualenv uv tool install a2a-adapter (or pipx install a2a-adapter)
Run serve_agent(adapter, port=9000) in your code a2a-adapter claude --port 9010

Both need Python 3.11+ and serve the same A2A server, with an auto-generated Agent Card at /.well-known/agent-card.json.

1. Use It as an SDK

Add A2A support to your own agent code. Install a2a-adapter into your project's virtual environment, with extras for the framework you use:

pip install a2a-adapter              # core
pip install "a2a-adapter[langchain]" # or [crewai], [langgraph], [all]

Wrap your agent in an adapter and serve it:

from a2a_adapter import CallableAdapter, serve_agent

async def my_agent(inputs: dict) -> str:
    return f"Echo: {inputs['message']}"

adapter = CallableAdapter(func=my_agent, name="Echo Agent")
serve_agent(adapter, port=9000)

Your agent is now an A2A server at http://localhost:9000, with its Agent Card at http://localhost:9000/.well-known/agent-card.json. To mount it in an existing ASGI app instead, use to_a2a(adapter).

Supported SDK Adapters

Framework or agent Adapter Streaming Example
Claude Code ClaudeCodeAdapter Yes claude_code_agent.py
Codex CodexAdapter No codex_agent.py
Pi PiAdapter Yes pi_agent.py
OpenClaw OpenClawAdapter No openclaw_agent.py
n8n N8nAdapter No n8n_agent.py
LangGraph LangGraphAdapter Yes langgraph_server.py
LangChain LangChainAdapter Yes langchain_agent.py
CrewAI CrewAIAdapter No crewai_agent.py
Ollama OllamaAdapter Yes ollama_agent.py
Hermes Agent HermesAdapter Yes hermes_agent.py
Python callable CallableAdapter Optional quickstart.py
Custom class BaseA2AAdapter Optional custom_adapter.py

2. Use It as a CLI

Start a classic local agent (Claude Code, Codex, Pi, or OpenClaw) as an A2A server with one command.

Install the CLI as an isolated tool, so the a2a-adapter command lands on your PATH:

uv tool install a2a-adapter    # or: pipx install a2a-adapter

Upgrade later with uv tool upgrade a2a-adapter. Avoid a system-wide pip install: macOS's built-in pip runs Python 3.9, which is too old, and Homebrew and many Linux distributions block it (PEP 668).

Make sure the agent works on its own. a2a-adapter wraps the agent you already have; it doesn't install it. For example, install Claude Code and run claude once to sign in. If the agent isn't on PATH, pass --executable /path/to/agent.

Start it from the project directory the agent should work in:

a2a-adapter claude --port 9010
a2a-adapter pi --port 9012
a2a-adapter codex --port 9011
a2a-adapter openclaw --port 9008

Options before -- configure the A2A server. Options after -- are passed to the underlying agent CLI:

a2a-adapter claude --port 9010 -- --model <model>
a2a-adapter pi --port 9012 -- --model <model> --thinking high
a2a-adapter codex --port 9011 -- --model <model> --sandbox workspace-write
a2a-adapter openclaw --port 9008 --agent-id main --thinking high
Server option Default Purpose
--cwd current directory Directory the agent works in
--host / --port 127.0.0.1 / 9000 Bind address; use --host 0.0.0.0 to accept remote connections
--name <Agent> (<folder>), e.g. Claude Code (my-app) Agent Card display name
--description <Agent> agent working in <folder> Agent Card description
--timeout 600 Per-request timeout in seconds
--executable claude, codex, pi, openclaw Path to the agent executable

Pi source commands can be selected without a shell wrapper:

A2A_PI_COMMAND='npx tsx /path/to/pi/packages/coding-agent/src/cli.ts' \
  a2a-adapter pi --port 9012

Run a2a-adapter -help for the supported agents, or a2a-adapter <agent> -help for agent-specific usage. The adapter owns protocol and session flags such as Pi's --mode rpc and Codex's --json; those flags cannot be overridden after --.

Configuring the Agent

The adapter runs the agent non-interactively (for example claude -p or codex exec), so there's no agent UI to change settings in. You configure it the same way you would without the adapter, in two ways:

  • The agent's own config files. The adapter runs the agent as you, in the --cwd folder, so it reads your usual setup: ~/.claude/settings.json, CLAUDE.md, and MCP servers for Claude Code; ~/.codex/config.toml and AGENTS.md for Codex; Pi's settings and installed extensions. Claude Code, Codex, and OpenClaw start a fresh process for each request, so changes apply to the next request. Pi keeps one process running, so restart the server after changing Pi's config.
  • Native CLI flags after --. Use these for settings that should apply only to this server, such as a different model or sandbox mode.

Documentation

Star History

Star History Chart

License

Apache-2.0 - see LICENSE.

Built by HYBRO AI. Powered by the A2A Protocol.

Metadata

Release files for a2a-adapter 0.2.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for a2a-adapter 0.2.14
File Size Uploaded
a2a_adapter-0.2.14.tar.gz 96.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for a2a-adapter 0.2.14
File Interpreter ABI Platform
a2a_adapter-0.2.14-py3-none-any.whl Python 3 none any Details

Total release size: 199.6 kB

Release files / a2a_adapter-0.2.14.tar.gz

Download URL a2a_adapter-0.2.14.tar.gz
Size 96.4 kB
Tags Source
SHA-256 checksum
How to use checksums
112584bc97cd9b14f8aed2a556b94831cdfe9a9d39a78058f54b8d4d38cbf9f7
BLAKE2b-256 checksum
How to use checksums
7552ceb5c6e07bee38bc7791abce449c577ea43489b4ebfb7e4c7b330e2846b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / a2a_adapter-0.2.14-py3-none-any.whl

Download URL a2a_adapter-0.2.14-py3-none-any.whl
Size 103.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4857ed4432e8f20a5376e8bcf4da8e088b3d94dbeb5dcdaf4002642ceb1fcc8
BLAKE2b-256 checksum
How to use checksums
1ac32750e13425729c1594b96d201129e6ceb24f5e8e9f104cee9c8d66cafd4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.14 This release

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page