The A2A CLI (a2a) is the official command-line client for A2A (Agent2Agent) agents, maintained by the A2A Project Team.
A2A is a bidirectional protocol: any A2A agent can act as a client to another and hand off a task. But an agent without an A2A layer can't easily send messages or receive updates. The A2A CLI fills that gap.
With it, you — or any model, agent, or coding harness that can call tools — can discover A2A agent's capabilities and send it work.
Three ways to get started:
- Empower AI coding assistants — give your coding agent the
a2atool to offload work to remote A2A agents. - Interact instantly — fetch agent cards, send messages, and stream real-time updates from the terminal.
- Automate workflows — seamlessly integrate A2A agents with non A2A Agents and build pipelines by taking advanteage of cli's protocol-native JSON outputs and predictable exit codes.
Built on A2A Protocol v1.0.
Homebrew (macOS / Linux)
brew tap a2aproject/a2a-cli https://github.com/a2aproject/a2a-cli
brew install a2aWinGet (Windows)
winget install a2aproject.a2acliFrom Source (Linux / Windows / macOS)
go install github.com/a2aproject/a2a-cli@latest
# go install names the binary `a2a-cli`; rename it to `a2a`
mv "$(command -v a2a-cli)" "$(dirname "$(command -v a2a-cli)")/a2a"Prebuilt binaries
Download an archive from the latest release, extract it, and put the a2a binary on your PATH.
# Discover an agent's card
a2a card get https://agent.example.com
# Send a message and wait for the result
a2a send -a https://agent.example.com "Hello, what can you do?"
# Stream events as they arrive
a2a send -a https://agent.example.com --stream "Summarize this document"See the full command reference for all commands, flags, configuration, and server mode.
Learn the CLI by example. The cookbook is a short, hands-on course — each lesson is a small folder you can run on its own, building from your first A2A server up to streaming, configuration, and the full message and task lifecycle:
- Build a quick A2A server — turn an ordinary script into an A2A server with
--exec, then send it a message. - Discover and talk to an agent — read an agent's card, save it, and send a text message.
- Configure the CLI — flags, environment variables, and
.envfiles, and how to tell which one won. - Messages and tasks — build multi-part messages, stream replies, and follow a task through its lifecycle.
Give your AI coding agent the ability to drive a2a directly. The a2a-cli Agent Skill teaches harnesses like Claude Code, Cursor, and Codex to delegate work to A2A agents from the command line.
Install it into your agent with skills:
npx skills add https://github.com/a2aproject/a2a-cli --skill a2a-cliThe skill drives the a2a binary, so install the CLI first. The descriptor lives at skills/a2a-cli/SKILL.md.
Prefer a plugin-aware client? The Agent Plugin bundles the same skill as one installable unit (Agent Plugins 1.0.0, skills-only). Install it with skills:
npx skills add https://github.com/a2aproject/a2a-cli/tree/main/agent-plugin/skills/a2a-cli -gLike the skill, it drives the a2a binary — install the CLI first.
Several community and SDK-provided A2A CLIs existed across languages, but they diverged in command names, flags, output shapes, and transport handling. This project reconciles them into one standardized CLI — built for long-term stability and cross-transport consistency. It builds on the CLI from the A2A Go SDK.
The Specification (SPEC.md) captured that reconciliation — command taxonomy, output contracts, polling/streaming rules, and exit codes — and served as the roadmap.
The CLI speaks JSON-RPC, REST and gRPC out of the box. Additional transport
bindings can be added without recompiling by dropping an
a2a-transport-<name> binary on your PATH. The CLI launches the plugin as a
local proxy that speaks a standard A2A binding and forwards to the custom
protocol, so --transport <name> works uniformly for built-ins and plugins:
$ a2a transport list
$ a2a send --transport slimrpc --endpoint slim://agents.example/agent "hello"Authoring a plugin in Go is a few lines with the
devkit/clitransport package — you provide an
a2aclient.Transport, it produces a CLI-compatible plugin. See the
transport plugin guide and the runnable
echo plugin example.
We welcome review and input from engineers and the community:
- Read the Specification (
SPEC.md) for background. - Open an issue or pull request to share suggestions, questions, or edge cases.
You can also help by sharing how you use the tool. See the Contributing guide; conformance details live in the Compliance Checklist (COMPLIANCE.md).
The A2A CLI and Specification are open-source and licensed under the Apache License 2.0.
