Other machines, your phone, a guest
Your terminals, from anywhere.
The machine under your desk, the one in a rack, the phone in your pocket: each shows the same projects and panes. They connect through your own ssh, or through one hub of yours that can't read what it carries.
Other machines, in the same sidebar.
Name a machine once and its projects sit under their own heading, beside this computer's. Its panes run there, so they keep going when you close the window or the connection drops. It all goes through your own ssh.
Your tailnet, already in the list.
Add Remote Host lists your Tailscale machines and the names in your ssh config, under two tabs. A tailnet machine is kept by its node, so renaming it doesn't lose it, and one that's off says so at once.
Machines of your tailnetAway from every screen, told by ntfy or a webhook.
An agent stops to ask you something and no window is open. The server tells you anyway: it posts to your ntfy topic or a web address of yours, or runs a command you name. Nothing of insensical's sits in between, and Send a Test says in a sentence how it went.
When nobody is attachedYour phone, or any browser.
Start isc hub and pair your phone once, with a code its camera reads. It opens on Home: what needs you first, with keys to answer in place, then every project, machine by machine.
One page, every machine.
Join your other computers to your hub. Invite a Machine gives a line, and Join a Hub on the other machine takes it, or use isc hub invite and isc hub join. A joined machine listens on nothing: it dials the hub.
Pair your phone with the hub once and it reaches every joined machine, notifications included. The hub carries what you say and can't read it.
Joining another machine to your hubA program in a pane can't let itself in.
A device that can type can run anything as you, so an agent that made itself one would keep a way in. When a program in a pane asks to add a device, the window asks you, naming the pane. Nothing changes unless you press Allow, and no answer in two minutes is no. With no window open, a notification asks.
Pairing a deviceNothing of insensical's listens on the network.
Every way in is one you started, through a program you already run.
The server opens no network listener
It listens on nothing but its socket, on the machine it runs on.
Another machine is your own ssh
Your keys, your agent, your configuration and your jump hosts all apply, because it's your ssh that runs.
The page is a separate program
isc hub runs only when you start it, join a hub or turn on autostart. It's one more client of the socket, like the window, and nobody can use it until you pair a device.
A device is known by its key
It pairs once, by a code that's soon used up. From then on it's known by a key it made and keeps.
The hub can't read what it carries
Between a device and a joined machine it's sealed end to end. The hub vouches for your devices, and a joined machine listens on nothing.
A guest sees only what was shared
One project or one terminal, and nothing else on the computer. A public link always has an end, a week at most.