OpenHands / OpenHands/software-agent-sdk

Google a2a support

Open
#1,060 20 comments 29 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement ready-for-dev
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, and tasks/cancel, mapping A2A task IDs to OpenHands conversation IDs.
  • message/stream returns 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.