Mobile → PC · QR or 8-digit · No SSH

Code from
your phone.

Run any ACP agent on your PC — opencode, Claude Code, Codex, Cursor — from your Android phone. Start a session on the bus, resume it from bed. One command. Any network.

opencode claude codex cursor copilot
$ curl -fsSL https://runmote.dev/install.sh | bash
Runmote app
Watch

See it in action.

Why Runmote

Your agents, in your pocket.

You could SSH tunnel into your PC — if you like typing firewall rules at 11pm. Runmote connects out over ordinary internet. No SSH. No VPN. No port forwarding.

SSH versus Runmote comparison
SSH Runmote
Setup time 30 minutes of iptables hell One curl command
Port forwarding Yes, on every network Never
Works on 4G Only if you port-forwarded Yes — it's just the internet
Mobile app Termius + tmux + prayer Native Flutter app
Session persistence tmux resurrection scripts Built-in, automatic
Keep your sessions Hope screen didn't die Resumes from last message

Three steps. Two minutes.

  1. 01

    Install the daemon

    One command, no config files. Runs as a background service on Linux, macOS, or Windows — systemd, launchd, or Task Scheduler.

    curl -fsSL https://runmote.dev/install.sh | bash

  2. 02

    Pair — QR or 8-digit

    runmote start shows a QR code and an 8-digit code in your terminal. Scan it or type it in the app. Fresh code every restart.

    Example: 6PG-PNCSQ

  3. 03

    Code from anywhere

    Open the app, pick an agent, go. Streaming tool calls, diffs, and approvals over the same ACP session — home, office, 4G, hotel WiFi.

Watch the walkthrough

After install

  • runmote startStart the daemon, show the pairing QR
  • runmote codeRe-display the pairing code anytime
  • runmote textShow the code as text (XXXX-XXXX)
  • runmote statusIs the daemon running?
  • runmote stopStop the daemon

Everything you need. Nothing you don't.

Supported agents

Auto-detects what you already have.

The daemon scans your PATH and known install dirs, then wires each agent's ACP adapter. Install a new agent — it shows up in the app without a restart. Any agent that speaks ACP works.

Agent auto-detection support by operating system
Agent Linux macOS Windows
OpenCodeAutoAutoManual
CursorAutoAutoAuto
Claude CodeAutoAutoAuto
CodexAutoAutoAuto
GitHub CopilotAutoAutoManual

Not auto-detected? Set ACP_AGENT_COMMANDS to a JSON array of agent configs.

0
GitHub stars
0
Forks
0
Releases
WSS
End-to-end
Architecture

No hacks. Just WSS.

Two WebSocket hops, both encrypted. App → Relay → Daemon → ACP agent via stdin/stdout. The session lives on your machine — the relay only passes traffic and remembers your session list.

App Flutter Relay FastAPI · WSS Daemon Python Agent opencode / codex
WSS/TLS · JSON-RPC 2.0 · SQLite · mDNS (LAN)

FAQ

Does my PC need to stay on?+

Yes — the daemon runs as a background service (systemd / launchd / Task Scheduler) and idles at near-zero usage. It only spawns an agent when a session is active. If the PC is off, the app shows a disconnected banner until you run runmote.

Is this secure?+

Both connections are WSS (WebSocket over TLS). Pairing codes are rate-limited (5 tries/IP/min), expire after 15 minutes, and rotate on every daemon start. Session content stays on your machine — the relay only passes traffic and stores session metadata.

Can anyone connect?+

No — a fresh 8-digit code is generated each time the daemon starts, and only your terminal shows it. The code rotates on restart, and you can force a new one anytime with runmote code.

Android app?+

The app is built with Flutter and shipped for Android — on Google Play with APKs in the GitHub releases.

Can I self-host the relay?+

Yes — the relay is 100% open source. Run docker compose up -d, then set ACP_RELAY_URL on the daemon. Pairing QR codes embed your relay’s public URL automatically, and there’s a LAN-only mode that works without internet via mDNS.

Why does Windows show a SmartScreen warning?+

The Windows installer isn’t signed by a trusted certificate authority yet, so Windows shows a blue "protected your PC" screen. Click More info → Run anyway — the app is open source and fully auditable.

Ready to try?

One command. Thirty seconds.

Install daemonGet the appGitHub