Reins

Remote control for AI coding agents · iPhone & Android · free

Run your coding agents
from your phone.

Your agent reaches for a command it shouldn't run alone — and your phone asks you first. Watch it work, reply, or take over in a real terminal, from anywhere. Approvals run on Claude Code today; Codex and OpenCode you can watch and take over.

  • Approve or deny risky commands
  • Follow the conversation live
  • Real SSH terminal

Free, no account, no cloud relay — just SSH to a Mac or Linux machine you already have. Approvals are wired for Claude Code today; the terminal works with any agent.

HOW IT CONNECTS

Phone to laptop. Nothing in between.

Most remote-control tools route your phone through their server, then encrypt so the server can't read your work. Reins has no server. Your phone opens an SSH connection to your own machine — the same way you'd ssh you@yourbox from a laptop.

THE USUAL WAY

Works from anywhere with zero setup. Also: a server that sees who you are, has to stay up, and needs an account.

REINS

SSH · your key · the only thing on the wire

Nothing to sign up for, nothing to breach, nothing that can go down. The trade: your machine has to be SSH-reachable. How that works →

WHAT YOU CAN DO

Three things it does. Nothing it pretends to.

Approve before it runs

Bash, Write and Edit pause for your yes. Destructive commands get a plain-English warning and a hold-to-approve — no accidental green button. Wired for Claude Code's hooks today; any agent with a pre-execution hook can plug in.

PreToolUse → phone
waiting…allow / deny

Follow along. Then take over.

The live conversation, tool calls and diffs on your phone. When reading isn't enough, one tap opens a real SSH terminal. Under herdr that lands you in the agent's exact pane; tmux and zellij sessions attach from the picker.

sam@mbp-m3 reins % git diff --stat
2 files changed, 51 insertions(+)

It can't lock you out

Phone asleep? Daemon crashed? Reins produces nothing, and Claude Code falls through to the prompt it would have shown you anyway. The failure mode is Claude Code, unchanged.

no phone connected → exits now
no answer in 60s → normal prompt

THE TRADE, IN FULL

Removing the middleman costs something. Here's what.

Every one of these is a consequence of having no server. If they matter more to you than the middleman, a relay-based tool is the right call — and we'd rather say so than have you find out on the train.

  • Your machine has to be SSH-reachable.

    Behind CGNAT, on hotel wifi with client isolation, on a locked-down corporate network — a relay works and Reins doesn't. Tailscale fixes it for most people, but that's a second thing to install.

  • Notifications need the app alive.

    Waking a killed app needs a server holding a push token. We don't have one. Alerts arrive while Reins is open or in the background, not after iOS has killed it.

  • No history while your machine is off.

    Reins reads transcripts off your disk. Laptop closed, nothing to read.

  • Replying needs herdr, tmux or zellij.

    Sending a message from the phone types it into the terminal where your agent runs. A bare terminal has no API for that. Answering a question card needs herdr specifically, whose socket API the app drives. Approvals and the live feed work regardless.

  • One paired machine, for now.

    The protocol already carries hostnames; the app stores one pairing. Multi-host is the next big piece.

FOUR COMMANDS AND A SCAN

One static binary, no runtime dependencies. SHA-256 sums on every release.

Small enough to read over a coffee — and you should, because a privacy claim you can't check isn't worth much.

# install
$ curl -fsSL https://reins.enraio.com/install.sh | sh
# wire it into Claude Code's hooks
$ reins install-hooks
# run it — binds 127.0.0.1:7777, nothing exposed
$ reins serve
# pair — prints a QR, never a password
$ reins pair

Your agents, in your pocket.

One email when your build is ready — the TestFlight or APK link, and nothing else. No account, no newsletter; your address is deleted the moment you ask.