Reins

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.