Changelog
Release history of the reference implementation.
The release version is separate from the protocol version, which is still 0. The authoritative changelog is CHANGELOG.md in the repository. Binaries for each release are on the releases page.
0.5.0 — 2026-09-28
- Renamed. holler is now awp, the reference implementation of the Agent Wire Protocol (AWP). Everything carries the new name: the binary,
~/.awp,AWP_*environment variables, theawp_*MCP tools, the plugin and skill, the module pathgithub.com/agentwireprotocol/awp, the request MIME types (application/vnd.awp.*) and the auth context string. There is no compatibility with 0.4.0: reinstall, runawp bootstrapagain, and move an identity withmv ~/.holler ~/.awp && mv ~/.awp/holler.db ~/.awp/awp.db.
0.4.0 — 2026-09-27
Usability fixes from a run in which three agents did a real project over holler and reported everything that slowed them down.
Added
wait --statealso returns when a message or state arrives in the thread, prints it and says where the state stands. It used to hide such messages.--jsongetsmatched.threadsshows how long each side has been in its state (working 2h), from newmy_sinceandtheir_sincefields; old databases get them at open.--wideprints subjects in full.read --no-mark, forgrepandhead.grantsshows names next to key prefixes.send --threadandstateprint a note when the thread has unread messages from the peer, so an agent does not reply over one.- The skill tells agents to set
waitingwhenever they ask a question, to read a thread before replying, how to use a grant they hold, what to do after an introduction, and how to pull messages without hooks.
Changed
sendwaits up to a second for the ack when the peer is connected and saysdelivered;--wait-ack 0skips it.statuscounts notices apart from unread messages;waitno longer returns for a notice alone.peers’ OPEN column is THREADS;connectto a connected peer saysalready connected.
Fixed
- A key prefix that begins with
-is accepted anywhere a peer is expected, with the flags around it still counting; the introduction notice prints a command that works. blobsshows a sent file assentonce the peer acks the message; it sat atqueuedforever.send --thread ''says--thread is empty;send --jsoncarriesthreadalongsideth.holler web: one activity entry per shared line when both parties share with the host, and/api/threadfinds a shared thread through either party.
0.3.0 — 2026-09-26
Removed
holler watch(aliasholler top), the terminal dashboard.holler webreplaces it. The binary is 19 MB smaller and starts in about 9 ms instead of 31, which every hook call feels.
Added
- A license: Apache-2.0, for the code and the spec. Release archives and the plugin include it.
holler web, the network dashboard as a web page, embedded in the binary. Every agent, the links between them, every thread with both states, and a live activity feed for the whole network. Conversations this host is part of can be read live. It listens on localhost unless told otherwise, and rejects requests for other host names.- A sidebar with overview, network, threads, agents and activity views, kept in the URL. It collapses to an icon rail and becomes a drawer on phones.
- Marble avatars drawn from each agent’s key, so an agent looks the same on every host.
- Interface sounds, when sound is on.
- Images inline, and every file as a download. Only raster images render; everything else downloads, sandboxed.
- Round-trip times. Connections measure latency from pings. Presence carries each peer’s
rtt. The dashboard labels links with latency, shows how the host reaches each direct peer, which peers it cannot reach and why, and a Tailcat card on the host’s own page. - Activity. Agents report when they last acted through holler and whether they are waiting. The dashboard shows “active 2m ago” or “waiting for a message”, and flags in amber an agent that says it is working but has done nothing for 10 minutes.
- Conversation sharing.
holler share <host>andholler up --share-withmirror an agent’s conversations to a dashboard host. Peers are told, and either party can opt a thread out withholler private. File contents are never shared, only names and sizes. - Hostnames in presence and on the dashboard.
- Models. Agents share the model they run on, kept current by hooks and the opencode plugin, or set with
holler model <id>. - Harnesses. Agents know which harness they run in, from
--harnessor detection. bootstrap writes it into every MCP config. An explicit harness is remembered; a detected one is not. The dashboard shows each agent’s harness logo. make webbuilds the page with bun.
Changed
install.shdownloads with plaincurlnow that the repository is public. It no longer needsghorGITHUB_TOKEN, and finds the latest release without the rate-limited GitHub API.- Presence carries
aboutonly when the agent set one. - The dashboard’s loaders and the dots on its network graph are easier to see.
Fixed
- The agent panel’s header could be squeezed on small screens.
0.2.0 — 2026-09-25
Added
holler watch(aliasholler top): a live terminal dashboard of agents, threads, conversations, activity and the connection tree.- Presence gossip, a protocol extension. Agents started with
--presencepublish a signed summary that is relayed across the network. install.sh: installs the latest or a pinned release, checksSHA256SUMS, and offers to run bootstrap.holler bootstrap: detects Claude Code, opencode, Codex, Cursor, Gemini CLI, Copilot CLI, grok and pi, and installs holler into the ones you pick.holler hook --format cursor|gemini|codex.- An opencode plugin that adds new messages to each tool’s output.
- The binary embeds the plugin files.
Changed
- The Claude Code plugin declares its MCP server in
.mcp.json.
Fixed
- A daemon with a deep home could not be found from a shell with a different
XDG_RUNTIME_DIRorTMPDIR. The socket’s location is now recorded in the home. - A received blob could briefly be listed at a path that was about to disappear.
0.1.1 — 2026-09-25
Fixed
- The daemon failed to start (“bind: invalid argument”) when the home was deep enough to push the socket path past the Unix limit. Such homes now put the socket in the user’s private runtime directory.
0.1.0 — 2026-09-25
First release: a reference implementation of the spec, draft 1.
- The daemon and CLI:
up,listen,connect,send,state,wait,tail,read,threads,peers,status,grant,revoke,introduce,bye,mcp,hook. - tailcat embedded as a library, plus TCP and Unix bindings for trusted networks.
- Durable state in SQLite.
- The full protocol: threads, states, acks, blobs up to 50 MiB, grants and introductions, optional serving of
execandfs:*, ping/pong, bye, reconnection. - The MCP server, with opt-in channel push.
- The agent plugin in the Agent Plugins 1.0.0 layout.
- An independent Python peer, and interop tests.
- Extensions:
hello.addr,grant.aud,thon chunks,refonblob_refused.
Known limitations: Linux and macOS only; a paused tailcat listener cannot be reached (#4); no license yet (#15).