Skip to content

Building and packaging

Git, Rust (stable; the MSVC toolchain on Windows), and pnpm — the install page’s prerequisites table covers the Windows details. On Linux and macOS add the standard Tauri v2 system packages for your OS (Tauri’s prerequisites guide lists them; the exact apt set CI uses is in .github/workflows/release.yml). Node is not on the list — the repo pins it and pnpm fetches it.

Terminal window
pnpm install # frontend dependencies
pnpm tauri dev # development mode (hot reload)
pnpm tauri build # produce an installer
cargo test --workspace # Rust unit tests (must be fully green before committing)
pnpm build # strict tsc check + vite bundle

You never build the hub server as a routine step — pnpm tauri dev and pnpm tauri build both do it for you (see Packaging below). cargo build --release -p aipos-mcp exists only as the recovery command the app itself prints when the executable has gone missing.

pnpm tauri build produces the installer (on Windows: MSI and NSIS).

The hub server ships inside the installer. scripts/prepare-sidecar.mjs builds aipos-mcp and stages it; it is wired into both beforeDevCommand and beforeBuildCommand, and Tauri’s externalBin mechanism packages it next to the main executable. After installation the app finds it without any PATH setup.

Windows also gets a portable build — the app and the hub in one zip, no installer. node scripts/make-portable.mjs (after pnpm tauri build) writes target/portable/AI-POS_<version>_<arch>_portable.zip; unzip anywhere you can write to and run ai-pos.exe. It is Windows-only on purpose: Linux’s AppImage is already a no-install format, and an unsigned macOS app served from a zip hits Gatekeeper harder than the dmg does. Two caveats: the portable build cannot fetch the WebView2 runtime for you (the installer can), and AppLocker/WDAC block by execution policy, so they stop a portable exe just the same.

Multi-platform installers are produced by CI (three targets: Windows x64, Linux x64, macOS arm64), and the Windows job builds the portable zip alongside them. Pushing a v* tag opens a GitHub pre-release with the installers and the zip attached; workflow_dispatch uploads them as workflow artifacts instead. v0.1.0 is the first tag, and its build is on the releases page.

This stage does no OS code signing, so each OS will warn about an unknown publisher on first launch:

  • Windows — SmartScreen blue box → “More info” → “Run anyway” (the installer and the portable exe alike).
  • macOS — Gatekeeper blocks it → right-click the app → “Open” → confirm. Or run xattr -dr com.apple.quarantine /Applications/AI-POS.app.
  • Linuxchmod +x the AppImage before running it; for the deb, sudo apt install ./AI-POS_*.deb.

Automatic updates are not enabled yet.