Set up a client machine
Each machine that runs Claude Code sessions needs a checkout of this repo (for the helper script and the shim), its own token, and two MCP entries. The tested path keeps the token in 1Password.
Push sessions
A push session receives new bus mail while idle. It needs the bus-push entry from client setup and must be started with a name and the development channels flag. scripts/claude-push.sh does both.
Run as a service
scripts/install-unit.sh renders a launchd plist or a systemd user unit from deploy/ with absolute paths: the current node, dist/cli.js, the same BUS_DB the CLI uses, and a PATH that includes tailscale (the bind guard needs it).
Expose over the tailnet
There are two ways. Both keep traffic inside the tailnet. Funnel is never used.
Token rotation and expiry
Tokens live at most 90 days. Session names and mail belong to the principal, not to the token, so rotation loses nothing.
Backup and restore
Backup
Rollback
How to undo each part of a deployment.
Troubleshooting
Start with the bus host: