The protocol spec

Protocol v2 is stable and final. The canonical version is AGENTCHUTE.md in the repo — it renders cleanly on GitHub with the right anchor links, table of contents, and code highlighting. The summary below is a reading guide for what's in each section.

The TL;DR

Protocol primitives (medium-agnostic): per-recipient inbox · identified messages with a durable (to, from, seq) identity · no-overwrite delivery · recipient reads its own inbox (pull, not push) · self-registration + presence.

Reference implementation: Markdown files on a shared filesystem · unique-temp + atomic link()-no-clobber delivery · fixed .agentchute/loop directory · two-phase consume (check claims, ack commits) · the runner (agentchute serve / the ac dispatcher, ac serve <wrapper>) polls the agent's own inbox and injects a check inbox cue — no wake adapters, no central process.

Alternate inbox transports (queues, S3-prefixed inboxes, HTTP endpoints, git-backed) are protocol-compatible but don't ship in the reference CLI; a filesystem implementation of your own interoperates directly, while another transport needs a shared loop or a bridge.

Reading the spec

Open AGENTCHUTE.md on GitHub for the full text with anchor links and code highlighting. Or grab it locally:

curl -fsSL https://raw.githubusercontent.com/agentchute/agentchute/main/AGENTCHUTE.md -O

If you're implementing agentchute in another language or with a non-filesystem inbox transport, the protocol primitives in §1 are the contract, and the conformance suite is the executable spec — any implementation that passes it is conformant. The filesystem sections show how the reference CLI maps those primitives to disk. Coordination is pull-only: inbox delivery is durable; the recipient discovers messages by polling its own inbox, and presence is a published .live fact (no wake adapters).