M25: the fleet in one page (every host at once) #39

Open
opened 2026-10-02 04:07:04 +00:00 by jhgaylor · 0 comments
Owner

Depends on: #37; #30 for machines reached only through control's relay (tailnet hosts work without it)
Blocks: #40

Swarm track. The page holds every machine at once, so one view covers all your panes.


Today the page shows one host and connects to whichever is selected (M4a's hosts.ts). Control never sees terminal content, so it can't merge panes on the server side. The merge happens in the browser.

  • Fleet connections:
    • the page opens a summary subscription (M23) to every host in the directory, whether that's control's list or the home daemon's;
    • each host uses its usual transport (tailnet, dial-out, provider tunnel or relay), with its own E2E channel;
    • a pane's output is attached only when you open it.
  • One model:
    • a pane is (host, pane id);
    • the client keeps a merged list with each host's state (connected, stale with its last-seen time, or offline);
    • an offline host's panes stay in view, greyed, from the last summary.
  • Sleeping sandboxes: provider hosts that are asleep don't get woken just to be counted. They show from the provider's status, and wake when you open one of their panes.
  • Behaving well:
    • reconnects are spread out after a laptop wakes or the network changes;
    • a slow or dead host never holds up the others;
    • the connection count has a cap, with a clear notice when it's reached.
  • Done when:
    • geek, jake-mini and a resident sandbox appear together on the laptop over the tailnet, and on the phone through control's relay;
    • unplugging jake-mini greys its panes within 10 s and brings them back when it returns;
    • 20 fake daemons (a test fixture) connect after a simulated wake without a burst of failures.
**Depends on:** #37; #30 for machines reached only through control's relay (tailnet hosts work without it) **Blocks:** #40 *Swarm track. The page holds every machine at once, so one view covers all your panes.* -------- Today the page shows one host and connects to whichever is selected (M4a's `hosts.ts`). Control never sees terminal content, so it can't merge panes on the server side. The merge happens in the browser. - **Fleet connections:** - the page opens a summary subscription (M23) to every host in the directory, whether that's control's list or the home daemon's; - each host uses its usual transport (tailnet, dial-out, provider tunnel or relay), with its own E2E channel; - a pane's output is attached only when you open it. - **One model:** - a pane is `(host, pane id)`; - the client keeps a merged list with each host's state (connected, stale with its last-seen time, or offline); - an offline host's panes stay in view, greyed, from the last summary. - **Sleeping sandboxes:** provider hosts that are asleep don't get woken just to be counted. They show from the provider's status, and wake when you open one of their panes. - **Behaving well:** - reconnects are spread out after a laptop wakes or the network changes; - a slow or dead host never holds up the others; - the connection count has a cap, with a clear notice when it's reached. - **Done when:** - geek, jake-mini and a resident sandbox appear together on the laptop over the tailnet, and on the phone through control's relay; - unplugging jake-mini greys its panes within 10 s and brings them back when it returns; - 20 fake daemons (a test fixture) connect after a simulated wake without a burst of failures.
Sign in to join this conversation.
No description provided.