Move the keyboard, not the work
The coding agent that can actually change my code lives on my laptop — my repo, my branch, my uncommitted work. So I stopped trying to move the work to a server and put a phone client in front of the process instead.
You get the idea on the bus. You write it down. By the time you are back at the desk it is smaller than it was.
The usual fix is to move the work somewhere else — a hosted agent, a cloud
sandbox, a copy of the repo that is not quite the repo. That copy does not have
your uncommitted changes, your node_modules, or your logins. It is a different
computer pretending to be yours.
remote-ai-chat takes the other option: leave the process where it is and move the keyboard. A small daemon runs on the Mac and speaks WebSocket over the tailnet. The phone is a client. The agent never leaves home.
The three things that actually mattered
Approvals have to be real. An agent you cannot supervise from the bus is one
you will not let near anything important. rm -rf arrives as a push
notification with the exact command in it, and nothing runs while you decide.
Dangerous commands stop even in bypass mode — that carve-out is what makes bypass
usable at all.
Turns have to survive the tunnel. Phones lose signal in a way laptops do not. The turn runs on the computer and the transcript is the source of truth; closing the app, dropping to no bars, going into the subway are all the same event — the client reconnects and catches up. Nothing is streamed into the void.
No API key in the middle. The daemon drives the CLI I am already signed into, on my own plan. The app shows how much of the five-hour window is left, which is the number you actually want on a phone.
The part I did not expect
Voice. I assumed dictation would be a novelty and it became the primary input — a bus is not a desk, and a two-sentence spoken instruction is usually enough context for an agent that already has the repo. The daemon transcribes locally, the agent gets text, and the bubble keeps the audio so you can hear what you actually said when the result surprises you.
It is open source. The README has screenshots, which is the honest way to show a phone app.