On this page
Your coding agent runs where your code already is: a home server, an always-on desktop, the work machine with every repo checked out. Then you leave the house. This guide shows how to keep Claude Code running there and reach it from your phone, without SSH and without moving the session to someone else’s cloud.
Why not SSH from a phone
SSH works, and it is miserable on a small screen. There is no voice input, no way to drag a screenshot into the conversation, and the formatting does not survive.
The official apps fix that by moving the session into their cloud. That means a different machine, a different checkout and a different billing model than the one you already use.
What anywh does instead
anywh moves nothing. It is a relay between a real client app and the agent CLI already installed on your machine. The process keeps running where it always ran, logged in the way it already is, and the app is a better way to reach it from whatever device you have on you.
No API key is involved. The relay strips the provider’s API key from the environment of the process it spawns, so usage counts against the subscription you already pay for, never pay-per-token. It works the same way for Codex CLI.
From the phone you get chat, voice input and image upload, plus a file browser and the same sessions you have at your desk.
Set it up
- Install the relay on the machine that has your code. It needs Node.js 20.12 or newer and an agent CLI that is already logged in. The relay inherits that login and never holds a credential of its own.
- Create the first profile. A profile is the agent login the relay serves. The command below installs the relay and creates it in one go, with the address other devices will use.
- Put the machine on a private network. Join the relay machine and your phone to a WireGuard-based overlay network, so the relay is reachable by those devices and by nothing else.
- Point the app at the relay. Enter the relay’s private address and port in the app, and your sessions show up.
To go from a bare machine to a listening relay in one run:
curl -fsSL https://anywh.sh/install | sh -s -- --profile-id default --relay-host auto--relay-host is the address other devices reach the machine on. auto picks the tailnet address if there is one, otherwise the single private LAN address, and refuses to guess when there are several.
WARNING
Never expose the relay’s port to the internet. The relay has no authentication, and its default permission mode skips permission prompts, so anyone who reaches the port can run code as you. Keep it on a private network, bind it to that network’s address and not to 0.0.0.0, and do not forward it from your router.
When the relay is not reachable
Behind carrier-grade NAT, or on a network where you cannot join both ends to an overlay, typing an IP address does not work. The app can be handed a connection instead, through a pairing code or an anywh://import-profile link. It is a small protocol any self-hoster can implement, described in the pairing docs.
On iOS
The app registers the anywh:// scheme on iOS as well as on the desktop, and the first-run screen or pairing is how you point an iOS build at a relay. Building the iOS app from source is covered in the self-hosting guide.
Answer your agents from anywhere
When you run several agents at once, in a room, the ones that need you say so. Answering one from your phone is the same gesture as from your desk.
To set up the network side in detail, read remote access. To run more than one login on the same machine, see two Claude Code accounts on one machine.