OpenHands / OpenHands/software-agent-sdk
Google a2a support
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 539
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 137
Description
What problem or use case are you trying to solve?
Recently Google released the agent-to-agent protocol: https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/
We may want to support this to allow other agents to talk to OpenHands agents through this protocol.
Desired Behavior
The agent server exposes its registered OpenHands agents through the A2A protocol so an external A2A client can discover an agent and start, stream, inspect, or cancel a task. Client-side A2A support is out of scope for this issue.
Acceptance Criteria
- The agent server exposes
/.well-known/agent-card.json, generated from its registered agent profiles. - The server supports A2A JSON-RPC
message/send,message/stream,tasks/get, andtasks/cancel, mapping A2A task IDs to OpenHands conversation IDs. -
message/streamreturns task updates through SSE using the existing conversation event stream. - Automated tests cover agent-card discovery and the send, stream, get, and cancel flows.
- A2A support is provided through an optional SDK dependency and does not make the dependency required for users who do not use A2A.
- A2A endpoints are enabled only when the agent server is started with an explicit A2A enablement argument; they are disabled by default.
If you find this feature request or enhancement useful, make sure to add a 👍 to the issue
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the agent server, registered agent profiles, and the existing conversation event stream. Review how server dependencies and startup arguments are configured before tracing the required discovery, send, stream, get, and cancel flows. Done means the listed automated tests pass, A2A is optional and disabled by default, and the specified endpoints work when explicitly enabled.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100