For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /docs/desktop/tech-stack.md (or send Accept: text/markdown).
Desktop tech stack
The technologies inside the Tauri shell and the role each one plays.
Before you begin
The Desktop app is deliberately thin: a Rust core owns the native window while a webview loads your web app. Its setup is already pinned in the checkout — this page explains what each piece does so the later guides make sense.
Product UI, authentication, billing and AI all live in the web codebase the window loads. A Desktop-only checkout contains only the shell — which is why this stack is small on purpose.
Tauri 2 + the system webview
Tauri 2 renders the app with the operating system's own webview — WebView2 on Windows, WebKit on macOS, WebKitGTK on Linux — so the shell stays small and carries no bundled browser runtime. frontendDist points at apps/desktop/ui, the boot page shown while the web app loads, so a cold start never renders a blank window.
Rust + TypeScript
The shell's behavior is Rust — src-tauri/src, edition 2021, minimum Rust 1.90 — built by cargo. Small Node scripts written in TypeScript handle the release preflight and the updater manifest.
Native features via plugins
Window state, single instance, deep links, the global shortcut, the tray, launch at login, the updater, external-link opening, dialogs and process control all come from tauri-plugin-* crates — the shell adds no custom IPC commands of its own. Adding a native capability means registering another plugin or wiring the ones already present.
tauri.conf.json + capabilities
The bundle identifier com.supastack.desktop, the window list, plugin options and the updater endpoint live in src-tauri/tauri.conf.json. Webview permissions stay in src-tauri/capabilities/default.json — currently core:default plus opener:allow-open-url for system-browser links — and are widened only when a native feature needs them.
Verification tooling
cargo test covers the Rust logic — URL resolution, the navigation gate, deep-link mapping, updater channels, zoom and window preferences — while node --check validates the boot page and check:release-config gates release builds. CI builds all three operating systems.
corepack pnpm --filter @supastack/desktop test
corepack pnpm --filter @supastack/desktop typecheck
corepack pnpm --filter @supastack/desktop check:release-config