a2a-ao 🤝
The first Rust implementation of the Agent-to-Agent (A2A) protocol — the open standard for agent interoperability, governed by the Linux Foundation.
What is A2A?
A2A enables AI agents to discover each other, delegate tasks, and collaborate — regardless of which framework or platform they were built on.
- Agent Cards — Self-describing metadata for agent discovery
- Tasks — Stateful units of work with full lifecycle management
- Streaming — Real-time updates via Server-Sent Events
- Push Notifications — Webhook-based async delivery
- Multi-turn — Extended dialogues with
INPUT_REQUIRED/AUTH_REQUIREDstates
Quick Start
use ;
// Discover a remote agent
let card = discover.await?;
println!;
// Send a task to the agent
let client = new;
let response = client
.send_message
.await?;
// Track the task lifecycle
match response.task.state
A2A + MCP: Complementary Protocols
| A2A | MCP | |
|---|---|---|
| Purpose | Agent ↔ Agent collaboration | Agent ↔ Tools/Data access |
| Abstraction | Task (stateful lifecycle) | Tool call (request-response) |
| Execution | Opaque (agents don't share internals) | Transparent (servers expose tools) |
Use A2A when agents need to collaborate. Use MCP when agents need tools and data.
License
Part of the AgentOven project.