Sparus is a lightweight, customisable game launcher available on Windows, macOS, Linux, and Android. It handles game installation, updates, and launch — all from a single desktop (or mobile) application built on top of Tauri v2.
The frontend is built with React 19 + MUI v9, while the backend is written in Rust. A Module Federation runtime is included to allow dynamic plugin loading at runtime.
- 🎮 Launch & update — installs and keeps your game up-to-date via a remote
state.jsonmanifest - 🔔 Update notifications — notifies the user when a launcher or game update is available
- 📦 Split button — single button that adapts its label/action (Install / Play / Update / Restart)
- 🧩 Plugin system — dynamic module loading via
@module-federation/runtime - 🤖 Android support — APK build with keystore signing and dev host handling
- 🔒 CSP-compliant — proper Content Security Policy for WebView2 (Windows) and other platforms
- 💾 Persistent config — stores user preferences via
@tauri-apps/plugin-store - 📣 System notifications — native OS notifications via
@tauri-apps/plugin-notification - 🚀 Auto-start — optional launcher auto-start on system boot
| Layer | Technology |
|---|---|
| Desktop | Tauri v2 |
| Frontend | React 19, React Router 7, MUI v9, Emotion |
| Backend | Rust, Wasmtime (WASM plugin runtime) |
| Plugins | @module-federation/runtime (dynamic remote loading) |
| Build | vite-plus (vp), TypeScript 6 |
| Mobile | Android (Kotlin), APK signing via keystore |
| CI | GitHub Actions (Linux, Windows, macOS x86_64/arm64, Android) |
-
Rust (stable toolchain)
-
vite-plus — unified toolchain (
vp) that manages Node.js and the package manager automaticallymacOS/Linux:
curl -fsSL https://viteplus.dev/install.sh | shWindows: Download and run
vp-setup.exe
Windows
WebView2 Runtime (usually pre-installed on Windows 11)
macOS
Xcode Command Line Tools: xcode-select --install
Linux (Debian/Ubuntu)
sudo apt update && sudo apt install \
libwebkit2gtk-4.1-dev \
build-essential \
curl wget \
libssl-dev \
libgtk-3-dev \
libappindicator3-dev \
librsvg2-devAndroid
- Android SDK + NDK
- Set
ANDROID_HOME,NDK_HOME, and a keystore file for signing (see CI config for reference)
git clone https://github.com/Ludea/Sparus.git
cd Sparus
vp installCopy the sample configuration into src-tauri/:
cp src-tauri/Sparus-sample.json src-tauri/Sparus.jsonEdit Sparus.json to point to your game's remote update server and set default values (game name, binary, repository URL, etc.).
vp tauri devAndroid dev: set
TAURI_DEV_HOSTto your machine's local IP so the WebView on the device can reach the Vite dev server.
vp tauri buildBinaries are output to src-tauri/target/release/.
⚠️ Cross-compilation is not supported. Build on the target platform.
Sparus/
├── src/ # React frontend (TypeScript)
├── src-tauri/ # Rust backend (Tauri)
│ ├── src/ # Rust source files
│ ├── Sparus-sample.json # Sample launcher config (copy to Sparus.json)
│ └── tauri.conf.json # Tauri configuration
├── index.html
├── vite.config.ts
└── package.json
The launcher reads a Sparus.json file from the Tauri resource directory at startup. The file is created with defaults on first run if it does not exist.
Key fields include the remote server URL for the game manifest (state.json), the game binary name, and the subfolder structure expected on the server.
Pre-built binaries for Windows, macOS, Linux, and Android are published on the Releases page.
| Platform | Artifact |
|---|---|
| Windows | .msi / .exe |
| macOS | .dmg |
| Linux | .AppImage / .deb |
| Android | .apk |
Contributions are welcome! Please open an issue first for any significant change, then submit a pull request against main.
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Commit your changes following Conventional Commits
- Open a pull request
Distributed under the Apache-2.0 license. See LICENSE for details.