-
Notifications
You must be signed in to change notification settings - Fork 350
Description
Problem Statement
Strands builders are increasingly asking for enhanced agent interoperability capabilities that enable seamless communication between agents across different systems and deployments.
- Standardized Agent Communication: Builders want native SDK support for agents to communicate with other agents using industry-standard protocols without custom integration work
- Agent Discovery and Service Registry: The community needs automatic capability discovery so agents can find and connect to other agents based on their skills and availability
- Production-Ready Inter-Agent Protocols: Developers want enterprise-grade communication protocols supporting authentication, streaming, task lifecycle management, and distributed coordination
- Protocol-Agnostic Architecture: Requests for agents that can participate in multiple communication standards simultaneously without being locked into proprietary systems
- Seamless Multi-Agent Integration: Standardized agents should work within existing Strands multi-agent patterns (swarms, graphs, handoffs, agents-as-tools)
Proposed Solution
In response to builder requests, we propose introducing comprehensive Agent-to-Agent (A2A) protocol integration through Google's Agent-to-Agent Protocol, enabling Strands agents to communicate with other using JSON-RPC 2.0 over HTTP and the A2A protocol.
1. A2A Agent Wrapper
The A2AAgent
class adapts existing Strands agents to the A2A protocol without modifying existing agent code.
from strands import Agent
from strands.multiagent.a2a import A2AAgent
# Existing Strands agent code unchanged
strands_agent = Agent(tools=[...])
# A2A capabilities added to the agent
a2a_agent = A2AAgent(strands_agent)
# Easily serve Strands agents over the A2A protocol
a2a_agent.serve()
# Or use with any ASGI server
a2a_agent.to_asgi()
2. Agent Discovery and Agent Cards
The A2AAgent
class automatically generates Agent Cards from Strands Agent metadata, providing standardized capability discovery. Agent Cards include:
- Basic Metadata: Name, description, version, and provider information derived from Agent configuration
- Skills Discovery: Automatically generated from available tools, enabling precise capability matching
- Communication Capabilities: Streaming support, push notifications, and state transition tracking
- Optional Overwrites and Augmentation: Agent builders can add to or overwrite generated agent metadata, skills, etc.
agent = Agent(
name="research_specialist",
system_prompt="You are an expert researcher with web access",
tools=[http_request, memory, file_write]
)
# Agent Card automatically generated from Strands Agent with skills derived from tools
a2a_agent = A2AAgent(agent)
3. Built-in Server and ASGI Integration
The A2AAgent
class includes a built-in FastAPI and uvicorn server that hosts both the Agent Card at /.well-known/agent.json
and JSON-RPC 2.0 endpoints. Features include:
- Standardized Discovery: Agent Cards accessible via HTTP GET requests
- JSON-RPC API: Complete A2A protocol implementation with method routing
- ASGI Compatibility:
to_asgi()
function for custom routes and deployment
4. Communication Patterns
The A2A implementation supports three distinct communication patterns:
Request/Response (Polling)
- Traditional synchronous communication
- Immediate response for quick tasks and status queries
- Polling for longer running tasks
Streaming (Server-Sent Events)
- Real-time updates during task execution using SSE
- Progress monitoring and intermediate result streaming
Push Notifications (Long-Running Tasks)
- Webhook-based notifications for longer running tasks
- Asynchronous task management with callback mechanisms
5. Tasks, Messages, and Artifacts Integration
Complete integration with A2A's core data structures:
- Tasks: Full lifecycle management (submitted → working → completed/failed/canceled/input-required) with state persistence
- Messages: Rich messaging system supporting TextPart, FilePart, and DataPart for comprehensive agent communication
- Artifacts: Structured data exchange enabling agents to share complex outputs and generated content
6. Multi-Agent Pattern Integration
A2A agents can be used directly in multi-agent patterns provided by Strands (#214):
a2a_analyzer_remote = A2AAgent(url="https://my-agent-endpoint.com/.well-known/agent.json")
a2a_analyzer_local = A2AAgent(url="http://localhost:8000/.well-known/agent.json")
strands_analyzer = Agent(system_prompt="Perform deep analysis on the given context.")
# Agents-as-Tools
orchestrator = Agent(tools=[a2a_analyzer_remote, a2a_analyzer_local, strands_analyzer])
# Direct usage in Swarms
swarm = Swarm([a2a_analyzer_remote, a2a_analyzer_local, strands_analyzer])
# Graph workflows
builder = GraphBuilder()
builder.add_node(a2a_analyzer_remote, "a2a_analyzer_remote")
builder.add_node(a2a_analyzer_local, "a2a_analyzer_local")
builder.add_node(strands_analyzer, "strands_analyzer")
graph = builder.build()
7. Authentication and Authorization
A2A has built-in authentication and authorization concepts. A2A clients send authentication data when communicating with agents, handled by the Strands A2AAgent
server.
Additional Context
Please share your feedback and use cases to help shape A2A integration in Strands Agents.
Sub-issues
Collapse Sub-issuesSub-issues
- Manage this item control⌃ shift⇧ uU
- Manage this item control⌃ shift⇧ uU
- Manage this item control⌃ shift⇧ uU
- Manage this item control⌃ shift⇧ uU
- Manage this item control⌃ shift⇧ uU
- Manage this item control⌃ shift⇧ uU
- Manage this item control⌃ shift⇧ uU
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Activity
mudrantar commentedon May 19, 2025
D1EE7P2U9 commentedon May 19, 2025
karan-5ingh commentedon May 19, 2025
awsarron commentedon Jun 10, 2025
Providing an update here: the team is now taking a holistic look in to multi-agent orchestration, including A2A, and will have details soon.
ryanycoleman commentedon Jun 13, 2025
Initial work to integrate A2A natively is taking shape here: #218
We also have our plans for multi-agent orchestration detailed in #214 for feedback ahead of PR
Have a look!
[-][FEATURE] Agent to Agent Communication[/-][+][FEATURE] Agent to Agent Communication (A2A)[/+]awsarron commentedon Jun 15, 2025
Updated the description on this issue with our first proposal for Strands A2A integration.