Remote access
Reaching another machine to code on it — your desktop from a laptop, a work box from a phone, a local dev server from a client's browser.
Three different mechanisms, easy to confuse:
| You want | Reach for | What it actually is |
|---|---|---|
| One local port visible to someone else, for a while | Azure Dev Tunnels | Ephemeral authenticated public URL through a Microsoft relay |
| Your machines behaving like one private LAN, permanently | Tailscale | WireGuard mesh VPN + identity-based SSH |
| Steer a running Claude Code session from your phone | Claude Code Remote Control | First-party; session relays through the Anthropic API |
| The same, across Codex / Cursor / Grok Build too | T3 Code | Third-party agent harness UI over your own network |
Note the split: the first two move a port or a network. The last two move the session — Claude keeps running on your machine either way.
Guides
| Guide | Description |
|---|---|
| Tailscale | Mesh VPN, Tailscale SSH, serve vs funnel |
| Azure Dev Tunnels | devtunnel host, persistent tunnels, access control |
| Claude Code Remote Control | claude remote-control, server mode, phone + web |
| T3 Code | Control coding agents remotely, pairing over Tailscale |
Picking one
- Sharing a webhook target or a preview with a client → Dev Tunnels. Nothing to install on their side, and the tunnel dies when you press Ctrl-C.
- Working across your own machines every day → Tailscale. Set it up once, then everything (SSH, DDEV, Storybook, databases) is reachable by hostname.
- Checking on a long agent run from the couch → Claude Code Remote Control if you only use Claude Code; T3 Code if you switch between agents or want it on your own network.
- Several at once → common. Tailscale for your own fleet, Dev Tunnels for anything a third party has to load in a browser, Remote Control for the agent session itself.
Related
- SSH — keys, agent,
~/.ssh/config - WSL SSH agent · PowerShell SSH agent
- Docker & hosting