PD006 · neutron design brief · stage: proposal

Neutron Desktop — the Web App, Installed

A native installer for Windows and macOS (Linux nearly free) that packages the existing web UI in a lightweight shell — the Slack model. The app ships no product logic: it points at a Neutron core, local or remote, and adds what only an installed app can — native notifications, tray presence, deep links, and a doorway to Orbit pairing.

stage · proposal decided · shell only — zero forked UI recommended · Tauri 2 (Rust) distinct from · orbit daemon (device capability)

1 · Shape

flowchart LR
  subgraph APP [neutron desktop app]
    SH[shell · Tauri 2
WebView2 / WKWebView] --> WV[web UI
loaded from the core] SH --> N[native notifications · tray ·
badge · deep links neutron://] end WV -->|https + cookies| C1[remote core
SaaS instance] WV -->|http localhost| C2[local core
docker-compose / own pod] SH -.->|later· pair / detect| OB[orbit daemon
exec-gate · screen · fleet]

2 · Why Tauri, not Electron

CriterionTauri 2Electron
binary weight~10 MB, system webview150–250 MB bundled Chromium
stack fitRust — same as orbit + assayNode runtime
orbit pairing latershared Rust crates possibleIPC bridge only
maturity of tray/updater/deeplinksfirst-class in v2mature

Cost of the system-webview choice: WebView2 (Chromium) on Windows vs WKWebView (Safari) on macOS means the UI must stay Safari-clean — it already must be, since Mac browsers are a first-class client today.

3 · Orbit relationship — deliberately separate

4 · Phases

  1. Shell (~4–6 sessions). Tauri project, core URL config + switcher, session persistence, native notifications from the existing realtime events, macOS + Windows CI builds. macOS signing/notarization reuses the orbit codesign pipeline.
  2. Installed feel (~3–5 sessions). Tray + unread badge, deep links (neutron://thread/… from emails and forge comments), auto-update channel, Linux AppImage.
  3. Orbit doorway (~2–3 sessions). Detect local daemon, surface pairing status, hand off to the existing orbit pairing flow.

5 · Acceptance