The relay: your host from any network, with nothing in it to read

In a hotel Wi-Fi, on mobile data behind carrier NAT or in an office that lets nothing in, no direct path reaches your host. The relay does, with one switch per host, and it only ever carries SSH it cannot decrypt.

At home your phone finds your host on the local network, and with Tailscale it reaches it from many other places. Then you sit in a hotel whose Wi-Fi keeps every guest apart, or on mobile data behind your carrier’s NAT, or in an office that lets nothing through but the web. No direct path gets to your host from there. The usual fixes are a port forward on your router, a VPN to set up and keep running, or Remote Login switched on.

The relay is the path that works anyway. It is one switch per host, Reachable from anywhere, offered when you set the host up. With it on, your devices reach the host from any network that reaches the internet, and you never pick a connection: the app tries every path at once and takes the first that answers. The film in How your phone reaches your host follows one session from home to a hotel and back.

A cabin far down in a valley of snowy mountains, the home of the host

How it reaches your host

Both sides dial out. Your host and your device each open a connection to the relay on port 443, the port every network leaves open for the web, and the relay joins the two. Your router needs no forwarding rule, and Remote Login stays off.

Nothing to set up on the phone. Pair the phone once by scanning the host’s QR code. From then on it uses the relay whenever nothing faster answers, and when you walk back into your own network, the iPhone moves the running session off the relay to the local path.

About 90 milliseconds. That was the median in a measurement with both ends on one machine. Your own number depends on where you and your host are, and the connection pill in the app shows it, for example Relay · 96 ms.

What it cannot read

Unchanged SSH inside. Through the relay runs the same SSH connection your phone uses on your own network, between the device and your host’s agent. The relay forwards its bytes and holds no key that could decrypt them, so your terminal, your prompts, your code and your keys pass through it as ciphertext.

The host key is pinned. Your apps pin the host’s key when you pair. A relay that tried to pose as your host would present a different key, and the app would refuse the connection.

Pairing with Ed25519 keys. Every device makes its own Ed25519 key, and the private key never leaves it. The relay opens a pipe for a device only after a challenge against the keys of the devices you paired, so an unknown device cannot even reach your host’s line. Your host’s agent then checks the device’s key again before any session starts.

What it can see

A relay that carries your traffic sees some of it. This is the complete list: that a pairing connected, and when; how many bytes flowed; the IP addresses of both ends. Everything inside the session, your code, prompts, output and credentials, stays ciphertext to it.

So the worst a compromised relay could do is stop or slow your connection and learn that metadata. It could never read or change what you send. The relay runs on Cloudflare as one small pipe per pairing that forwards bytes, with a buffer for whichever side arrives first; it runs nothing and stores none of your work.

Push notifications take another way, through Firebase and Apple, and they are readable text. Most are fixed sentences around the session and workspace names, such as “api-refactor needs your input”; when an agent finishes a task you gave it or sets up a worktree, its own short summary of the work is the text. Notifications has the details, including how to switch them off per device.

Your switch, per host

Reachable from anywhere is on when you set up a host, and you can turn it off in that host’s settings at any time. With it off, the host’s agent opens no connection to the relay at all, and your devices reach that host on your local network and over Tailscale. Pairing works either way, and everything else in Offsite stays the same.

All posts