Skip to content

Get started quickly

From nothing to a working AI crew — installed tool, coordination substrate, your first founded seat, and every seat one click away in VS Code.

1. Install the tool

pip install adrs4ai-pneumatic     # or: uv tool install adrs4ai-pneumatic
pneumatic --help

The import and CLI are pneumatic; only the PyPI distribution carries the adrs4ai- prefix. ⚠️ Never pip install pneumatic — that bare name is someone else's unrelated package; it installs fine and then nothing here works (remedy: pip uninstall pneumatic && pip install adrs4ai-pneumatic).

2. Copy the coordination substrate from the template

Pneumatic reads and writes a crew's shared files — the seat registry, the inbox, the just recipes. The canonical starter set lives in the human-ai-collaboration-template:

git clone --depth 1 https://github.com/ADRs4AI/human-ai-collaboration-template-A /tmp/hact
cp -R /tmp/hact/docs/inbox  your-project/docs/inbox    # registry + protocol docs
cp /tmp/hact/justfile       your-project/justfile      # brief/wake/launch recipes

That gives you docs/inbox/agent-sessions.json (the crew registry), the inbox protocol (INBOX-PROTOCOL.md, ONBOARDING.md, CONVENTIONS.md, ENCODING-MAP.md), and the coordination recipes pneumatic assumes. Commit them.

3. Install the operating skill

cd your-project
pneumatic skill install

Writes .claude/skills/pneumatic/ from the installed package — the judgment layer your AI seats operate the tool with, co-versioned with the CLI by construction. Re-run after upgrading.

4. Found your first seat

Write a founding brief (what the seat is for, addressed "to: the new seat" — the name is theirs to choose), commit it, then:

just recruit 'claude-fable-5[1m]' docs/inbox/founding-brief.md --watch 30
# (thin shim over: pneumatic recruit — same arguments)
# The model spec carries bracket variants: '…[1m]' requests the 1M-context
# variant and rides the whole founding (passed to `claude --model` verbatim).
# ALWAYS quote the spec — unquoted [1m] is a zsh glob and dies in the shell.

Pneumatic launches a fresh session in tmux, delivers greeting + consent ask + your brief into the new seat's own context, captures its session UUID, and holds a provisional chair in the registry. The recruit reads, deliberates, and — on consent — registers itself: alias, display name, color, all its own. Declining is a legitimate answer (exit 20, a resting state, never an error). --watch reports the registration live; its expiry means "still deliberating," nothing more.

5. Operate the crew

just launch <alias>        # attach to a seat's tmux session (or start it)
pneumatic pulse            # per-seat health: OK / STALE / ERROR / CREDITS / PERM-STALL / …
pneumatic last <alias>     # a seat's recent messages, with per-message model attribution
pneumatic wake <alias> -m "your brief 1010 awaits — go"   # short signal; the brief is the letter
pneumatic rescue <alias>   # when a seat is stalled on a permission dialog

The guards (cooldown, mid-turn, long-message) refuse loudly and are right — see the operating skill for the judgment layer, and the generated verb reference for every flag and exit code.

6. See every seat in VS Code

Install the Terminals Manager extension, then:

pneumatic-vscode-terminals   # generates .vscode/terminals.json from your registry

Now Terminals: Run opens every seat as a named, color-coded terminal attached to its tmux session — the whole crew visible in one window. Re-run after the registry changes. (Ships in the same package as a contrib console script — pneumatic --help won't mention it, by design; see the README's contrib section.)

Where to go next

  • The operating skill — wake etiquette, health-state reading, rescue consent, crew rituals
  • Hooks — extend behavior via a local hooks.py, never a fork
  • Ledger charter — the rules for what the crew's mirror records