Claude Code on your phone: every honest route

Claude Code does not need to run on the phone for the phone to control it. Ask where the agent runs, how the phone reaches it, and what survives when the connection, app, or host disappears.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

There are five practical routes. SSH exposes the host terminal; tmux preserves the process, mosh handles roaming, and Tailscale avoids a public SSH port. Anthropic Remote Control connects its mobile app to a local session over outbound HTTPS. Claude Code on the web uses a cloud VM. A self-hosted web terminal adds a browser-facing shell risk. Continuum’s native iPhone app combines cross-provider session controls and fleet state for paired or enrolled hosts.

What you need to know
  • The phone is a controller; Claude Code runs on a host or cloud VM.
  • SSH + tmux is the universal baseline. Add mosh for roaming and Tailscale to avoid a public port.
  • Anthropic Remote Control connects its mobile app to local execution over outbound HTTPS.
  • Claude Code on the web survives your laptop but lacks its local services and untracked files.
  • Continuum’s iPhone app controls a fleet, including sessions, plan/diff/PR state, terminal, files, and limits.
  • No mobile surface removes review. The phone is good for decisions; long-form editing and per-hunk staging still belong at a desk.

First decide where Claude Code will run

There is no useful standalone Claude Code CLI on iOS. The CLI expects a repository, git, toolchains, long-lived processes, a real terminal, and access to the filesystem it changes. Android can provide a more Unix-like environment, but a production repository and full toolchain still belong on stable compute. Treat the phone as its controller.

Every mobile route starts with this architecture choice.

RouteAgent runs onPhone supplies
SSH or moshYour Mac, Linux box, or remote serverA terminal client
Anthropic Remote ControlYour machine, in the Claude Code CLI or VS CodeClaude mobile app or browser UI
Claude Code on the webAn Anthropic-managed cloud VMClaude mobile app or browser UI
Self-hosted web terminalYour machine or serverA browser terminal
ContinuumA paired Mac, enrolled host, or entitled runnerNative session workbench and fleet controls

Three questions expose the trade: what happens when the phone changes networks, the host sleeps, or the controller is suspended? SSH can reconnect; tmux keeps the process; mosh preserves a roaming terminal; cloud keeps the compute. A control plane can reconnect to a session, but cannot make a sleeping local host execute code.

Route one: SSH from a phone

SSH is the universal answer because Claude Code is a terminal application. Connect a mobile client to the repository host, change to the project root, and run claude. You get the same prompts, commands, transcript, and shell output as on a laptop.

On the host. Use a dedicated key and a persistent session.
# from the phone
ssh devbox

# on the host
cd ~/code/app
tmux new -As claude-app
claude

# detach without stopping Claude Code: Ctrl-b, then d

Do not expose password-authenticated SSH to the public internet. Use a key in the phone’s secure credential store, disable password login where practical, patch the host, and restrict the reachable user. The Claude Code over SSH guide covers headless login, token handling, server configuration, and latency.

What plain mobile SSH gives you.

PropertyResult
Local environmentComplete: repository, MCP servers, shell tools, untracked files
Host asleep or offNo connection and no work
Phone app suspendedTCP may drop; the host process dies unless a multiplexer owns it
Network changesUsually reconnect manually
Several sessionsOne tmux window per session; worktrees still required for concurrent writers
Review surfaceTerminal output and ordinary git commands

Add tmux, then add mosh when the network moves

tmux is the first addition, not an optional refinement. It moves ownership of the terminal session from the phone connection to a process on the host. When iOS suspends the SSH client, cellular coverage disappears, or the phone changes networks, Claude Code keeps running inside tmux. The next connection attaches to the same pane and the same process.

A named session that is safe to reconnect to repeatedly.
tmux new -As claude-auth

# later, from any client
tmux attach -t claude-auth

# list everything running
tmux list-sessions

Mosh solves the next layer. It is an interactive remote shell designed for roaming, intermittent connectivity, and local echo. The client authenticates through SSH, then the session uses its own UDP transport and follows the phone when its IP changes. Typing feels immediate on a high-latency link because the client predicts local echo, and a brief dead zone produces an explicit stale-state warning instead of a frozen terminal that looks current.

Mosh does not replace tmux. If the mosh client is killed or the server process exits, tmux is what still owns Claude Code. It also does not provide SSH port forwarding or file transfer, and the server needs an allowed UDP port range. The robust stack is therefore mosh for the moving display, tmux for process persistence, and ordinary SSH for bootstrap, forwarding, or recovery.

Tailscale makes the host private and reachable

Tailscale is the network layer in this stack. Install it on the phone and the host, put both devices in the same tailnet, and connect to the host’s stable MagicDNS name or tailnet address. You do not forward port 22 through the router, track a home IP, or expose a development Mac to internet-wide scans. Access policy decides which identity can reach which machine.

The phone profile uses a name that survives Wi-Fi changes and DHCP.
Host: dev-mac
Address: dev-mac.your-tailnet.ts.net
User: agent
Key: phone-specific Ed25519 key

ssh agent@dev-mac.your-tailnet.ts.net

Tailscale does not keep Claude Code alive, render a terminal, or replace authentication. It provides a private route. You still choose OpenSSH or Tailscale SSH, still need tmux for a durable process, and still need mosh if you want a roaming terminal rather than repeated SSH reconnects. This distinction prevents a common setup failure: installing Tailscale, closing the phone client, and expecting the shell process to survive.

Use a dedicated device identity and remove it when the phone is lost. Restrict the development host in the tailnet policy rather than relying on the default allow-all policy once more people or devices join. If the repository contains production credentials, a private network is only one control; the phone credential, host user permissions, Claude Code permissions, and repository secrets remain separate boundaries.

Anthropic Remote Control is the direct Claude answer

Anthropic ships a phone-native route for Claude Code itself. Start server mode with claude remote-control, start an ordinary interactive session with claude --remote-control, or run /remote-control inside an existing session. The session appears at claude.ai/code and in the Claude app for iOS and Android, where the phone can read the conversation, send messages, answer questions, and follow subagent or workflow progress.

Three ways to expose a local Claude Code session.
# server mode: start and manage remote sessions
claude remote-control

# one interactive local session that is also remotely visible
claude --remote-control "payments migration"

# from inside a session already running
/remote-control payments migration

Execution and filesystem access remain on the host, including local tools, MCP servers, configuration, and untracked files. The host makes outbound HTTPS connections to Anthropic on port 443 and opens no inbound port. That is materially simpler than exposing SSH. The transcript, messages, responses, and tool activity are stored on Anthropic’s servers while connected so state can synchronize across devices. This is not the same data boundary as a terminal that stays inside your tailnet.

Remote Control requires an eligible claude.ai subscription login. API-key authentication is not supported, and Team or Enterprise owners may need to enable the organization setting. It does not work through Bedrock, Google Cloud Agent Platform, Microsoft Foundry, or a custom ANTHROPIC_BASE_URL. The local process must remain alive, and an extended host network outage can end the session. Run it inside tmux when it is hosted through SSH.

Remote Control versus raw SSH.

QuestionRemote ControlSSH + tmux
Phone UIClaude conversation in the mobile appLiteral terminal
Inbound host portNoneSSH or tailnet path
Local environmentYesYes
Transcript locationSynchronized through AnthropicHost terminal history only
Other coding agentsClaude Code onlyAnything installed on the host
Process after disconnectLocal process stays while healthytmux keeps it explicitly

Remote Control is the most direct answer when there is one Claude Code session and you want the official mobile conversation rather than a tiny terminal. It also supports mobile push when a long task finishes or needs a decision. It is not a fleet dashboard across Codex, Cursor, or several provider accounts, and it does not change the fact that each concurrent writing session needs an isolated worktree.

Web-based approaches are two different architectures

“Claude Code in a browser” can mean an Anthropic cloud session or a browser terminal pointed at your own machine. They share a screen shape and almost nothing else.

Where the browser terminates matters more than the browser.

ApproachComputeRepository viewHost can be off?
Claude Code on the webAnthropic-managed VMFresh clone or uploaded bundle under documented rulesYes
Remote Control in a browserYour machineExact local filesystemNo
Self-hosted web terminalYour machine or serverWhatever the shell user can reachOnly if that host stays on
Continuum web clientPaired host or runnerSession-scoped workbench from the hostDepends on host or runner

Claude Code on the web is the low-setup cloud option. Start from claude.ai/code or the Claude mobile app, or dispatch from a terminal. Anthropic provisions a fresh VM, clones the GitHub repository, and keeps the task available after your laptop closes. That isolation is useful for unattended work. The cost is environment distance: the VM does not automatically have your local database, untracked files, private services, or uncommitted state from the normal GitHub path. The existing Claude Code web guide covers cloud environments, GitHub access, handoff, and limitations.

A self-hosted web terminal such as a browser shell gateway wraps SSH-like access in HTTPS. It can be convenient on a locked-down device that cannot install an SSH client, but it creates a high-value web endpoint capable of running commands. Put it behind strong identity, TLS, short sessions, origin checks, and a private network; do not publish an unauthenticated shell on a convenient URL. You also inherit terminal emulation, clipboard, resize, idle timeout, audit, and patching work that a mature SSH client already solved.

Continuum turns the phone into a fleet workbench

Continuum’s native iPhone app takes a different unit of control: not one vendor conversation, but the session fleet. The agent process runs on a paired Mac, an enrolled Linux or Windows host, or an entitled runner. The phone selects the repository, provider, model, and effort, creates the session, and then opens the same session identity visible on Mac and web.

The published iPhone surface has six session tabs: Chat, Plan, Diff, PR, Terminal, and Files. Chat streams the transcript and sends follow-ups. Plan holds the edit gate until you approve. Diff renders changes by file and hunk for reading. PR shows live GitHub state and a merge action. Terminal is a real remote PTY with mobile keys, and Files previews artifacts the agent wrote. The phone can also interrupt a turn or change the model and effort mid-session.

The honest review boundary is stated on the product page: the phone is for reading and deciding. Per-hunk staging and long-form code editing stay on desktop. That is the correct limit for a small screen. A merge button is useful only after the diff is understandable; it is not a reason to approve code you would have inspected more carefully at a desk.

The differentiator is breadth. The same iPhone workbench controls Claude Code, Codex, Cursor, Gemini, Grok, and OpenCode sessions supported by the host, rather than only Claude. It also shows live provider limits and fleet progress. Conductor is the closest worktree-oriented desktop comparison: its established local app is macOS-first, its current pricing page lists a mobile app as “coming very soon,” and its paid cloud workspaces run in Vercel Sandbox. Continuum’s current site claims the native iPhone control surface as shipped, not announced.

Notifications and limits change the mobile workflow

Anthropic Remote Control can push when a long-running task finishes or needs a decision, subject to its settings and the mobile notification permission. Continuum’s site claims turn-complete and plan-attention pushes that identify the session and repository, plus Live Activities and widgets for active session count and provider limits. Those are different signals: a completion notification routes attention, while a 5-hour or weekly gauge tells you whether starting another parallel run is sensible.

Security depends on which route you chose

Remote control expands the credential boundary. A phone that can send a prompt to an agent can cause that agent to read files, run commands, call MCP tools, and change a branch within its existing permissions. Protect the controller as seriously as the development machine: device passcode and biometrics, short credential lifetime where available, remote wipe, and immediate revoke when the device is lost.

The main trust boundary by route.

RoutePrimary credentialData path to understand
SSH / moshPhone SSH key plus host accountTerminal traffic to the host; history stays where configured
TailscaleTailnet device identity and policyPrivate routing; the application protocol still authenticates separately
Anthropic Remote Controlclaude.ai account and short-lived session credentialsTranscript synchronizes through Anthropic while connected
Claude Code on the webclaude.ai and repository authorizationCode is cloned or bundled into an Anthropic cloud environment
Self-hosted web terminalYour web identity and session cookieBrowser gateway has shell-equivalent power
ContinuumAccount or pairing credential plus host bearer authenticationSite claims an encrypted relay or direct MagicDNS path to the host

Keep agent permissions conservative regardless of transport. A safe tunnel carrying an overpowered session is still an overpowered session. Use plan mode for broad work, keep destructive commands behind confirmation, isolate concurrent writers in worktrees, and reserve production credentials for tasks that explicitly need them. On a shared host, use a dedicated OS account and keep personal SSH keys, browser profiles, and cloud credentials outside its reach.

Choose the least complicated route that fits

The short decision table.

NeedUse
Occasional check-in to one machineSSH + tmux
Frequent travel between Wi-Fi and cellularMosh + tmux, usually over Tailscale
Official mobile UI for one local Claude sessionAnthropic Remote Control
Work continues while your laptop is offClaude Code on the web or another cloud runner
Locked-down browser with no client installOfficial web surface; self-host a terminal only if you can operate it safely
Several providers, hosts, sessions, plans, diffs, and quota windowsContinuum
One Mac, several local worktrees, dense desktop reviewConductor; its mobile app is publicly listed as coming soon

Start with SSH and tmux if you already operate a reachable host. Add Tailscale when public reachability is the problem and mosh when roaming is the problem. Use Remote Control when the terminal itself is the problem and Claude-only scope is acceptable. Use a cloud session when host uptime is the problem. Use Continuum when the unit you need to control is the fleet rather than one shell.

01

Keep the host awake and scoped

Use a dedicated development account, a clean repository, worktrees for concurrent writers, and the narrowest credentials the tasks need.

02

Make the process durable

Put Claude Code in tmux before testing any phone connection. Disconnect deliberately and confirm it continues.

03

Choose the transport

Use a tailnet for private host access, mosh for roaming terminals, or an official outbound-only remote surface when a terminal is unnecessary.

04

Test the failure path

Switch from Wi-Fi to cellular, background the phone app, sleep and wake the host, and verify the UI says what is stale rather than implying continuity.

05

Test revoke

Remove the phone credential and prove it can no longer reach the session. Re-enroll only after the boundary is clear.

The right setup is the one you can explain under pressure. If you know where the agent runs, what keeps it alive, which credential the phone holds, where the transcript travels, and how to revoke access, then controlling Claude Code remotely is ordinary operations rather than a trick.

Questions people ask

Not usefully on iPhone. Claude Code expects a repository, git, toolchains, long-lived processes, and broad filesystem access. Run it on a Mac, Linux or Windows host, or a cloud VM, and use the phone as the controller.

The universal route is SSH into the host and attach to Claude Code inside tmux. Anthropic Remote Control provides an official mobile conversation for a local session. Claude Code on the web runs in the cloud, and Continuum provides a native cross-provider fleet workbench.

The phone connection will eventually drop or be suspended. tmux keeps the terminal process and Claude Code session alive on the host, so the next SSH or mosh connection attaches to the same work instead of starting over.

Mosh handles intermittent links and roaming between Wi-Fi and cellular, and uses local echo so typing feels responsive. It authenticates through SSH but uses its own UDP transport. Keep tmux underneath because mosh does not own process persistence.

No, but it is a clean way to reach your host without exposing SSH to the public internet. Tailscale supplies private routing and stable names; you still need SSH or mosh for a terminal and tmux to keep Claude Code alive.

Remote Control runs Claude Code on your machine and exposes it through the Claude mobile app or browser, so local files and tools remain available. Claude Code on the web runs in an Anthropic-managed VM and survives your laptop being off, but starts from its cloud repository environment.

The current Continuum site says yes. The phone can choose a repository, provider, model and effort, create a session on a paired host, send messages, approve or interrupt, and open Chat, Plan, Diff, PR, Terminal and Files tabs.

The site claims diff reading by file and hunk, live PR state, and a merge action. It also states the limit clearly: per-hunk staging and long-form code editing stay on desktop. The phone is for reading and deciding, not replacing a full editor.

Conductor’s public pricing currently lists its mobile app as “coming very soon.” Its established local product is a macOS worktree board, while paid cloud workspaces run on Vercel Sandbox and continue after the Mac app closes.

Sources

Every figure above was read from these pages on 3 August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Claude Code Remote Control
  2. Use Claude Code on the web
  3. Tailscale: connect to devices
  4. Mosh: the mobile shell
  5. Continuum mobile workbench
  6. Continuum pairing
  7. Conductor pricing
Try it

The session stays.
You leave the desk.

Continuum puts the live agent fleet, plan gates, diffs, pull requests, terminal, files, notifications, and provider limits on your iPhone.

free app · your subscriptions · local-first