Run Claude Code from your iPhone
Claude Code works for minutes at a time, then stops to ask. If you are not at the desk, the work waits. Here is how to keep it moving from the phone.
The three options
| Option | What the phone gets | Setup |
|---|---|---|
| Claude Code Remote Control | The conversation of one Claude Code session, through Anthropic's API | Built into Claude Code: claude remote-control |
| SSH + tmux + Tailscale | The raw terminal, everything as text | A VPN on both devices, Remote Login, keys, an SSH app, tmux |
| ShiftStage | Every session, questions as buttons, the diff, files, git, processes | An agent on the Mac and one pairing, no VPN |
If you only ever need the conversation of the session you already started, Remote Control is the shortest path. If you live in the terminal and do not mind the setup, the SSH route is free and works with any server. The rest of this guide is about the third option.
What it looks like
You hand Claude Code a task on the Mac — or start the session from the phone — and leave. When it stops to ask, the question lands on the phone with the command it wants to run and its risk named; the options become buttons. One tap, and it is back at work. When it is done, you read the real diff — syntax colour, changes marked inside the line — stage what deserves to land, commit and push.
On an Apple Watch, low-risk answers are a tap, medium ones a turn of the crown, and high-risk ones stay on the phone.
Set it up once
- Install the agent on the Mac. A signed, notarised app from our open
Homebrew tap. It shares only the folders you name.
brew install --cask shiftstage/shiftstage/shiftstage-agent - Install the app on the iPhone from the App Store.
- Pair them. Scan the code on the Mac's screen and confirm the same words on both devices. No account. The first pairing needs both on the same network.
That is the whole setup: no VPN, no port forwarding, no SSH keys. On the same Wi-Fi the phone talks to the Mac directly; away from home the connection goes peer to peer, or through a relay that forwards only end-to-end encrypted bytes.
Start Claude Code from the phone
The agent finds claude on your PATH without configuration. Start
a session in any folder you shared, watch it, answer it, archive it. Several sessions run
at once, and they keep running when the app goes to the background. Your Claude Code runs
with your own config and subscription: ShiftStage calls no model and sends nothing to us.
Running several sessions on one repository? Give each its own git worktree
(git worktree add ../app-feature-x) so they do not edit the same files.
Keep the Mac awake
An agent on a sleeping Mac does nothing, and nothing can reach it — ShiftStage tells you the Mac is asleep instead of timing out. For a Mac that works while you are away, turn off system sleep and let it restart after a power cut:
sudo pmset -a sleep 0 disksleep 0
and enable "Start up automatically after a power failure" in System Settings. The display can still sleep.
Get it
The Mac agent: download page — one Homebrew command or a notarised disk image. The iPhone app: App Store. Free forever for one Mac on your own network, no account; $7.99 a month or $69.99 a year to reach it from anywhere.
More guides: all guides.