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/ship-in-5-minutes.md (or send Accept: text/markdown).
Run desktop in 5 minutes
Prepare Rust and your operating system's build tools, start a reachable Web backend, launch the Tauri window and verify tray, shortcut and local task behavior.
1. Install the general and native tools
Complete Before you start, clone your Desktop repository or All Platforms monorepo, and open it in the editor. Desktop is a native window around the same Web app. It does not include a second implementation of accounts or chat. The five-minute launch begins after dependencies and native tools are installed; first-time installation and Rust compilation often take longer.
On Windows install Microsoft C++ Build Tools using the Tauri prerequisites link below. In its installer select Desktop development with C++, keep the Windows SDK selected and complete installation. Ensure Microsoft Edge WebView2 Runtime is installed. Install Rust from rustup.rs using rustup-init.exe; keep the default MSVC toolchain. Reopen your terminal after installation.
On macOS, run xcode-select --install in Terminal and complete the command-line tools dialog if they are not installed. Install Rust using the macOS command from rustup.rs. On Linux, follow the Tauri prerequisite page for your exact distribution's WebKitGTK, compiler, tray and system-library packages, then install Rust. Linux package names vary; do not run another distribution's commands.
Open a terminal at the repository root and run the version checks below. Both rustc and cargo must print versions; cargo is Rust's build tool. If either is missing, finish the installation and reopen the terminal before continuing.
- Install the tools and get the code
- Learn how to run a command and edit a file
- Tauri's operating-system prerequisite checklist
- Official Rust installer
rustc --version
cargo --version
corepack pnpm install2. Start or choose the Web backend
If your checkout contains apps/web, follow the Web tutorial, create apps/web/.env.local, run the Web server in a separate terminal using the command below and leave it running. First check http://localhost:3000 in your browser. You can use the /dashboard demonstration without a database; real sign-in at /auth needs migrated Postgres.
A Desktop-only checkout does not contain apps/web. Use the separately running Web backend supplied for your product, and open its URL in your browser to confirm it works. The desktop shell cannot create the backend for you. Do not try the Web command below if that folder is absent. Step 3 shows how to choose a provided backend address.
# Only when this checkout contains apps/web:
corepack pnpm --filter @supastack/web dev3. Launch the desktop window
Open a second terminal at the repository root while the backend stays running. For the default local backend at http://localhost:3000, run the first command below. Cargo may download libraries and compile the shell; wait for the Supastack window to open. Compiler messages during the first build are expected.
For a provided backend, replace https://app.example.com in the appropriate operating-system block below with its actual URL. Run only your platform's block. SUPASTACK_APP_URL is a terminal environment setting, read when the native process starts. Putting it only in root .env will not configure the shell. Keep the backend URL free of embedded usernames or passwords.
In the All Platforms monorepo, corepack pnpm dev:desktop can start Web and Tauri together once pnpm is on PATH as explained in Before you start. The filtered command below also works in Desktop-only checkouts, with the backend running separately.
# Default local backend (all operating systems):
corepack pnpm --filter @supastack/desktop dev
# Custom backend — Windows PowerShell only:
$env:SUPASTACK_APP_URL = 'https://app.example.com'
corepack pnpm --filter @supastack/desktop dev
# Custom backend — macOS / Linux only:
SUPASTACK_APP_URL=https://app.example.com corepack pnpm --filter @supastack/desktop dev4. Check the window, tray and shortcut
Success means the window displays the same homepage as your backend in the browser. The desktop window has no browser address bar. To open the credential-free demonstration, quit the shell using the tray's Quit action, then run your operating system's block below in the desktop terminal while the Web server stays running. This loads /dashboard directly; follow the Web tutorial's local task steps there. Real account sign-in uses the backend's database, just as in the browser.
Close the window using its close button: the app should hide to the tray rather than exit. Click the Supastack tray icon or press Ctrl + Shift + Space on Windows/Linux, or Command + Shift + Space on macOS, to show it again. Use the tray's Quit action to exit. To end development completely, also press Ctrl + C in the desktop terminal and then stop the backend terminal.
If the window is blank or shows a connection problem, first open the configured URL in a browser. Start the backend or correct the URL, then restart Tauri. If Rust reports linker.exe not found, install the Windows C++ workload and reopen the terminal. If Linux reports a missing system library, follow the distribution-specific prerequisites. If the hotkey is already taken, use the tray and follow Native behavior to change it.
This launches a local development window; it does not produce a signed installer or publish an app. Follow Desktop distribution for installer builds, platform signing and testing on another machine. Windows compilation does not verify macOS or Linux behavior.
# Open the local demo — Windows PowerShell only:
$env:SUPASTACK_APP_URL = 'http://localhost:3000/dashboard'
corepack pnpm --filter @supastack/desktop dev
# Open the local demo — macOS / Linux only:
SUPASTACK_APP_URL=http://localhost:3000/dashboard corepack pnpm --filter @supastack/desktop devUse the local app URL
Without an override, Tauri loads http://localhost:3000. Set SUPASTACK_APP_URL only if your local Next.js app uses another reachable HTTP(S) origin. Credential-bearing or non-web URLs are rejected.
The development bundle identifier and release configuration are not production-ready settings. Keep the release preflight and platform signing for the separate release guide.