May 21, 2026 · agentchute team

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.