Minimal Tauri app showing how to build for all 5 platforms from a single Mac using utm-dev.
This is a reference example — copy this structure into your own project. The key pieces are:
mise.toml— platform tasks, remote task include, tools, envsrc-tauri/— standard Tauri app (Rust backend)ui/— frontend (plain HTML here, swap for React/Vue/etc.)
mise install # Install tools (Rust, Bun, cargo-tauri, etc.)
mise run setup # Install Mac + mobile dev tools (one time)mise run mac:dev # macOS desktop (hot reload)
mise run mac:build # macOS .app/.dmg
mise run ios:sim # iOS simulator
mise run ios:xcode # Open in Xcode (device/debugging)
mise run ios:build # iOS release IPA (requires signing)
mise run android:sim # Android emulator
mise run android:studio # Open in Android Studio (device/debugging)
mise run android:build # Android .apk/.aab
mise run windows:build # Windows .msi/.exe (VM auto-starts)
mise run linux:build # Linux .deb/.AppImage (VM auto-starts)
mise run all:build # Build every platform at once
mise run icon # Generate all platform icons from app-icon.png
mise run clean:project # Wipe build artifacts and start freshwindows:build and linux:build call utm-dev's vm:build under the hood. It:
- Starts the VM (downloads + bootstraps on first run)
- Syncs your project into the VM
- Runs
mise run buildinside the VM (thebuildtask in thismise.toml) - Pulls artifacts back to
.build/windows/or.build/linux/
Your mise.toml must define a build task — that's what the VM executes.
- Copy this
mise.tomlto your project root - Swap the
includesline from local to remote:includes = ["git::https://github.com/joeblew999/utm-dev.git//.mise/tasks?ref=main"]
- Run
mise run initto add[tools]and[env](or keep them from this example) - Replace
ui/with your frontend framework - Customize
src-tauri/tauri.conf.jsonwith your app name, identifier, icons