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).