Skip to main content

Build & Release

Desktop App (Tauri v2)

The Tauri bundler produces platform-specific installers:

PlatformFormatOutput
WindowsNSIS installerContop Desktop_x.x.x_x64-setup.nsis.exe
WindowsPortable zip (for Scoop)Contop-Desktop_x.x.x_x64-portable.zip
macOSDMGContop Desktop_x.x.x_aarch64.dmg
LinuxAppImage + DEBContop Desktop_x.x.x_amd64.AppImage, .deb

Building

cd contop-desktop
npm run tauri build

Output is placed in src-tauri/target/release/bundle/.

Code Signing

Currently unsigned (open-source alpha). Users install via package managers (Homebrew, Scoop) to avoid security warnings, or accept the OS-level warning on manual installs.

  • Windows: Authenticode signing planned for production (certificate ~$60-80/year, or SignPath OSS)
  • macOS: Apple Developer ID signing + notarization planned ($99/year)
  • Linux: No signing required

Server Sidecar Bundling

The Python server is bundled as a sidecar. The Tauri app manages it via uv run uvicorn:

  • The uv binary and server code are included in the installer / portable zip
  • Server dependencies are resolved at install (NSIS) or first launch (all other methods) via uv sync
  • NVIDIA GPU is auto-detected - CUDA PyTorch (~2.5 GB) is installed if available, otherwise CPU-only (~500 MB)
  • First-launch setup shows a progress overlay with download status
  • The sidecar is spawned on app startup and killed on exit

Mobile App (Expo EAS Build)

Mobile builds use Expo with a managed workflow and dev client for native WebRTC dependencies.

iOS (TestFlight)

cd contop-mobile
eas build --platform ios --profile production
eas submit --platform ios

Android (APK)

cd contop-mobile
eas build --platform android --profile production

The APK is available for direct download. Google Play distribution is planned for GA.

note

Production builds require EAS Build or expo run:android / expo run:ios with a dev client due to native WebRTC bridging.

Distribution Channels

PlatformChannelStatusSecurity Warning?
macOSHomebrew (brew install slopedrop/contop/contop)ActiveNone
macOSDirect download (DMG)ActiveGatekeeper (right-click → Open)
WindowsScoop (scoop install contop)ActiveNone
WindowsDirect download (NSIS installer)ActiveSmartScreen (More info → Run anyway)
LinuxDirect download (AppImage / DEB)ActiveNone
AndroidDirect APKBetaInstall from unknown sources
iOS-Not yet available-
iOS App StorePlanned--
Google PlayPlanned--

Package Manager Repos

After each desktop release, update the Homebrew tap and Scoop bucket with the new version and SHA256 hash. See the Release Guide for step-by-step instructions.

ManagerRepoManifest
Homebrewslopedrop/homebrew-contopCasks/contop.rb
Scoopslopedrop/scoop-contopbucket/contop.json

Related: Installation · Testing · Project Structure