A coding agent changes what a phone is for. The work happens on a machine somewhere else and takes minutes at a time, which means the useful mobile action is not typing — it is checking whether the thing is stuck, answering the one question it is blocked on, and putting the phone away again.
There are two good ways to do that, and they are not really competitors.
The short version
- Use the Claude app's Remote Control if you want to steer a Claude Code session and nothing else. It is first-party, it is free, and it requires no setup beyond enabling it. Anthropic documents it at code.claude.com/docs/en/mobile.
- Use a terminal over SSH if you want the machine, not just the agent — a real
shell where you can also read logs, check
git diff, restart a service, run a second agent, or kill the process that is wedged. That is what this guide sets up.
Plenty of people use both. The setup below is also what Anthropic's own guidance suggests running an agent inside: a terminal multiplexer, so the session survives you disconnecting.
The setup
Three pieces, and only the middle one is unusual.
1. Reach the machine
Your agent runs on a Mac, a VPS or a box under a desk. You need to be able to SSH to it from outside your network. Either forward a port, or — much better — put both devices on a private network like Tailscale so nothing is exposed publicly.
Use key authentication, not a password. In Tessera, generate a key on device and install the public half on the host; the private key stays in the iOS Keychain and can be locked behind Face ID.
2. Put the agent inside tmux
This is the piece that makes the whole thing work.
iOS suspends apps aggressively. The moment your screen locks, a plain SSH session
is on borrowed time — and if the connection dies, whatever was running in it dies
too. tmux moves the lifetime of your work off your phone and onto the server:
tmux new -A -s agent
claude # or: codex
Now the agent is running inside a tmux session named agent, on the server. Close
the app, lose signal, reboot the iPad — the agent keeps going. Reconnect and
tmux attach -t agent puts you back exactly where you were.
Tessera can do that attach for you automatically when it connects, so reopening the app is the reattach.
3. Use mosh for the ride
SSH assumes a stable IP. Phones do not have one — you walk out of the house and Wi-Fi becomes cellular, and the SSH connection is dead.
mosh survives that. It authenticates over SSH, then hands the session to a UDP protocol keyed to the session rather than the address, so switching networks or sleeping the device doesn't break anything. Paired with tmux you get both halves: mosh keeps the connection alive across roaming, tmux keeps the work alive across everything else.
Why a real terminal, and not just a chat client
The first-party mobile clients are good at what they do, and if steering the conversation is all you need, use them. The gap shows up in the moments around the agent:
- The agent finished, and you want to see the diff before it goes anywhere.
- The dev server it started fell over, and you want the last forty lines of the log.
- It has been "working" for six minutes and you want to know if it is actually waiting on a prompt.
- You are running Codex on one project and Claude Code on another and want both.
- Something is wedged and needs
Ctrl-Cand a restart.
All of those are shell, not chat. A terminal gives you the same environment you will sit back down to at your desk — same directory, same session, same scrollback.
Watching several agents at once
Once more than one agent is running, the problem stops being access and becomes attention: which of these is blocked on me?
Tessera's agent center is built for that. It collects Claude Code and Codex sessions from across every connection — tmux windows, panes and plain sessions — into one page, grouped by state: needs input, just finished, working, idle. A blocked agent shows its actual prompt with its options as buttons, so you can answer without hunting for the pane, and answers are re-checked against the live prompt before they are sent, so you never reply to a question the agent already moved past.
It is experimental and off by default — turn it on in settings → experimental → agent center.
A note on cost and honesty
This setup runs the agent on your machine, on your API usage, through a terminal that connects directly to it. Nothing routes through bambouville — there is no bambouville server to route through. That is a design constraint as much as a privacy claim: an app with no backend cannot relay your session even if it wanted to.
Questions
Can I run Claude Code from an iPad?
Yes, in two ways. The Claude app's Remote Control steers a session on a machine you
have enabled it on. Or you can SSH into that machine from a terminal app and run
claude inside tmux, which gives you the full shell alongside the agent. The
second approach also works with Codex, opencode and anything else that runs in a
terminal.
How do I keep Claude Code running when I close the app on my phone?
Run it inside tmux on the server: tmux new -A -s agent then claude. The session
belongs to the server, not to your phone, so suspending or killing the terminal app
does not stop the agent. Reconnect and reattach to pick it up.
What is the best iOS terminal for monitoring coding agents?
If you want a purpose-built agent cockpit with an approval inbox and Apple Watch actions, Moshi is the most developed. If you want a real shell underneath — logs, git, services, any agent — Tessera's agent center does that and the app is free with every feature included. Secure ShellFish has also added agent detection and push notifications.
Do I need mosh, or is SSH enough?
SSH is enough if you stay on one network and keep the app open. If you move between Wi-Fi and cellular, or lock the device, mosh is what stops the connection dying. Use mosh for the connection and tmux for the work — they solve different halves of the problem.
Is this better than Claude Code's own Remote Control?
Not better — different. Remote Control is first-party, free and requires no setup, and it is the right tool for steering a Claude conversation. A terminal gives you the whole machine and every agent on it, at the cost of setting up SSH access. Many people run both.