Skip to main content

ADR 0001: Use Tauri as the Desktop Shell


Context​

JobJitsu is a desktop-native AI Career Operating System. The shell must feel native, light, and fast, keep a clear host/UI split, and respect the machine — not ship a heavy SaaS wrapper. Privacy requires privileged work (storage, local LLM, egress, plugins) to live outside the renderer.

Alternatives considered:

OptionProsCons
TauriSmall footprint, Rust host, strong IPC isolation, OS-native feelRust host learning curve
ElectronHuge ecosystem, pure JSHeavy Chromium, weaker “light/fast” fit
Pure native (Swift/Kotlin)Max nativeSplit codebases; slower open-source contribution

Decision​

Use Tauri as the desktop application shell.

  • Host (Rust): storage orchestration, AI runtime lifecycle, agent, scheduler, plugin loader, send egress, event bus, OS notifications.
  • UI (webview): React app; no ambient filesystem or career-payload network.
  • All career egress goes host → packages/send (see ADR 0009).

Consequences​

Positive​

  • Aligns with “native, light, fast” and privacy-as-architecture.
  • Natural process boundary for Agent · On-device chrome honesty and deny-by-default IPC (ADR 0013).
  • Smaller distributables; respectful of user machines.

Negative / tradeoffs​

  • Host logic in Rust requires clear FFI/IPC contracts to TypeScript packages.
  • Some Electron-only libraries unavailable; prefer Tauri plugins or host-side impl.

Follow-ups​

  • Define app bundle entitlements and user-data directory layout in storage ADR.
  • Keep domain logic in TypeScript packages where practical for testability (ADR 0011).