LocalHarness — the mobile plugin
Mobile
← the plugins /mobile
Install the mobile extra, run localharness mobile, and scan the QR code with your phone.
how it works
- one command localharness mobile serves the page and its event API, and stops when the command does.
- this machine only it listens on loopback unless you pass --allow-unsafe-bind; your own proxy publishes it.
- a token on every request the pairing QR code carries it, out of every server log, so you never type it.
- notifications on the lock screen when a long turn finishes or the gate needs you.
- untrusted labels results from the built-in web tools are labeled untrusted on the phone, not filtered out.
- always-allow takes two steps a second, single-use request confirms it, so one mis-tap cannot grant it.
Setup
Turn it on from the session, fill in its settings, and it checks they work; your coding agent can do the hardware part.
~/project — localharness start
shipped
qwen3.6-27b ~/project
Plugins: mobile, memory, autoresearch
❯ /plugins enable mobile
Restarting with mobile on — your conversation is kept.
Phone address, the URL your phone opens (Enter: `localharness mobile` guesses it):
✓ mobile enabled in ~/.localharness/overrides.yaml
Checking it now:
i mobile: not enrolled yet
`localharness mobile` generates its app token on first run
Or paste this into your coding agent to set it up for your hardware:
Run `localharness mobile`, then scan its pairing QR with your phone.
Restarted with mobile on. Your conversation continues.
mobile: on, but not set up yet — not enrolled yet
in a session: /plugins enable mobile · from a shell: localharness plugins enable mobile
paste into your coding agent to set it up for your hardware
Set up the LocalHarness phone app on this machine. Install LocalHarness with its mobile extra, keeping the extras I already use. Run `localharness mobile` and leave it running: it serves the page on this machine only, so do not pass --allow-unsafe-bind. To reach it from my phone, put it behind a private network I already use, for example `tailscale serve --bg 8765`, rather than opening a port to the internet. You are done when `localharness doctor` shows web enrolled and my phone has scanned the pairing QR. Surfaces
where you reach it
- localharness mobile serves the phone app; --rotate-token cuts off every paired phone.
- --incognito · --replay · --ui-dir pictures kept out of the phone’s cache, a recorded session, or your own page.
- slash commands none; the phone page has no command menu.
- mobile.public_url the address your phone opens, saved once, machine-level only; the port and bind address stay flags.
- /plugins enable mobile inside a running session: until it is set up, asks what it needs and checks it; then restarts with your conversation kept.
- localharness plugins disable mobile on once the mobile extra is installed; disable removes the channel and the command.