Control Your AI Agents From Your Phone — A Low-Bandwidth Playbook for Laptop & EC2
Your agent is running on a laptop or a cloud server. You're out with only a phone and a patchy 4G signal. Here's how to check on it, approve its next step, or give it new work — securely, without a remote desktop, and without opening a single port.
- Don't stream your screen to your phone. Send text commands to the machine and get text summaries back.
- Claude already ships three ways to do this: Dispatch (Claude Desktop agents), Remote Control (Claude Code sessions) and Channels (Telegram/Discord/iMessage).
- All three use outbound-only connections from your machine — no inbound ports, no VPN, no port forwarding.
- Best overall setup: Claude Code on an EC2 instance inside tmux, with Remote Control for live work and a Telegram channel for alerts.
1. The problem
AI agents are long-running. A research agent may take 20 minutes, a coding agent may run a test suite for an hour, and a reporting agent may run every night. Agents also pause: they ask for permission before writing files, running commands or calling an external API.
That creates a gap. The agent runs on your laptop or an EC2 instance, but you are in a meeting, travelling or at home with only your phone. The work either stalls waiting for an approval, or runs unsupervised with no way to steer it.
Give an engineer a simple, secure, low-bandwidth way to monitor, approve and instruct AI agents running on a personal machine or cloud server, using only a mobile phone — without exposing the machine to the internet and without building heavy infrastructure.
Why the obvious answers fall short
RDP, VNC or AnyDesk stream the whole screen. That is heavy on mobile data, laggy on weak networks and painful to use on a 6-inch screen.
Light on bandwidth, but you need an open port or VPN, and typing shell commands on a phone keyboard is slow and error-prone.
Needs a tunnel or public endpoint, authentication, and ongoing maintenance — a whole project just to press "approve".
2. Requirements
| Type | Requirement | Why it matters |
|---|---|---|
| Functional | See agent status and progress | Know whether it's working, stuck or finished |
| Functional | Approve or reject an agent's pending action | Agents stall on permission prompts |
| Functional | Send new instructions or start a task | Redirect work without being at the desk |
| Functional | Get notified when something needs you | No need to keep checking |
| Non-functional | Minimal bandwidth | Works on weak 3G/4G and roaming data |
| Non-functional | No inbound ports on the host | Smallest possible attack surface |
| Non-functional | Low setup and zero maintenance | Minutes to set up, nothing to keep patched |
| Non-functional | Execution stays on the host | Local files, tools and secrets never move to the phone |
3. The architecture pattern: "phone as remote, host as worker"
Every good solution here follows the same pattern. The agent and all its tools stay on the host. The host connects out to a relay service and waits for work. The phone talks only to the relay. Only small text messages travel — commands one way, status and results the other.
What an approval looks like end to end
4. Solution options, step by step
Pick the tab that matches where your agent runs. You can combine them — for example Remote Control for live work plus a Telegram channel for alerts.
What it is: a feature inside Claude Desktop's Cowork mode. It creates one ongoing conversation shared between your phone and your desktop. You message from the phone; Claude does the work on the desktop using your local files, connectors and plugins, and reports back.
Best for agents and workflows built in Claude Desktop · fire-and-forget knowledge tasks (reports, file organisation, spreadsheet analysis, meeting prep) that take several minutes.
Setup
- Update Claude Desktop on your laptop (macOS or Windows x64) and the Claude app on your phone (iOS or Android).
- In Claude Desktop, open Cowork and select Dispatch.
- Scan the QR code with the Claude app on your phone to pair the two.
- Set your laptop so it doesn't sleep while plugged in, and leave Claude Desktop open.
- From the phone, open Dispatch and send a task, e.g. "Summarise yesterday's agent logs and list anything that failed."
Pros
- Two-minute setup, no terminal
- Uses everything already connected on the desktop
- Start brand-new tasks from the phone
- Great for non-coding agent work
Cons
- Desktop must stay awake with the app open
- Desktop app only — not for a headless Linux server
- Research preview; requires a paid plan
- Scope its file access carefully — it can modify files
What it is: connects the Claude app (or any browser) to a Claude Code session running on your machine. Execution and file access stay local; the phone is only a window into that session. The host makes outbound HTTPS requests only and opens no inbound ports.
Best for watching a live agent run, approving tool use, and nudging it mid-task · works on laptop or Linux server/EC2.
Setup
- Install and log in to Claude Code on the host.
- Start a new remote-enabled session (a name helps when you run several):
claude --remote-control my-agentOr, inside a session that is already running, type:/remote-control
- Connect from the phone: scan the QR code shown in the terminal, open the session URL, or go to the Code tab in the Claude app and pick the session.
- Turn on mobile push notifications from
/configso approvals reach you. - Keep the terminal open. On a server, run it inside
tmux(see section 7).
Pros
- One command, no infrastructure
- Full chat UI plus approvals on the phone
- Several named sessions in parallel, one per agent
- Reconnects when a sleeping machine wakes
- Works headless on Linux / EC2
Cons
- Session must be started on the host first
- Closing the terminal ends the session
- A network outage of around 10 minutes times the session out
- Needs the Claude app or a browser (heavier than SMS-style chat)
What it is: a plugin that bridges a messaging app — Telegram, Discord or iMessage — with a running Claude Code session. Each channel is an MCP server that Claude Code runs locally; it relays your chat messages in and Claude's replies out. Requires Claude Code v2.1.80 or later.
Best for the lowest-bandwidth control possible · alerts and short commands on a weak network · people who already live in Telegram.
Setup (Telegram)
- In Telegram, talk to @BotFather, create a bot and copy its token.
- In Claude Code, install the official plugin:
/plugin install telegram@claude-plugins-official
- Save the bot token (stored locally under
~/.claude/channels/telegram/):/telegram:configure <your-bot-token> - Restart Claude Code with the channel enabled:
claude --channels plugin:telegram@claude-plugins-official
- Message your bot from your phone. It replies with a pairing code. Approve it in Claude Code, then lock the bot to paired users only:
/telegram:access pair <code> /telegram:access policy allowlist
- Try it: send "Are any tests failing?" — Claude runs them on the host and replies in Telegram.
Pros
- Smallest data use — plain chat messages
- Works on very poor networks
- Native notifications from an app you already use
- Sender allowlist and pairing built in
Cons
- Claude Code session must keep running
- Slightly more setup (bot + pairing)
- Messages pass through the chat provider's servers
- Research preview
5. Side-by-side comparison
| Dispatch | Remote Control | Channels | |
|---|---|---|---|
| Agent runs in | Claude Desktop (Cowork) | Claude Code | Claude Code v2.1.80+ |
| Host OS | macOS, Windows x64 | Any, incl. Linux / EC2 | Any, incl. Linux / EC2 |
| Phone client | Claude app | Claude app (Code tab) or browser | Telegram, Discord, iMessage |
| Bandwidth | Low | Low | Very low |
| Interaction style | Async tasks | Live supervision | Chat commands & alerts |
| Start new work from phone | Yes | Continue host-started sessions | Yes, into the running session |
| Host must stay awake | Yes, app open | Reconnects after wake; ~10 min outage limit | Yes, session running |
| Inbound ports | None | None (outbound HTTPS) | None (bot polling) |
| Setup effort | ~2 min, QR code | 1 command | ~10 min, bot + pairing |
| Status (Oct 2026) | Research preview | Research preview | Research preview |
6. Which one should you use?
Answer three questions and get a recommendation.
7. Best-fit setup: always-on EC2 + Remote Control + Telegram
Laptops sleep, lose Wi-Fi and get their lids closed. If your agents matter, move them to a small always-on server. This is the most reliable combination for most engineers:
- Launch a small instance (Ubuntu or Amazon Linux). Allow SSH only from your own IP, or use AWS Systems Manager Session Manager so even port 22 stays closed.
- Install Claude Code, log in, and clone or copy your agent project onto the instance.
- Start a persistent tmux session so agents survive SSH disconnects:
tmux new -s agents
- Window 1 — live control:
claude --remote-control report-agent
- Window 2 — alerts and quick commands (press
Ctrl-b cfor a new window), after the one-time Telegram setup from tab ③:claude --channels plugin:telegram@claude-plugins-official - Detach with
Ctrl-b dand log out. Both sessions keep running; manage them from your phone. - Pre-approve safe actions in the project's Claude Code permission settings (e.g. reading files, running tests) so the agent only stops for genuinely risky steps.
Laptop vs EC2 — the trade-off
| Laptop | EC2 / cloud server | |
|---|---|---|
| Availability | Sleeps, travels, loses Wi-Fi | Always on, stable network |
| Access to local files & apps | Full — your real desktop | Only what you copy or sync there |
| Cost | Free (already owned) | Small monthly instance cost |
| Supports | Dispatch, Remote Control, Channels | Remote Control, Channels |
| Best for | Personal workflows on your own files | Long-running or scheduled agents |
8. How this compares with other approaches
| Approach | Bandwidth | Security exposure | Mobile UX | Effort |
|---|---|---|---|---|
| RDP / VNC / AnyDesk | High — continuous screen | Full desktop exposed | Poor on small screens | Low |
| SSH + tmux (Termius etc.) | Low | Open port or VPN | Typing commands is slow | Low |
| Tunnel + web dashboard | Medium | Public endpoint, auth to build | Good if built well | High |
| Custom chat bot | Very low | Outbound only | Good | Medium, you maintain it |
| Dispatch / Remote Control / Channels | Very low – low | Outbound only | Purpose-built | Minutes |
When to build your own
Build a custom controller only if you need something the built-in options don't give you — for example a single status board across many agents, or control of agents written in another framework. If you do, copy the same proven design:
- Outbound only: a small worker on the host polls a queue (SQS, Redis, or a chat bot API). Never open a port.
- Tiny command set:
status,approve,reject,run <task>,stop. - Summaries, not logs: reply with a few lines; keep full logs on the host.
- Allowlist senders and require an explicit confirmation for anything destructive.
That is essentially a custom Channels plugin — which is a good sign the built-in route covers most needs.
9. Security best practices
All three options connect outbound. Don't add inbound rules "just in case".
Use the allowlist policy for Telegram/Discord bots, and protect your Claude account with a strong sign-in.
Give agents access to the project folder only, not your whole home directory or drive.
Pre-approve reads and tests; keep deletes, deploys and external writes behind a human approval.
Keep API keys in the host's environment or a secret manager, never in messages.
Your phone is now a control panel. Use a screen lock and app lock.
10. Setup checklist
11. FAQ & limitations
Does my code or data move to my phone?
No. Execution and file access stay on the host. The phone only sends instructions and receives text responses.
What happens if my laptop goes to sleep?
Dispatch and Channels need the machine awake and the app or session running. A Remote Control session reconnects when the machine wakes, but an outage of roughly ten minutes ends it and you'll need to restart it.
Can I control several agents at once?
Yes. Start one named Remote Control session per agent; each appears as its own thread in the Claude app.
Will this work on a weak 2G/3G connection?
Channels over Telegram is the most forgiving because it is plain chat. Remote Control and Dispatch are also text-based and light, but load inside the Claude app.
Which plan do I need?
These features are research previews tied to paid Claude plans, and availability changes as they roll out. Check the current Claude documentation for your plan before you rely on them.
Can I use this with agents built on LangChain, CrewAI or similar?
Not directly — these features control Claude sessions. For other frameworks, build a small outbound-polling bot using the pattern in section 8, or run the agent as a tool that a Claude Code session calls.
Key takeaways
- Send text, not pixels: a phone should be a remote control, not a screen viewer.
- Outbound-only connections give you remote control with no attack surface on the host.
- Use Dispatch for Claude Desktop agents, Remote Control for live Claude Code sessions, Channels for the lowest bandwidth.
- For reliability, run agents on an always-on server inside tmux.
- Build your own only for multi-framework or multi-agent dashboards — and copy the same outbound pattern.
Sources & further reading
- Claude Code on mobile — official docs
- Channels — official docs
- Help Net Security — Remote Control brings Claude Code to mobile
- Keep Clauding From Anywhere
- Tom's Guide — hands-on with Dispatch
- Claude Dispatch explained
Features described here were in research preview as of October 2026; commands and plan availability may change. Always check the official documentation before production use.