Claude Code on iPhone, iPad & Android
Run Anthropic's Claude Code on your own server and drive it from your phone with HQSSH: one-tap launch, persistent sessions, Shift+Tab mode cycling, scrolling that works, and a notification when Claude needs you.
Updated
Claude Code is a terminal program. It runs on a computer with your repos and toolchain, not on the phone. HQSSH connects your iPhone, iPad or Android phone to that computer over SSH and adds what a phone needs to drive Claude Code well: sessions that outlive the connection, keys that are hard to type on glass, and an alert when Claude stops to ask you something.
What HQSSH adds for Claude Code
| Plain SSH app | HQSSH | |
|---|---|---|
| Start Claude Code | Type the command | LAUNCH CLAUDE on any project |
| Survives a dropped connection | Only inside tmux | Yes, sessions live in the hqsshd daemon |
| Shift+Tab (permission and plan modes) | Usually missing | One tap on the agent toolbar |
| Scrolling inside Claude Code | Often scrolls the wrong thing | Swipe scrolls the conversation |
| Alert when Claude needs input | No | Phone notification, even for sessions you aren't viewing |
| Screenshot into the prompt | No | Image button uploads it and pastes the path |
| Authentication | Any | Any: subscription, API key, Bedrock, Vertex, gateway |
Launch it with one tap
Install the daemon on the machine once (Linux or macOS):
$ curl -fsSL https://hqssh.com/install | shThe daemon finds your git projects and checks which agents are installed. Open a project in the app and tap LAUNCH CLAUDE. Claude Code starts in that directory, in a session that keeps running when you lock the phone, change networks or close the app. Open it again from your phone, your iPad or the hqssh attach desktop command and you're back in the same conversation, scrollback included.
Built-in snippets cover the usual restarts: claude, claude --continue and claude --resume.
Keys Claude Code needs
Claude Code is driven by a few keys that phone keyboards don't have. The HQSSH agent toolbar puts them above the keyboard:
- Shift+Tab cycles between normal, auto-accept and plan mode.
- Esc interrupts Claude mid-task.
- Ctrl+C, Ctrl+D, arrows, Page Up/Down, copy and paste.
On an iPad with a Magic Keyboard the hardware keys work directly, including Option+arrow word movement and Cmd+= / Cmd+- to resize the text.
Scrolling that works
Claude Code draws its interface on the terminal's full-screen buffer and reads mouse-wheel events to scroll. Many mobile terminals send the wrong events, so a swipe either does nothing or scrolls the wrong buffer. HQSSH turns a swipe into the wheel events Claude Code expects, so you scroll the conversation itself. When you reattach, the daemon restores those screen modes so scrolling keeps working.
Know when Claude needs you
Claude Code rings the terminal bell when it finishes a task or waits for a decision. The daemon watches every session on the machine, so HQSSH notifies you even about a session you aren't looking at, and lists it under NEEDS ATTENTION in that machine's activity feed.
With the app closed, the daemon can push the same events to an ntfy topic:
# ~/.hqssh/daemon.yaml
events:
webhook_url: "https://ntfy.sh/your-private-topic-name"
If no alerts arrive, open /config in Claude Code and check that notifications use the terminal bell.
More from your phone
- Send a screenshot. The image button uploads a photo to the server and pastes its path into the prompt, so Claude can read it.
- Preview what Claude built. If Claude starts a dev server, the globe button forwards its port over SSH and opens it in your phone's browser.
- See every Claude session in the project. Sessions you started in a terminal on your laptop show up too, with a button to end them.
- Run headless tasks. Save a prompt as a task and HQSSH runs
claude --printwith it on the server and keeps the output for you to read later.
Related
- How to run Claude Code from your phone: every option, including tmux and Anthropic's Remote Control.
- Claude Code Remote Control vs HQSSH: when the official remote is enough and when it isn't.