See and steer your coding agents from your phone.
A mobile web app for Xirp, the agent desktop app from Spotify. The sessions running on your Mac — Claude Code, Codex, Gemini, or whatever else Xirp is driving — can be watched and answered from an iPhone or Android without going back to the desk. It runs on your own network, not through anyone's cloud.
Screenshots from a phone. The machine, project and session names are made up; the layout, spacing and colours are the real thing.
curl -fsSL https://raw.githubusercontent.com/AboveColin/remote-for-xirp/main/install.sh | sh
That drops a universal binary into ~/.local/bin and stops. Nothing starts
listening because you piped a script into a shell — starting it is one explicit
command, which prints a QR code to scan with your phone:
xirp-remote interfaces # which address can a phone reach?
xirp-remote install --generate-key # start it, and print a QR code
Several machines running Xirp, each with its projects and their sessions.
The pane is the actual one, so slash commands, model pickers and permission prompts work without this app knowing they exist.
What a session changed, uncommitted and against its base branch, with the file diff and a link to the branch's pull request.
Web Push with the app closed: when an agent finishes a turn, when a session ends or fails, and when one wants an answer. The first of those is the status Xirp sets only when nobody is at the desk.
The bridge follows the daemon's own broadcasts and streams what changed, so a session that finishes shows up in about a second. A poll stays underneath for a phone that slept through it.
Xirp holds a request for half a second, then its own dialog takes over. So the app reads the numbered menu the agent drew in its terminal and offers those numbers as buttons. It shows nothing when it cannot see a menu.
Written to a temp folder on the Mac, with the path put in the agent's input unsent, so you still say what to do with it. Nothing lands in your repository.
The prompts you keep in Xirp on the desktop, one tap away. Tapping one fills the composer and stops there, so sending stays deliberate.
Start a session with a project, agent and model. Fork one that went the wrong way, or hand it to a different agent.
The access key travels in the URL fragment, so it never reaches a server log, and the page clears it from the address bar.
Follows the phone, with an override in Settings. The terminal stays dark in both: the agent chose its ANSI colours for a dark background.
It reaches 35 of the daemon's 223 request types and listens to 9 of its broadcasts. No git writes, no terminal attach, no session deletion, no settings changes. Approving a permission prompt through the API is still absent, because the daemon holds a request for about half a second before its own dialog takes over, which no human beats. What the app does instead is answer that dialog: it reads the numbered menu the agent drew and types the number, and shows nothing when it cannot see one.
No. The host has to be macOS, because the Xirp daemon's access token exists only in the desktop app's process environment, which only the same user on the same machine can read.
No. The binary runs on your own Mac and serves the app over your own network. There is no account and no third-party relay. Web Push notifications are the one exception: their payloads are end-to-end encrypted per RFC 8291 before they reach the browser vendor's push service.
No, and it is left out on purpose. The daemon holds a permission request open for about half a second before falling through to the agent's own dialog, which is too short for any polling client to catch. Use the real tmux pane view, where the agent's own prompt appears and can be answered.
Yes, in the terminal view. It shows the session's actual tmux pane, so slash commands, model pickers and any other interactive prompt work without this app needing to know they exist.
No. The installer places a binary and stops. Starting the service is a separate
explicit command, xirp-remote install, which also prints the QR code
for pairing.
No. Xirp is a Spotify product; this is an unaffiliated third-party app that talks to the Xirp daemon's local API on your own machine. It is not made, endorsed or supported by Spotify, and it is MIT licensed.
Xirp is a desktop app from Spotify for running coding agents — Claude Code, Codex, Gemini and others — in parallel git worktrees on macOS. It exposes a local WebSocket API on the machine it runs on, which is what this app talks to. This does not replace it: Xirp has to be installed and running.