a2aproject / a2aproject/A2A

[Feat]: Swarm Extension Family proposal — posture/blackboard/routing/presence extensions for A2A v1.0

Aperta
#2,108 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Shell
Stelle
25.7k
Fork
2.6k
Merge medio
3g 6h
PR unite (30g)
16

Descrizione

### Is your feature request related to a problem? Please describe.

This is a formal **extension proposal** under the [A2A Extension & Binding Governance](https://a2a-protocol.org/latest/topics/extension-and-binding-governance/) process (Proposal Phase).

The A2A v1.0 core protocol is a task/reply protocol: agents discover each other via Agent Cards, exchange messages, and track long-running tasks. It has no representation for four operational concerns that any persistent multi-agent deployment hits:

1. **Agent lifecycle state (posture)** — agents are assumed always available. Real swarms sleep idle agents to save tokens/energy and need an explicit wake path.
2. **Shared knowledge with decay** — A2A exchanges messages but has no cross-agent memory with a freshness/time dimension.
3. **Tag-based routing** — fan-out requires enumerating peers and sending individually; there is no interest-group broadcast that decouples sender from recipient set.
4. **Presence/liveness** — Agent Cards describe capability, not liveness; operational routing needs a heartbeat + last_seen.

### Describe the solution you'd like

A **Swarm Extension Family**: four optional, versioned extension URIs that give any A2A-compliant agent access to these operational primitives:

| URI | Purpose | Custom JSON-RPC methods |
|---|---|---|
| `https://hermes.nousresearch.com/extensions/swarm/v1/posture` | sleep/awake posture control + wake command | `swarm/posture` |
| `https://hermes.nousresearch.com/extensions/swarm/v1/blackboard` | shared decaying-pheromone knowledge | `swarm/blackboard/post`, `swarm/blackboard/query` |
| `https://hermes.nousresearch.com/extensions/swarm/v1/routing` | tag-based broadcast (ask/signal) | — (core `SendMessage` + extension metadata) |
| `https://hermes.nousresearch.com/extensions/swarm/v1/presence` | heartbeat + online state | `swarm/presence/ping` |

Key design points:

- **All extensions are `required: false`** — a non-extension client sees a fully conformant A2A agent; the extension list is additive metadata in the Agent Card.
- **Extension-only operations short-circuit at the daemon: zero LLM turns** for posture/blackboard/routing/presence — they are typed, idempotent operations on agent state, not model calls.
- **Versioned URIs** — breaking changes get a new URI (spec §4.6.3).
- **Transport:** A2A v1.0 HTTP+JSON binding; JSON-RPC 2.0 custom methods declared in the Agent Card per §12.
- **Decay semantics:** blackboard findings carry a pheromone strength (0–1) with ~24h half-life, so stale knowledge ages out organically.

### Describe alternatives you've considered

- **Core protocol change** — rejected: these are cross-cutting operational concerns common to many deployments, exactly the "protocol enhancement" category the extensions mechanism exists for (§4.6); core changes would break backward compatibility.
- **Custom protocol binding (CPB)** — rejected: the semantics are not transport-specific; they layer on the standard HTTP+JSON binding.
- **Vendor-private extension namespace** — that's where this proposal starts (the reference implementation uses `https://hermes.nousresearch.com/extensions/swarm/v1`), but the governance path to an `experimental-ext-swarm-*` repo and eventual official status is the ask here.

### Additional context

**Complete formal spec (v1 draft):** https://gist.github.com/RGerrish/b4cbf13e4de4680d402952557cbd6c84

**Reference implementation (production, Apache-2.0, 152 tests):** hermes-swarm v0.10.0 — `a2a_bridge.py` (655 LOC, stdlib-only) + `a2a_client.py` (351 LOC); Agent Card at `/.well-known/agent-card.json`. Runs today as a multi-host mesh (macOS + Windows nodes over Tailscale); all four extensions verified live over the wire. Beyond the four extensions, the implementation carries an enforcement progression that shows the family is production-grade: v0.4 delegation receipts (tracked, acked, governor-escalated) -> v0.5 delegation doctrine (domain->owner routing directives) -> v0.6 turn accounting (per-agent work-turn counts + governor balance watchdog) -> v0.7 domain guard (pre_tool_call hard-block of heavy tools for
hard-mode domains) -> v0.8 swarm auto-recovery (stale-registration watchdog
keeps the mesh alive across daemon restarts) -> v0.8.1 inbox-check prompt fix
(kills the `swarm` CLI hallucination that made local models go deaf) -> v0.10.0
receipt truth (two-phase completion: a receipt only reaches `completed` after
deterministic side-effect verification - file/flag/git-commit/blackboard/env
probes or an independent reviewer attestation, never LLM self-report;
`last_activity_at` liveness + governor activity-based escalation)

**What we're asking:**
1. Community feedback on the extension shapes (naming, param semantics, decay model).
2. An A2A Maintainer sponsor to create an `experimental-ext-swarm-*` repository under `a2aproject` so the family can iterate toward official status and, eventually, be considered for core protocol promotion.

- [x] I agree to follow this project's Code of Conduct

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Review the formal spec draft linked in the issue to understand the four proposed extensions: posture, blackboard, routing, and presence. Examine the reference implementation files a2a_bridge.py and a2a_client.py for the current extension mechanics. The goal is to gather community feedback and seek a maintainer sponsor to create an experimental repository under a2aproject.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Ambito
api, backend-api-design
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.