How a2aproject/a2a-python works
A2A Python SDK implements the Agent2Agent protocol for building asynchronous agent servers and clients. A client resolves an agent card, selects a protocol transport, and sends requests to a remote server; server routes dispatch protocol operations to request handlers, which coordinate agent execution, task state, and streamed events. The SDK also provides plugins, push-notification support, database-backed stores, telemetry, and v0.3 compatibility transports and handlers. Edges reflect README claims or source-index references; unsampled subsystems and optional integrations are represented only where documented.
Main entry points: default_request_handler.py Default handler · client_factory.py Client factory · routes HTTP routes · request_handler.py Request handler API
Components 24
Client access
- Client factory
src/a2a/client/client_factory.py - Client API
src/a2a/client/client.py - Card resolver
src/a2a/client/card_resolver.py - Client transports
src/a2a/client/transports
Server protocol
- HTTP routes
src/a2a/server/routes - JSON-RPC dispatch
src/a2a/server/routes/jsonrpc_dispatcher.py - REST dispatch
src/a2a/server/routes/rest_dispatcher.py - Agent card routes
src/a2a/server/routes/agent_card_routes.py - Request handler API
src/a2a/server/request_handlers/request_handler.py
Agent runtime
- Default handler
src/a2a/server/request_handlers/default_request_handler.py - Agent executor
src/a2a/server/agent_execution/agent_executor.py - Event queues
src/a2a/server/events/event_queue.py - Task manager
src/a2a/server/tasks/task_manager.py
v0.3 compatibility
- v0.3 gRPC handler
src/a2a/compat/v0_3/grpc_handler.py - v0.3 transports
src/a2a/compat/v0_3
State and extensions
- Task stores
src/a2a/server/tasks/task_store.py - In-memory store
src/a2a/server/tasks/inmemory_task_store.py - Cluster stores
src/a2a/server/cluster/task_store.py - Plugin manager
src/a2a/plugins/manager.py - Push notifications
src/a2a/server/tasks/push_notification_sender.py - Telemetry
src/a2a/utils/telemetry.py
Other components
- A2A caller
- Remote A2A server
- Protocol response
Connections 24
- A2A caller → Client factory: creates client
README.md - Client factory → Card resolver: resolves card
src/a2a/client/client_factory.py - Client factory → Client transports: selects transport
src/a2a/client/client_factory.py - Client factory → Client API: builds client
src/a2a/client/client_factory.py - Client API → Remote A2A server: sends requests
README.md - Remote A2A server → Protocol response: returns response
README.md - A2A caller → HTTP routes: hosts server
README.md - HTTP routes → JSON-RPC dispatch: routes JSON-RPC
src/a2a/server/routes/jsonrpc_routes.py - HTTP routes → REST dispatch: routes REST
src/a2a/server/routes/rest_routes.py - HTTP routes → Request handler API: dispatches requests
src/a2a/server/routes/jsonrpc_routes.py - HTTP routes → Agent card routes: serves agent card
src/a2a/server/routes/agent_card_routes.py - Request handler API → Default handler: implemented by
src/a2a/server/request_handlers/default_request_handler.py - Default handler → Agent executor: runs agent
src/a2a/server/request_handlers/default_request_handler.py - Default handler → Task manager: updates tasks
src/a2a/server/request_handlers/default_request_handler.py - Default handler → Event queues: streams events
src/a2a/server/request_handlers/default_request_handler.py - Task manager → Task stores: persists tasks
src/a2a/server/tasks/task_manager.py - In-memory store → Task stores: implements interface
- Cluster stores → Task stores: implements interface
src/a2a/server/cluster/task_store.py - Default handler → Plugin manager: uses hooks
- Default handler → Push notifications: sends notifications
- Event queues → Telemetry: instruments queues
src/a2a/server/events/event_queue.py - v0.3 gRPC handler → Request handler API: delegates requests
src/a2a/compat/v0_3/grpc_handler.py - Client factory → v0.3 transports: selects v0.3 transport
src/a2a/client/client_factory.py - v0.3 transports → Remote A2A server: uses v0.3 protocol
README.md