π«π· Version franΓ§aise
A2A protocol β conformance matrix
Honest position of Orkeon's A2A implementation (marked [Experimental],
diagnostic ORKEXP001) against the A2A specification v1.0 (Linux
Foundation / a2aproject). Summary: the implementation belongs to the 0.x
era of the protocol β a compact REST surface plus SSE streaming β and covers
the core send/stream/status/cancel loop; the v1.0 binding formalism (JSON-RPC,
gRPC, HTTP+JSON mappings of the canonical proto schema), push notifications
and the richer task lifecycle are not implemented. This page is the reference
for what interoperates and what does not.
Abstract operations (spec Β§core)
| v1.0 operation | Orkeon endpoint | Status | Notes |
|---|---|---|---|
| Send Message | POST /a2a/tasks/send |
π‘ Partial | 0.x-era shape (A2ATaskRequest: id/skillId/input/inputMode/metadata), not the v1.0 Message/Part data model. |
| Send Streaming Message | POST /a2a/tasks/sendSubscribe (SSE) |
π‘ Partial | Working β final update β [DONE]; no TaskStatusUpdateEvent/TaskArtifactUpdateEvent typed events. |
| Get Task | GET /a2a/tasks/{id} |
π‘ Partial | Real since PUB-08 when task persistence is enabled (AddOrkeonA2ATaskPersistence() over a checkpointing IStateStore): 200 with the recorded state, 404 for unknown ids. Without the opt-in: explicit 501 (never fabricated state). |
| List Tasks | β | π΄ Absent | |
| Cancel Task | DELETE /a2a/tasks/{id} |
π‘ Partial | With persistence: 404 for unknown ids and the record flips to Cancelled. Advisory only: in-flight work is not interrupted. Without persistence: legacy acknowledgement. |
| Subscribe to (existing) Task | β | π΄ Absent | Streaming exists only at submission time. |
| Push Notification Configs (create/get/list/delete) | β | π΄ Absent | No webhook delivery. |
| Get Extended Agent Card | β | π΄ Absent | Single public card only. |
Data model
| v1.0 concept | Orkeon | Status |
|---|---|---|
Task states (9: incl. SUBMITTED, INPUT_REQUIRED, AUTH_REQUIRED, REJECTED) |
5 states (Pending, Working, Completed, Failed, Cancelled) |
π‘ Terminal states map 1-1; the interrupted states have no equivalent. |
Message / Part (text, file, data parts) |
input string + inputMode MIME hint |
π‘ Text-first; no multi-part payloads. |
| Artifacts | output string |
π‘ Single textual output. |
| AgentCard | GET /.well-known/agent.json |
π‘ Served with name/description/skills; v1.0 fields (capabilities, securitySchemes, agentInterfaces, signature) absent. |
A2A-Version service parameter |
β | π΄ Not read; there is no version negotiation. |
Bindings
v1.0 defines three canonical bindings (JSON-RPC 2.0, gRPC, HTTP+JSON) mapped from the proto schema. Orkeon speaks its own 0.x-era REST dialect β none of the three canonical bindings β so v1.0-strict clients will not interoperate without an adapter. Aligning on the HTTP+JSON binding is the natural first step when this surface is promoted.
Security
| Requirement | Orkeon | Status |
|---|---|---|
| Client identity verification | mTLS (fail-closed: RequireMutualTls refuses to start without a trust anchor; CA chain or pinned thumbprints) + AllowedAuthSchemes (401) |
π’ For the mTLS deployment model. |
securitySchemes declaration in the AgentCard |
β | π΄ Schemes are enforced but not advertised. |
| Certificate revocation | Not checked | π‘ Decision (PUB-08 T3): prefer short-lived certificates over CRL/OCSP. The A2A mTLS trust model targets private CAs, where CRL/OCSP endpoints rarely exist and OCSP adds an availability dependency; a 24β72 h certificate lifetime bounds the exposure window with no new runtime dependency, and rotation already fits the existing options (a new client instance picks up the new PFX). CRL support stays out of scope until a deployment proves the need. |
| Push-notification webhook auth | β | π΄ No webhooks. |
Where this leaves consumers
- Orkeon β Orkeon across processes/hosts: supported (that is what the surface was built for), now including durable task status with the persistence opt-in.
- Orkeon β third-party v1.0 agents: not yet β wait for (or contribute to) the HTTP+JSON binding alignment tracked by the PUB-08 follow-up.
Every gap above is deliberate scope, not an oversight: the surface is marked
[Experimental] (ORKEXP001) precisely so it can be reshaped toward v1.0
without a breaking-change debt. See also
Experimental APIs and
Limits and constraints.