Skip to content

Epic: Desktop Shell ​

Which technology apps/desktop is built on. A one-task epic: once decided, everything else desktop needs lives in Desktop Core Port, not here.

Overview ​

Per the developer's decision, desktop as a whole is deliberately deferred — see Desktop Core Port for the epic holding the actual implementation work, sequenced against Phase 1/2/3 separately from this one. This epic exists only to hold the shell-technology decision itself, and closes once that decision is recorded.

Sequencing note: this epic's own dependency ("Mobile MVP (Phase 1) shipped") was deliberately pulled forward ahead of task 0.1.20 (store release setup, the one still-open Phase 1 item) on the developer's explicit instruction — see research 0010.

Tasks ​

✅ 9.1 — Desktop shell technology spike ​

Goal: Decide the desktop client's technology once there's a reason to build it.

Deliverables:

  • A short research pass (candidate: a follow-up research doc) comparing Tauri, Electron, and any RN-desktop option against this app's specific needs — native llama.cpp bindings, Tier 3 OS integration surface, install size.

Dependencies: Mobile MVP (Phase 1) shipped.

Review checklist:

  • A decision is recorded (mirroring this repo's research-doc convention) before any desktop implementation task starts.

Decided: Tauri v2. Full reasoning, options considered, and the alternatives' rejection rationale in research 0010. In short: llama.rn (the mobile inference binding) has no macOS/Windows support and no signaled path to it, ruling out a React Native desktop shell without giving up the one thing that would have recommended it (reusing packages/mobile-ui directly); Tauri and Electron both have real, maintained Rust/Node llama.cpp bindings, and Tauri wins on install size and on its default-deny capabilities model, which is the closest structural match to this project's existing per-connector permission architecture. Electron's advantage — no new language, since the stack is TypeScript throughout today — was the strongest point on its side and is recorded as the real cost of this decision, not dismissed.

Open source under AGPL-3.0. Each Sovereign instance is independently operated.