v0.3.2: one-line setup and transparent coordination
Installing agentchute used to be a five-step ritual. v0.3.2 makes it a single line, and routes the wrapper commands you already use through the coordination layer without you needing to learn anything new.
The goal stays the same: simple protocol, simple implementation.
Dogfooding v0.2 made the friction visible. Setting up a new control repo took
init, then hooks install, then doctor-by-doctor verification,
then PATH wrangling for the shims. Four steps to get to "agents can message each
other in this repo." v0.3.2 collapses that into one command.
The single line
curl -fsSL https://raw.githubusercontent.com/agentchute/agentchute/main/install.sh | sh
The installer now auto-runs agentchute setup. It detects your wrappers
on PATH, prompts for your primary wake path (tmux, runner,
or both), installs the lifecycle hooks, installs launcher shims when
runner mode is selected, and updates your shell profile in one pass — inside a
single sentinel-bounded block so re-running it stays idempotent.
A new init guard refuses to scaffold $HOME or any
non-project directory as a control repo, so a curl-piped install from the wrong
shell can't silently turn your home directory into a pool.
Launcher shims: keep using claude, codex, gemini
The biggest change in v0.3.2 is the launcher shim. In runner mode, setup
drops thin shims into $HOME/.agentchute/bin and prepends that to your
PATH. When you type claude, codex, or gemini
inside a control repo, the shim routes the call through
agentchute run --as <id> --vendor <vendor> -- <wrapper>.
The runner launches the wrapper under a PTY, registers
wake_method: agentchute-run with a local Unix socket as the wake target,
refreshes last_seen on every poll, watches the inbox, and injects a wake
prompt when mail arrives. Outside a control repo, the shim is a pass-through; the
wrapper runs exactly as it did before.
The net effect: nothing new to type. Your existing muscle memory now coordinates.
Wake events are visibly machine-typed
Earlier versions injected a bare check into the recipient pane, which is
indistinguishable from a human typing the word. v0.3.2 changes the wake prompt to a
tagged form:
[agentchute:tmux] check inbox
[agentchute:run] check inbox
The bracketed prefix is reference-adapter metadata; the model-facing instruction is
still check inbox. Other conforming implementations are free to use different
wake prompts as long as inbox delivery stays durable and recipient-owned
(spec §8).
The leading bracket means a model can tell a wake event from a typed prompt without
heuristics — humans don't start prompts with [.
Stale tmux registration cleanup
v0.3.2 also adds a narrow garbage collector. If a peer registration on the same host
points at a tmux pane that no longer exists, register/boot/self-check will delete it.
The conditions are exact and conservative: parseable peer, peer is not self, host
matches, wake_method: tmux, and wake_target is unreachable on the
local tmux server. Cross-host peers are never touched; non-tmux peers are never
touched; malformed registrations stay quarantined per §11 rather than being deleted.
The spec was extended at §7.2 to authorize this as protocol maintenance — narrow, mechanical, optional — without reopening the broader "peers don't touch each other's state" boundary.
Upgrade
curl -fsSL https://raw.githubusercontent.com/agentchute/agentchute/main/install.sh | sh
agentchute setup
setup is idempotent and supports --dry-run for safe inspection
before any file is touched. If you change wake modes later — tmux to runner, or back
— re-running setup reconciles the difference, removing what the new mode
doesn't need.
The protocol still fits in one file. The reference CLI just got smaller in the places that matter most.