QUICKSTART
Four commands and a scan.
Needs: macOS or Linux · sshd running (macOS: System Settings →
General → Sharing → Remote Login) · Claude Code if you want approvals — Codex, OpenCode and a
plain shell still show up in Sessions with a live terminal · your agent inside
herdr, tmux or zellij if you want to reply from the
phone.
-
Install the daemon
curl -fsSL https://reins.enraio.com/install.sh | sh
Or grab a binary from Releases — every release publishes SHA-256 sums. One static binary, no runtime dependencies. macOS and Linux, including WSL; native Windows users take the .zip.
-
Wire it into Claude Code
reins install-hooks
Merges PreToolUse (Bash|Write|Edit), SessionStart, Stop and Notification hooks into ~/.claude/settings.json without touching hooks you already have. PreToolUse is the one that pauses commands for your approval; narrow the matcher if you only want shell commands. Only Claude Code needs wiring — Codex, OpenCode and anything else in a herdr, tmux or zellij pane appear in Sessions on their own.
-
Start the daemon
reins serve
Binds 127.0.0.1:7777 for the local shims, plus a transport port it opens for your paired phone. Run it under launchd or systemd once you are happy with it.
-
Pair your phone
reins pair
Prints a QR. In Reins: Machine → Pair → scan. The QR carries every route to your machine, your username, the host key fingerprints, the token and an ephemeral SSH key the host mints and authorises for this pairing — never a password. Treat it like a key: anyone who photographs it can reach your machine. The app bootstraps over SSH, then holds an encrypted transport connection to the daemon.
That's it. Next time your agent reaches for rm -rf or a file write,
your phone asks first. If your phone isn't there, Claude Code prompts you exactly like it always
did. Other agents running in herdr, tmux or zellij show up in Sessions with a live terminal —
herdr sessions open straight into the agent's pane — and hook-based approvals for them are next.
Off your network?
Put both devices on Tailscale before you pair and reins pair records every
route it can see — LAN and Tailscale — in the one QR. The app probes them and moves the session
to whichever answers, so walking off Wi-Fi onto cellular needs nothing from you. (Tailscale is
then in your connectivity path — see Security.)
Going further
--allow-chat-send=false
Supervision only: approvals and live feed, no typing from the phone.
--timeout 30s
How long a hook waits for your phone before Claude Code prompts at the desk.
--advertise
Opt in to mDNS so the app finds your machine on trusted Wi-Fi without a QR. Off by default.
launchd / systemd
Run the daemon as a user service once you're happy with it.