FreeLattice · Celeste reading home

Public, free to read, reuse, and adapt — Kirk Patrick Miller's notice for this edition. Not a patent grant.

GROK NEXT 033: desktop pooling brick (outline only, not built) · c01

3ede1ca4b8 · words 374 · characters 0–2396

Exact section text · Full source · Source index

Archive pages whose extracted text matched this section: not separately matched. Unmatched pages stay on the source record with the checked page method. They are not guessed into a section.

# GROK NEXT 033: desktop pooling brick (outline only, not built)

From: Celeste. Sunday Oct 11, 2026 (MDT). Builds 029c-1 and 029c-2 from
GROK_NEXT_029c_DESKTOP_DISCOVERY_DESIGN_2026-10-10.md. Give after 032. Layer, never delete.

## Goal
On a computer running the FreeLattice desktop app (Electron spine, desktop/), a phone or second
computer on the same Wi-Fi knocks, and one window asks "(Device) on this Wi-Fi wants to join. Pool
resources with it?" Yes / Yes, connect only / No. No picture code after the first time.

## Scope (one paste, two parts)
1. Main process (desktop/lattice-discover.js, new, MIT):
   - Switch "Let phones on this Wi-Fi find this computer", off by default, off on quit and after
     30 minutes with no join.
   - mDNS/DNS-SD announce `_freelattice._tcp.local`, random instance name, TXT v=1, fp (16 hex), port.
     No names, models or memory sizes.
   - One signaling listener bound to the announcing private LAN address only; refuse 0.0.0.0,
     public, IPv6 global and VPN-only interfaces. Accepts one offer, one answer, one short token per
     join; 16 KB cap; rate cap; origin check (freelattice.com, thelatticetree.com, app pages).
2. Window (renderer, through preload IPC, public fields only): same three choices and words as 029.
   Yes trusts that one kin card, finishes WebRTC with iceServers [], runs the existing
   tree-pool-proof|v1|. Pause wins. No keeps only a count.

## Not in 033
USB, cloud relay, TURN, any server that sees questions, a phone app, the reconnect path (029c-3, 034).

## Tests and smoke
- Node: never binds 0.0.0.0; refuses public/VPN interface; TXT carries no name/model; size and rate
  caps; switch auto-off; counts only (announced, knocks, yes, no).
- Two processes on one machine: announce, knock, Yes, proof passes, Pause stops answers.
- Smoke: SMOKE_OK desktop pooling v0.1.
- Locks: keys stay in main (lattice-keys.js); fl-connect.js md5 unchanged; no em dash, confirm(,
  innerHTML; textContent; no platform names.

## Open choices for Kirk
- Electron (has keys and pair code today) vs the Tauri shell. Outline assumes Electron.
- mDNS library: multicast-dns or bonjour-service (both MIT).
- First join still needs a link or the 029 picture code on the phone (a phone browser cannot browse mDNS).

## Walk needed
Kirk's Mac plus one Android and one iPhone on the same home Wi-Fi; note client isolation on guest Wi-Fi.