Relay by TechJapan
Not the samelayer
A2A is the agent-to-agent protocol Google gave the Linux Foundation. Running both shows A2A delegates one job; it does not share what several sessions do. Relay is the mirror image: it tells everyone who is touching what, in a tamper-evident record. What A2A has that Relay does not (AgentCard, five SDKs, standing as a standard), a tool that delegates nothing and enters through MCP does not need.
How we compared them
Listing features from memory proves nothing, so we ran both.
- A2A: fetched the normative specification (
a2a.protoina2aproject/A2A), stood up a minimal agent and client with the official@a2a-js/sdkv1.1.0, and executed all eleven RPCs - Relay: started it locally and ran the same scenario — declare “I’m editing
src/auth.ts”, have the other side react
The difference that matters
| A2A | Relay | |
|---|---|---|
| What kind of tool | Delegate one job, then follow that job from submitted to a terminal state | Share what everybody is doing. Everyone sees who is touching what right now |
| From whom to whom | client → agent (an addressed round trip) | one → everyone (broadcast to every session in the project) |
| What sits at the centre | a task, with eight states, terminal when finished | an event, append-only, no terminal state, accumulating |
| The point | delegating work | noticing before the accident |
From the specification and the .proto, A2A has no broadcast to everyone and no shared work record. Relay, conversely, has no way to delegate a job. They are not two ways of doing the same thing.
What Relay has and A2A does not
| What it is | |
|---|---|
| Everyone hears it | one record reaches every session in the project |
| Warning before the edit | tells an agent someone else is on the same target, before the edit |
| Shared work record | append-only; rewriting any past entry is detectable |
| Reserving what cannot be undone | a deploy or migration is actually blocked while another session is live |
| Commit lag | counts how many commits the others made since your last one |
What A2A has and Relay does not
What A2A carries as a tool for delegating work, and why Relay does not carry it.
| A2A | Relay | |
|---|---|---|
| Capability declaration | an AgentCard at /.well-known/agent-card.json — name, skills, transports, security schemes, extensions, signatures, all machine-readable | Not carried. Relay delegates no work, so no machine needs to read what a peer can do |
| Official SDKs | Python, TypeScript, Java, Go, C# | No dedicated SDK needed. The entry point is standard MCP, so other vendors’ agents connect as they are (the client is in Node) |
| Standing | Apache-2.0, Linux Foundation, v1.0 (9 April 2026), 150+ supporting organisations | Proprietary software from h-c.ai, sitting on top of a standard (MCP) |
| Transport choice | JSON-RPC, gRPC, HTTP+JSON, each declaring its protocol version and explicitly refusing versions it does not serve | One transport, MCP, by design; no wire-version negotiation to maintain |
| Delivery to disconnected peers | signed webhook push (JWT, JWKS) | Never spooled. A late warning is no warning; what happened while a peer was away is on the work list the next time it reads it |
| Task states | eight (submitted, working, completed, failed, canceled, rejected, input-required, auth-required) | No states. Only the facts “will”, “did” and “cancelled” are kept; judging success stays with the receiving side |
| Error model | typed codes and reasons (TASK_NOT_FOUND and so on) fixed by number | machine-readable codes and reasons |
| Extension point | extensions declared by URI, marked required or optional, with versions | Not carried. Relay stays a record of facts |
Why Relay does not adopt A2A
We wrote the adapter design and put it through adversarial review. We dropped it.
- Other vendors’ agents could already join. Relay publishes a standard remote MCP endpoint. A client carrying none of Relay’s code joined it in our measurement. The premise “other agents cannot join” was false.
- A2A added almost no new capability. The A2A-shaped use we were most excited about — waiting on an approval and receiving a human’s answer the moment it lands — already worked in Relay.
- The mapping itself was defective. Relay accepts any number of replies to the same approval request, while A2A’s completed and rejected states are terminal. The two do not fit.
We also wrote down what would change our mind: a named, real counterpart who wants to join and speaks only A2A, and fixing the defects above first.
Which one to use
| What you want | Use |
|---|---|
| Delegate a job to another agent and get the result | A2A |
| Track a long-running delegation, receiving webhooks while disconnected | A2A |
| Let a machine discover what a third-party agent can do | A2A |
| Stop accidents when several agents share one repository | Relay |
| Show every agent who is touching what right now | Relay |
| Prove later which agent committed what, and when | Relay |
| Put irreversible operations through a human decision | Relay |
The numbers and behaviour on this page were verified on real servers on 9 September 2026. A2A is under active development, so this comparison will age. Corrections are welcome at [email protected].
Frequently asked questions
Will Relay support A2A?
Not now. We designed the adapter and reviewed it adversarially. Other vendors' agents can already join Relay over its remote MCP endpoint, so adding A2A gained almost no new capability. The decision is recorded internally, along with the conditions that would reverse it.
A2A is the standard, so why go your own way?
Relay's interoperability entry point is not proprietary — it is MCP, published as a standard endpoint, so a client with none of Relay's code can connect. A2A serves a different purpose and has no equivalent of Relay's core: telling everyone what is happening and keeping a record that does not rot.
Can I use A2A and Relay together?
Yes, they do not overlap. Delegate a job to another agent over A2A, and if that work touches the same repository, publish its will and did into Relay so your teammates can see it.
What does A2A have that Relay does not?
Three things. (1) A capability declaration (AgentCard): Relay delegates no work, so no machine needs to read what a peer can do. (2) SDKs in five languages: Relay's entry point is standard MCP, so agents connect without a dedicated SDK. (3) Standing as a standard: Relay sits on top of one, MCP.