AIRE

The QUIC-native agent protocol.

AIRE — Agent Interchange Runtime Envelope — is a wire protocol for agent-to-agent communication. Open spec. Apache 2.0. Built for migration, multiplexed fan-out, semantic cancellation, and budget-aware backpressure.

Spec: draft v0.4 (all milestones shipped) License: Apache 2.0 Reference impl: Go · v0.2 conformant

The bet

The agent era is moving across HTTP. HTTP is wrong for agents — wrong for streaming, wrong for fan-out, wrong for migration, wrong for identity, wrong for cancellation, wrong for cost-aware backpressure.

The right altitude isn't a new layer-4 protocol. QUIC already fixed the transport. The opening is agent-native semantics on top — and that's what AIRE is.

The problem with HTTP for agents

Today's agent protocols — MCP, A2A, and the various HTTP-based ACPs — all live on HTTP. That makes adoption easy. It also ceilings adoption hard.

The design

Transport
QUIC (RFC 9000). Connection-ID-based migration, multiplexed streams, 0-RTT, built-in TLS, escapes middlebox ossification.
Frames
Typed agent verbs: HELLO, INVOKE, STREAM, CANCEL, BUDGET, DELEGATE, RESUMABLE, RESUME, ERROR, GOODBYE.
Identity
DID-based, bound to streams — not connections. One connection can carry operations on behalf of many distinct agent identities. v0.2 mandates support for did:web (DNS-rooted) and did:key (ephemeral, self-asserted); other methods are pluggable. HELLO frames are signed with Ed25519, with nonce + timestamp replay protection.
Addressing
aire://host[:port]/agent-id/operation. Default port 4433/udp. Human-readable handles take the form agent@domain and resolve off-wire to a DID via DNS TXT or HTTPS well-known, then to endpoints via an AIREv1 service entry in the DID Document — with mandatory bidirectional binding to prevent impersonation.
Backpressure
Semantic. BUDGET frames carry tokens, micro-units of currency (ISO 4217), and an absolute deadline as a TLV payload. Either peer may issue updates; latest snapshot wins. Exhaustion produces a typed BUDGET_EXCEEDED error.
Cancellation
Per-operation. CANCEL carries a reason code (user, deadline, budget, upstream, resource, internal) and optional UTF-8 detail. When an operation has been delegated, cancellation propagates downstream with reason UPSTREAM_CANCELLED, transitively along the delegation chain.
Resumability
Server issues an opaque RESUMABLE token with a TTL during an operation; on connection loss, the client dials fresh, completes the handshake, and sends RESUME with the token plus its last-received sequence number. Server picks up at the next frame. At-least-once by default; cross-node resumption is implementation-defined.

Compared

Transport Migration Stream HOL Cancel Budget BP Identity
MCPstdio / Streamable HTTPinherits HTTPcrudeOAuth (bolted)
A2AHTTP + SSEinherits HTTP/2HTTP-cancelOAuth (bolted)
HTTP-ACPsHTTPinherits HTTPbolted
AIREQUIC✓ semantic✓ tokens + $✓ DID per stream

Roadmap

  1. v0.1 — wire format, handshake, URI scheme, conformance vectors (shipped — spec §§2/3/4/6 merged; Go reference impl green against the vectors with a two-node cancel-mid-stream demo)
  2. v0.2 — identity model, capability negotiation, discovery (shipped — DID identity (did:web, did:key), AIREv1 service entry, handle resolution, capability negotiation semantics, and Ed25519 HELLO signing with replay protection)
  3. v0.3 — budget / cancel / delegate semantics (spec shipped — CANCEL frame with reason codes, DELEGATE propagation rules, BUDGET TLV with tokens / cost / currency / deadline)
  4. v0.4 — resumability, multipath (spec shipped — RESUMABLE / RESUME frames, opaque tokens with TTL, sequence-number-based at-least-once delivery; multipath deferred)
  5. v1.0 — frozen wire format, foundation donation

Governance

Currently led by a BDFL. Path to a neutral foundation (Linux Foundation / IETF) once the spec is proven and adopted. Read the governance doc.

Get involved