A2A CLI
Command-line client for the A2A protocol: reads remote agent cards, sends messages and follows tasks from the terminal.
- 184 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- The CLI connects over the network to the remote agents you name and sends them message text and files.
- Messages go to a third-party agent that decides how to handle them.
Install
- Works in
Manual install
brew tap a2aproject/a2a-cli https://github.com/a2aproject/a2a-cli && brew install a2aTwo Homebrew commands install the `a2a` binary for macOS and Linux.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The CLI connects over the network to the remote agents you name and sends them message text and files.
- Messages go to a third-party agent that decides how to handle them.
This is third-party code. Review the repository files before installing.
What it does
The `a2a` command is the official Agent2Agent protocol client from the A2A Project team. It fetches a remote agent card with its capabilities, sends a message and returns the result. Replies arrive as an event stream or asynchronously, in which case the task is polled by ID until it completes. Output is JSON and exit codes are predictable, so the CLI fits scripts and pipelines. JSON-RPC, REST and gRPC transports are built in; extra ones are added as an `a2a-transport-<name>` binary on `PATH` with no rebuild. The `--exec` mode turns an ordinary script into an A2A server. The repository also ships an `a2a-cli` skill for Claude Code, Cursor and Codex that teaches an agent to delegate work to remote A2A agents through this command.
Who it is for. Developers of multi-agent systems on A2A who test remote agents by hand and hand tasks to them from a coding agent.
Good fit when
- An agent on your network is published over A2A and you want to inspect its card of skills quickly.
- A coding agent has to hand part of the work to a remote agent and wait for the result.
- A shell or Python script should be exposed as an A2A server without writing server code.
- A CI pipeline checks an A2A agent response through JSON output and the exit code.
Not a fit when
- You need a client for protocols other than A2A, such as MCP.
- You need a library to embed a client in a Python or JavaScript application.
- You have no remote A2A agent to talk to.
Example request
Fetch the agent card at https://agent.example.com and send it a message asking what it can do.Limitations
The CLI is only the client side: without an A2A agent to reach there is little to do beyond `--exec` mode. The skill and plugin call the `a2a` binary, so install the CLI first. Authentication to a remote agent is your responsibility and is configured through flags, environment variables or `.env` files. The protocol version is v1.0, and what a remote agent can do depends on its implementation. The `install.sh` script puts the binary into `/usr/local/bin`; set `A2A_INSTALL_DIR` for another directory.
How to disable. Remove the skill with your skills manager or the plugin through `/plugin`, and drop the `a2a` binary with `brew uninstall a2a` or by deleting it from `PATH`.
FAQ
How do I send a message to an A2A agent?
Run `a2a send -a https://agent.example.com "text"`. The `--stream` flag switches on an event stream and `--async` submits the task without waiting.
How do I wait for an async task?
Use `a2a task get -a <address> <task id> --wait --timeout 60s`; it polls the task until it finishes or times out.
How do I turn a script into an A2A server?
Start the CLI with the `--exec` flag and the script path. The first lesson in the `examples` folder walks through it.
Which transports are supported?
JSON-RPC, REST and gRPC are built in. Others are added as a separate `a2a-transport-<name>` binary on `PATH`.
Do I need the skill if the CLI is installed?
Not for manual use. The skill is for a coding agent: it tells the agent when to delegate a task and which `a2a` command to run.
Discussion
No questions or reviews yet.
Related
CLI toolsOne command turns a local Claude Code, Codex or Pi agent into an A2A protocol server, and a Python SDK does the same for code.
A skill for messaging between Claude Code, Codex, Gemini CLI and other CLI agents through a shared local SQLite database, written in bash
A CLI that keeps coding agents' shared context in one place: instructions, skills, MCPs, subagents and durable memory across projects and machines
CLI Agent Orchestrator
CLI Agent Orchestrator (CAO)
A CLI that coordinates several coding agents: a supervisor delegates tasks to specialists in parallel or in sequence across isolated tmux sessions
Alook gives local Claude Code, Codex, Cursor and OpenCode agents a handle and an inbox so a team can talk to them in shared rooms like to people
A local dashboard for running many agents across machines: memory, code graph and agent-to-agent messaging
README in short
The repository merges scattered A2A clients into one standardized CLI written in Go. It grew out of the A2A Go SDK client and is described by a specification of command taxonomy and output contracts. A set of hands-on lessons runs from a first server to the task lifecycle.