Guides
Several machines
Link your laptop, desktop and servers to one Pilothouse hub and see every machine's agent sessions in one app; answers stay signed by your phone.
Run agents on more than one computer and see all of them in one app. One machine is the hub: your phone is paired with it, and it shows its own sessions plus those of every machine linked to it. Answers, replies and the live terminal reach the machine that runs the agent.
What you need
- Pilothouse 0.4 or later on every machine.
- Remote access on every machine, so they can reach each other over your tailnet:
pilothouse remote tailscale
Link a machine
On the hub, the machine your phone is paired with:
pilothouse link add
It prints a command with a one-time code, valid for 10 minutes. Run that command on the other machine:
pilothouse link join https://studio.tailnet.ts.net 4KQ2-9XHT-M3PB
The hub first checks that it can reach the machine. The machine then lists the hub’s paired devices, each with a fingerprint of its key, and asks whether to trust them. Compare each with the one the hub shows (pilothouse devices there, or Settings → This device on the phone): only the keys you were shown get trusted. Trusted devices can answer this machine’s requests, reply to its agents and type into their terminals. Repeat on each machine you want to add.
Each machine needs its own name (machine: in ~/.pilothouse/config.yaml); joining with a name that’s already in use is refused.
| Command | What it does |
|---|---|
pilothouse link |
The hub this machine reports to, or the machines linked to it, and whether they’re online. |
pilothouse link add |
On the hub: a one-time code for another machine. |
pilothouse link join <url> <code> |
On another machine: link it to the hub. |
pilothouse link trust |
On a linked machine: trust the hub’s new devices. |
pilothouse link remove <machine> |
On the hub: unlink a machine. On a linked machine: leave the hub. |
In the app
- Today shows every machine’s sessions together. Sessions on another machine carry its name, and chips at the top narrow Today to one machine. An offline machine is marked, and its sessions are shown as last seen.
- A session’s report says which machine it runs on.
- Settings → Machines lists the machines and whether they’re online.
- Away and At my desk, set from the app, apply to every machine.
- Notifications from linked machines arrive through the hub’s channels, with the machine’s name in the title.
Rules, tasks and insights stay per machine, and the app shows the hub’s. Make it a rule isn’t offered for a linked machine’s request: add the rule on that machine with pilothouse policy add.
Want to see it first? pilothouse demo --linked adds a pretend second computer to the demo.
Security
- A linked machine checks every answer itself. The hub forwards what your phone sends, signature included, and the machine verifies it against the device key a person confirmed on that machine. The hub can read a linked machine’s sessions, but it can’t answer, reply or type for you.
- Linking exchanges two random 256-bit tokens. Each side keeps the one it sends and only a hash of the one it receives.
- A device that pairs with the hub later, or gets a new key (paired again, or restored with a passkey), can see a linked machine’s sessions but can’t act on them until you run
pilothouse link truston that machine. A device revoked on the hub is revoked on every linked machine. - Telegram and ntfy don’t get one-tap buttons for linked machines’ requests, because those would need a signature the hub can’t make. Answer them in the app.
- Linking, trusting and unlinking are refused from inside an agent’s process tree, like pairing.
More in the security model.
Limits
- Machines must reach each other over a tailnet with HTTPS. Machines on different networks without Tailscale aren’t supported yet.
- A machine can have one hub, and a hub can’t also be linked to another hub.
- The terminal inbox and the CLI show this machine only.
Found a mistake? Open an issue.