The Landscape
As of April 2026, the ecosystem for controlling Claude Code from your phone has matured into four distinct categories. Anthropic now ships five official remote features, and the community has built everything from mobile apps to Raspberry Pi command centers. The right choice depends on whether you want zero setup, maximum control, or always-on availability.
Each approach makes a different trade-off between convenience, latency, and power. The official tools require the least setup but offer the most constrained interface. SSH + tmux gives you full terminal access but requires a VPN and some configuration. Chat bridges are the most phone-native but reduce interaction to text messages. Cloud environments bypass your local machine entirely.
/resume, no context reload. Claude Code is still mid-thought. True seamless handoff between desktop and phone.
Network Topology
Three primary architectures for reaching your Claude Code session from a phone, each with different trust boundaries, latency profiles, and failure modes.
Official Anthropic Solutions
Anthropic ships five distinct ways to interact with Claude Code remotely. Each serves a different use case, from live session steering to fire-and-forget async delegation. Plus one official-adjacent open source project backed by the team.
Remote Control GA
Drive a running local session from claude.ai/code or the Claude mobile app. Your machine does the work; the phone is just a window. Start with claude --rc, scan the QR code, and you are in.
- Zero config -- QR code pairing
- Full tool/MCP/filesystem access
- Auto-reconnects on brief drops
- Worktree spawning for parallel work
- Up to 32 concurrent sessions
- Requires v2.1.51+
- 10-min timeout with no network
- Needs Pro/Max/Team/Enterprise plan
- Not a full terminal -- phone is a viewer
# Server mode (headless, multiple sessions)
claude remote-control
# Interactive mode (attach to existing)
claude --rc
# With worktree spawning
claude remote-control --spawn worktree
# Max 8 concurrent sessions
claude remote-control --capacity 8
Dispatch Preview
Send tasks from the Claude mobile app; Claude Code runs them on the Desktop app. Think of it as "async delegation" versus Remote Control's "live steering." Perfect for fire-and-forget tasks.
- Async -- fire and forget from phone
- Push notifications when done
- Remote permission approval
- Keep-awake toggle built in
- Requires Desktop + Mobile apps
- Research preview status
- Less control than live session
Channels Preview
MCP servers that push events into running sessions via Telegram, Discord, or iMessage. Two-way: Claude receives your message AND replies through the same channel. Includes permission relay for remote tool approval.
- Uses apps you already have open
- Two-way conversation + replies
- Permission relay for approvals
- Sender allowlist + pairing codes
- Telegram, Discord, iMessage supported
- Requires v2.1.80+
- Events only arrive while session runs
- Bot setup required (BotFather etc.)
- Research preview
# Install Telegram plugin
/plugin install telegram@claude-plugins-official
# Start with channels enabled
claude --channels
Claude Code on the Web GA
Runs in Anthropic-managed cloud infrastructure. No local machine needed -- clones directly from GitHub. Accessible from any phone browser. Different from Remote Control: this runs in the cloud, not on your Mac.
- No local machine needed at all
- Access from any device with a browser
- Great for repos you haven't cloned
- Parallel tasks without local load
- No local filesystem access
- No MCP servers or custom tools
- GitHub-only repos
- Cloud execution latency
Headless / Agent SDK GA
Run Claude Code programmatically with claude -p "prompt". CLI, Python, and TypeScript SDKs. Build custom triggers -- webhooks, cron jobs, Shortcuts -- that fire Claude Code tasks from your phone.
- Full programmatic control
- Python, TypeScript, CLI SDKs
- Combine with any trigger system
- CI/CD integration ready
- Requires building your own interface
- No built-in mobile UI
- Developer-oriented setup
Happy Coder OSS
Open source (MIT) mobile-first interface for Claude Code. iOS + Android + web apps. Multiple sessions, parallel tasks, voice coding, push notifications, E2E encryption. Runs on your hardware, phone is the remote.
- Native iOS + Android apps
- Voice coding support
- Push notifications built in
- E2E encryption
- Multiple parallel sessions
- Self-hostable server
- Requires npm install + running server
- Third-party project (not Anthropic)
npm i -g happy-coder
happy
SSH + tmux: The Classic Stack
The most battle-tested approach. An SSH terminal app on your phone connects through a VPN tunnel to your desktop, where tmux keeps Claude Code alive between connections. About 80 lines of config total, and the entire stack is free.
What the Community Says
Elliot Bonneville
"About 80 lines of config total. Tailscale for networking, tmux for persistence, custom keybindings for mobile. Built the entire setup with Claude Code in ~90 minutes."
- Docker-style random session names ("jolly-panda")
- SSH sessions persist, local sessions auto-close
- No-prefix PageUp/F1 bindings for mobile scrolling
Nick Khami (Skeptrune)
"Shipped production features from the car passenger seat. Every startup trying to solve 'Claude Code on mobile' is building abstractions on top of these primitives."
- Android-focused: Termux + Tailscale
- Port forwarding for testing on phone browser
- 20-minute setup time
Emre Isik
tmux + Tailscale + Termius (iOS) stack. Detailed walkthrough of the full setup with screenshots and config examples for a smooth mobile terminal experience.
Essential tmux Commands
# Start a named session
tmux new -s claude
# Detach from session (session keeps running)
# Ctrl+B then D
# Reattach from phone
tmux attach -t claude
# List all sessions
tmux ls
# Kill a session when done
tmux kill-session -t claude
Keeping Your Mac Awake
The number one gotcha: your Mac goes to sleep while you are on the couch. Three solutions, in order of simplicity:
caffeinate
Built into macOS. One command, no install.
caffeinate -i &
pmset
Granular macOS power management.
sudo pmset -a sleep 0
sudo pmset -a disablesleep 1
Amphetamine
Free Mac App Store app. Menu bar control, triggers, schedules.
VPN & Mesh Networking
The VPN layer is what makes phone-to-desktop SSH work seamlessly through NAT, hotel WiFi, cellular networks, and everything in between. Three main options, but the community has overwhelmingly converged on one.
Tailscale Community Favorite
WireGuard-based mesh VPN that "just works." Free for up to 100 devices. The de facto standard for this use case -- every blog post, every guide, every community recommendation lands here.
- Works through any NAT, firewall, cellular
- Peer-to-peer when possible (low latency)
- Tailscale SSH -- no key management
- MagicDNS for human-readable names
- Install on phone + desktop, sign in, done
- Relies on Tailscale coordination server
- Free tier limited to 1 user (personal use fine)
ZeroTier
Peer-to-peer virtual networking. Similar to Tailscale but with different architecture. Free for up to 25 devices. More manual configuration but fully open source.
WireGuard (Raw)
The protocol underneath Tailscale. Run it directly for maximum control. Requires port forwarding or a public IP. No NAT traversal magic -- you handle the networking yourself.
VPN Comparison
| Feature | Tailscale | ZeroTier | WireGuard (Raw) |
|---|---|---|---|
| Setup time | 5 min | 10 min | 30+ min |
| NAT traversal | ●●●●● | ●●●●● | ●●●●● |
| Free tier devices | 100 | 25 | Unlimited |
| SSH integration | Tailscale SSH (keyless) | Manual SSH keys | Manual SSH keys |
| Mobile app | iOS + Android | iOS + Android | iOS + Android |
| Open source | Client only | Fully open source | Fully open source |
| Self-hostable | Headscale (community) | Controller (official) | Yes (native) |
Mobile Terminal Apps
The SSH client on your phone is where you will spend all your time. A good one makes mobile coding pleasant; a bad one makes it unbearable. Here are the four contenders worth considering.
Blink Shell
Professional, desktop-grade terminal for iOS. The gold standard for serious mobile terminal work. Built-in VS Code support (Blink Code), Mosh for unreliable connections.
- Mosh support (survives disconnects)
- Built-in VS Code via Blink Code
- Excellent keyboard handling
- One-time purchase, no subscription
- iOS only
- $19.99 upfront cost
Termius
Cross-platform SSH client that works on everything. SFTP, port forwarding, snippets. Two-finger swipe sends PageUp -- critical for scrolling Claude Code output.
- iOS + Android + Desktop
- Good mobile keyboard
- SFTP + port forwarding built in
- Two-finger swipe = PageUp
- Subscription for sync features
- Free tier is limited
Termux (Android)
Full Linux terminal emulator for Android. Not just SSH -- it runs a local Linux environment. Install Tailscale, SSH, even Node.js directly. The Android power user's choice.
- Full Linux environment on Android
- Run Tailscale natively
- Completely free and open source
- Package manager (apt equivalent)
- Android only
- Steeper learning curve
- F-Droid version preferred over Play Store
Moshi
Purpose-built iOS terminal for AI coding agents. Designed from the ground up for the Claude Code workflow rather than general-purpose SSH.
- AI-agent-optimized UI
- Built specifically for this workflow
- Newer, less proven
- iOS only
Web-Based Terminals
Skip the app entirely -- access your terminal through a phone browser. These tools expose your terminal session as a web page, secured behind auth and TLS.
ttyd
Share any terminal session over HTTP/WebSocket. Lightweight C program. One command to expose your tmux session to the web, then open it in Safari on your phone.
# Expose tmux session on port 8080
ttyd -p 8080 tmux attach -t claude
# With TLS + auth
ttyd --ssl --ssl-cert cert.pem \
--ssl-key key.pem \
-c user:pass -p 8080 \
tmux attach -t claude
code-server
Self-hosted VS Code in the browser. Install the Claude Code extension inside it. Full IDE experience from your phone, not just a terminal. More resource-intensive but maximum power.
Claude Code Web
Community-built web interface wrapping the Claude Code CLI. Self-hostable. Purpose-built UI for Claude Code rather than a generic terminal.
Cloud Dev Environments
Skip the local machine entirely. Cloud environments give you a browser-based IDE that's accessible from any phone, anywhere. The trade-off: you lose local filesystem access and MCP servers.
GitHub Codespaces
Browser-based VS Code running in GitHub's cloud. Install Claude Code in the terminal. Free tier: 120 hours/month on 2-core machines. Pre-configured dev containers mean zero environment hassle.
- 120 free hours/month (2-core)
- Full VS Code in browser
- Pre-configured dev containers
- No local machine needed
- Built-in GitHub integration
- No local FS or MCP servers
- GitHub-only repos
- Mobile browser experience varies
Gitpod
Open source alternative to Codespaces. Self-hostable for full control. Browser-based IDE with similar capabilities. Good choice if you want cloud dev without GitHub lock-in.
claude.ai/code (Web)
Anthropic's own cloud Claude Code environment. Clones from GitHub, runs in their infrastructure. The most phone-friendly option -- designed for browser access. No local dependencies.
Self-Hosted & Always-On Servers
Dedicated hardware running Claude Code 24/7. Your phone connects to a machine that never sleeps. Two approaches: a Raspberry Pi on your desk, or a cheap VPS in the cloud.
Raspberry Pi Setup
A Raspberry Pi 4 (8GB RAM) running Claude Code + Telegram channel. Schedule tasks, read emails, manage calendar, analyze PDFs -- all from your phone. Claude Code makes API calls; compute happens at Anthropic. The Pi is just the orchestrator. Low power consumption, always-on, silent.
- $50-80 one-time cost
- Always on, low power (~5W)
- Full local control
- No monthly fees
- Silent, fits on a shelf
- ARM architecture limitations
- Requires home network config
- Limited compute for local tasks
- Need Tailscale for remote access
VPS Options
| Provider | Spec | Cost | Notes |
|---|---|---|---|
| Hetzner CX22 | 2 vCPU, 4GB RAM, 40GB | ~$5-6/mo | Best value. EU data centers. Community favorite. |
| DigitalOcean | 1 vCPU, 2GB RAM, 50GB | ~$12/mo | Good docs, US/EU/APAC regions. |
| AWS EC2 t3.medium | 2 vCPU, 4GB RAM | ~$30-35/mo | Most expensive but full AWS ecosystem. |
systemd Service for Auto-Restart
# /etc/systemd/system/claude-agent.service
[Unit]
Description=Claude Code Agent
After=network.target
[Service]
Type=simple
User=youruser
WorkingDirectory=/home/youruser/project
ExecStart=/home/youruser/run-claude.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# Enable and start
sudo systemctl enable claude-agent
sudo systemctl start claude-agent
# Check status
sudo systemctl status claude-agent
Notification Systems
The missing piece in most setups: knowing when Claude Code finishes a task, hits an error, or needs permission. Claude Code hooks can trigger push notifications on any event.
ntfy
Free, self-hostable push notification service. The community standard. One curl command to send a notification; phone app picks it up instantly.
# Send a notification
curl -d "Claude Code finished task" \
ntfy.sh/my-claude-alerts
Pushover
$5 one-time purchase. Reliable, simple API. Good for people who just want push notifications that work without running a server.
Telegram Bot API
Free. If you are already using Channels, the same bot can send status updates. No additional setup needed.
Hook Integration Points
Claude Code hooks fire on these events, and you can wire any notification service to them:
| Hook Event | When It Fires | Use Case |
|---|---|---|
| PreToolUse | Before Claude calls a tool | Alert on dangerous operations |
| PostToolUse | After a tool completes | Track progress |
| Stop | Claude finishes a response | "Task complete" notification |
| Error | Something goes wrong | Alert on failures |
| SubagentStop | A sub-agent completes | Track parallel work |
Connection Resilience
Phone connections drop. Cellular handoffs, WiFi transitions, tunnels, elevators. The resilience layer determines whether a dropped connection means "reconnect in 2 seconds" or "lose all your work."
| Layer | Technology | Survives | Recovery Time |
|---|---|---|---|
| Session Persistence | tmux / screen | Complete disconnects, reboots | Instant reattach |
| Transport Resilience | Mosh (via Blink Shell) | IP changes, roaming, brief outages | < 1 second |
| Network Layer | Tailscale (WireGuard) | NAT changes, WiFi/cellular handoff | 2-5 seconds |
| Official Auto-Reconnect | Remote Control | Brief network interruptions | Auto, up to ~10 min |
| Application Layer | Claude Code /resume | Full session loss | Context reload (slower) |
The Resilience Stack
For maximum reliability, layer all three: Tailscale (network), Mosh (transport), tmux (session). With this triple layer, you can walk through a tunnel, switch from WiFi to cellular, and the session never drops. When you open your phone again, you are exactly where you left off -- Claude Code mid-sentence.
Mosh vs SSH
Full Comparison Matrix
Every approach side by side. Dot ratings are relative within each category. Five dots = best in class for that dimension.
| Solution | Setup | Latency | Power | Resilience | Cost | Phone UX |
|---|---|---|---|---|---|---|
| Remote Control | Free* | |||||
| Dispatch | Free* | |||||
| Channels (Telegram) | Free | |||||
| claude.ai/code (Web) | Free* | |||||
| Happy Coder | Free | |||||
| SSH + tmux + Tailscale | Free | |||||
| ttyd (Web Terminal) | Free | |||||
| GitHub Codespaces | Free tier | |||||
| VPS (Hetzner) | $5-6/mo | |||||
| Raspberry Pi | $50-80 once |
* Free with an existing Claude Pro/Max/Team/Enterprise subscription.
Step-by-Step Setup Guides
Expand any guide below for a complete walkthrough. Each one is self-contained -- pick the approach that matches your needs and follow it start to finish.
Guide A: Official Remote Control (Fastest Setup)
▶Total time: ~2 minutes. Requirements: Claude Code v2.1.51+, Pro/Max/Team/Enterprise plan, Claude mobile app or browser.
Verify Claude Code Version
Make sure you have v2.1.51 or later installed.
claude --version
Start Remote Control
Choose server mode (headless, multiple sessions) or interactive mode (attach to existing session).
# Server mode
claude remote-control
# Or interactive mode
claude --rc
# Or mid-session
/remote-control
Scan QR Code
Press spacebar to display the QR code. Scan it with the Claude mobile app or open the URL in your phone browser at claude.ai/code.
Start Working
You are now driving your local Claude Code session from your phone. All local tools, MCP servers, and filesystem access work as normal. The session auto-reconnects on brief network drops.
Guide B: SSH + tmux + Tailscale (Power User)
▶Total time: ~20 minutes first time, then instant. Requirements: Mac/Linux desktop, iOS/Android phone, free Tailscale account.
Install Tailscale on Both Devices
Desktop: download from tailscale.com or brew install tailscale. Phone: install the Tailscale app from App Store / Play Store. Sign in with the same account on both.
# macOS
brew install --cask tailscale
# Linux
curl -fsSL https://tailscale.com/install.sh | sh
Enable Remote Login on Mac
System Settings > General > Sharing > Remote Login > On. Or use the terminal:
sudo systemsetup -setremotelogin on
Install tmux
# macOS
brew install tmux
# Ubuntu/Debian
sudo apt install tmux
Start a Claude Code Session in tmux
tmux new -s claude
cd ~/your-project
claude
Install SSH App on Phone
iOS: Blink Shell ($19.99) or Termius (free). Android: Termux (free) or Termius.
Connect from Phone
Open your SSH app and connect to your desktop using its Tailscale hostname:
ssh username@your-mac
tmux attach -t claude
Prevent Mac from Sleeping
caffeinate -i &
Guide C: Telegram Channel (Chat-Based)
▶Total time: ~10 minutes. Requirements: Claude Code v2.1.80+, Telegram account, basic familiarity with BotFather.
Create a Telegram Bot
Open Telegram, message @BotFather, send /newbot, and follow the prompts. Save the bot token.
Install the Telegram Plugin
# Inside Claude Code
/plugin install telegram@claude-plugins-official
Configure the Bot Token
Claude Code will prompt you for the token from step 1. Paste it in.
Start Claude Code with Channels
claude --channels
Message Your Bot
Open Telegram on your phone, find your bot, and start sending messages. Claude Code receives them as events and can reply through the same bot.
Guide D: Always-On VPS ($5/mo)
▶Total time: ~30 minutes. Requirements: Hetzner/DigitalOcean account, credit card. Result: a server that never sleeps.
Provision a VPS
Hetzner CX22 (~$5-6/mo) recommended. Choose Ubuntu 22.04 LTS. Set up SSH key access.
SSH In and Install Dependencies
ssh root@your-vps-ip
apt update && apt install -y tmux git curl
# Install Node.js (via nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 22
Install Claude Code
npm install -g @anthropic-ai/claude-code
claude auth
Clone Your Repo and Start
git clone your-repo-url
cd your-repo
tmux new -s claude
claude
Install Tailscale for Secure Access
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
Set Up systemd for Auto-Restart
Create the service file from the Self-Hosted section above. Enable and start it. Your Claude Code session now survives reboots.
Guide E: Happy Coder (Mobile App)
▶Total time: ~5 minutes. Requirements: Node.js, Claude Code already set up.
Install Happy Coder on Desktop
npm install -g happy-coder
happy
Install the Mobile App
Download Happy Coder from the App Store (iOS) or Play Store (Android). Or use the web app at happy.engineering.
Pair Devices
The desktop server shows a pairing code. Enter it in the mobile app. Connection is E2E encrypted.
Start Coding
You now have push notifications, voice coding, multiple sessions, and parallel task support from your phone.
Guide F: Raspberry Pi Command Center
▶Total time: ~45 minutes. Requirements: Raspberry Pi 4 (8GB recommended), SD card, Telegram account.
Flash and Boot the Pi
Use Raspberry Pi Imager to flash Ubuntu Server or Raspberry Pi OS. Enable SSH during imaging.
Install Node.js and Claude Code
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs tmux
npm install -g @anthropic-ai/claude-code
claude auth
Set Up Telegram Channel
Create a bot via BotFather, install the Telegram plugin, configure the token. Start with claude --channels.
Install Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Create systemd Service
Use the systemd template from the Self-Hosted section. Enable auto-start on boot. Your Pi is now a 24/7 Claude Code command center.
Quick Decision Guide
Answer these questions to find your ideal setup in under 30 seconds.
claude --rc and scan the QR code. Done. For async tasks, add Dispatch.
Recommended Stacks
Four opinionated stack recommendations. Each is optimized for a different kind of user and use case. Pick the one that matches how you work.
Stack A: Zero Setup (For Most People)
Remote Control + Claude Mobile App + Dispatch for async tasks.
If you already have a Claude Pro/Max plan and just want to check on your session from the couch, this is it. Zero additional software, zero config. Remote Control for live interaction, Dispatch for fire-and-forget tasks, push notifications when things finish.
Stack B: SSH Power User
Tailscale + Blink Shell / Termius + tmux + caffeinate + ntfy
For developers who want full terminal access and don't mind 20 minutes of initial setup. Maximum control. Session never dies. Works through any network. The stack every blog post recommends.
Stack C: Always-On Server
Hetzner VPS ($5/mo) + tmux + systemd + Telegram Channel
For developers who want a dedicated Claude Code server that never sleeps. Access from anywhere. Auto-restarts after crashes. Chat with it via Telegram. The "set it and forget it" approach.
Stack D: Cloud Native
GitHub Codespaces + Happy Coder App
For developers who don't want to maintain any infrastructure. Everything runs in someone else's cloud. 120 free hours/month from Codespaces. Happy Coder for push notifications and voice coding.
All Sources
Every source consulted during this research, organized by type. 50+ web searches and page scrapes via Firecrawl.
Official Documentation
- Docs Remote Control -- Claude Code Official Docs
- Docs Channels (Telegram, Discord, iMessage) -- Claude Code Official Docs
- Docs Headless / Agent SDK -- Claude Code Official Docs
- Docs Claude Code on the Web -- Claude Code Official Docs
- Docs Desktop App (Dispatch) -- Claude Code Official Docs
Community Blog Posts & Guides
- Blog Elliot Bonneville -- Phone to Mac Persistent Terminal
- Blog Nick Khami (Skeptrune) -- Claude Code on Mobile: Termux + Tailscale
- Blog Emre Isik -- Code From Your Phone Like a Boss
- Blog Harper -- Claude Code Is Better on Your Phone
- Blog MindStudio -- Keep Claude Code Agent Running 24/7
- Blog Tsoporan -- Remote AI Development with Claude Code + Tailscale
- Blog ClaudeFast -- InfraOps VPS Guide for Claude Code
- Blog Sealos -- Claude Code on Phone
- Blog Builder.io -- Claude Code Mobile Phone Setup
- Blog Devaslife -- How to Run Claude Code in a tmux Popup Window
Press & Reviews
- Press XDA Developers -- Claude's Dispatch Feature Turned My Phone Into a Remote Control
- Press MacStories -- Hands-On with Claude Code's Telegram and Discord Integrations
- Press DataCamp -- Claude Code Remote Control Tutorial
- Press Tessl -- Claude Code Gets Remote Access to Live Local Terminals