Desktop workbench for slot games on the
Stake Engine RGS contract.
Run, debug, and visually QA your slot locally — multi-resolution test view,
fast Rust LGS, team sync, one-click shareable preview links.
Grab the latest build from the Releases page:
| Platform | File | Notes |
|---|---|---|
| Windows 10/11 (x64) | Stake-Dev-Tool-vX.Y.Z-windows-x64.exe |
NSIS installer |
| macOS Apple Silicon | Stake-Dev-Tool-vX.Y.Z-macos-arm64.app.tar.gz |
Extract → drag .app into /Applications |
| Debian / Ubuntu (x64) | Stake-Dev-Tool-vX.Y.Z-linux-x64.deb |
sudo apt install ./<file>.deb |
| Other Linux (x64) | Stake-Dev-Tool-vX.Y.Z-linux-x64.AppImage |
chmod +x then run |
Intel Macs aren't supported — open an issue if that's a blocker.
- Fast Rust LGS — drop-in
/api/rgs/<game>/wallet/…server. Readsindex.json+lookuptable_*.csv+books_*.jsonl.zstfrom disk, indexes books once per mode, weighted RNG via binary search. - Multi-resolution test view — run your game side-by-side at 7 built-in resolutions plus any custom sizes. Each iframe is its own session.
- Live event stream — SSE pushes every spin to the test view, with bet history + last-event strip per frame.
- Force / replay / bookmark — pin any
(mode, eventId), replay a saved outcome, bookmark notable rounds (auto-picked min / avg / max per mode). - Local HTTPS — bundled CA installs into your user trust store. Zero browser warnings, no game-code hacks.
- Teams — collaborative workspaces backed by a private GitHub repo. Sync profiles + saved rounds + math files (chunked Release assets).
- Share preview link — one click ships your game as a static page on GitHub Pages. Math + game run in the browser via a WASM RGS — no server, anyone with the URL can play. Three privacy modes (Sampled / Partial / Full).
- Profiles — math folder + front URL + resolution snapshot saved per game, one-click reload.
- Auto-updater — Minisign-signed releases, silent install on Windows, replace-in-place on macOS/Linux.
- Launch the app and click Install Local CA in the amber banner. One
prompt on macOS, silent on Windows; on Linux the
.debpullslibnss3-toolsautomatically (AppImage users:sudo apt install libnss3-tools). Firefox uses its own store — trust manually if needed. - Browse… to your game's math folder.
- Enter the Front URL of your game's frontend (e.g.
http://localhost:5174). - Launch test view — a Chromium window opens on
https://localhost:<port>/test/…(default port 3001, configurable from the topbar Settings) with your game at every enabled resolution. - Save the profile to reload it in one click next time.
The test view sidebar covers balance, currency, language, device, social mode, custom resolutions, force / bookmark / replay, and per-frame mute.
<math_root>/
└── <game-slug>/
├── index.json # { "modes": [{ "name", "cost", "events", "weights" }, …] }
├── lookuptable_<mode>.csv # eventId,weight,payoutMultiplier
└── books_<mode>.jsonl.zst # one event per line, zstd-compressed
Modes are auto-detected from index.json.
┌─ Tauri desktop app ───────────────────────────────────┐
│ WebView2 UI (SvelteKit) ←IPC→ Rust commands │
│ │ │
│ Embedded LGS (axum + rustls) │
└──────────────────────────────────┬────────────────────┘
│ HTTPS (local CA)
▼
External Chromium (--max-active-webgl-contexts=64)
→ iframe × N (one per resolution)
The test view is served by the LGS (not Tauri's custom protocol) so iframes load from a real browser context with full WebGL support.
crates/lgs— LGS library + standalone binary. Run without the desktop viacargo run -p lgs --release.crates/desktop— Tauri shell + commands.crates/lgs-wasm— math engine compiled to wasm32 for browser-hosted preview links.ui/— SvelteKit frontend, builds to static HTML/JS.
RGS contract (Stake Engine compatible)
POST /api/rgs/<game>/wallet/{authenticate,balance,play,end-round}
POST /api/rgs/<game>/bet/event
GET /bet/replay/<game>/<version>/<mode>/<event>
Devtool (test view + desktop, no auth)
GET /api/devtool/status
POST /api/devtool/sessions/prepare
GET /api/devtool/sessions/<sid>/{last-event,events,stream} ← SSE
GET /api/devtool/games/<game>/modes
GET /api/devtool/bet-stats/<game>
GET /api/devtool/saved-rounds (POST + PATCH/DELETE :id)
GET /api/devtool/settings (POST toggle, custom + DELETE :id)
GET /api/devtool/force-event (POST + DELETE)
LGS_BIND_ADDR=127.0.0.1:3001 \
LGS_MATH_DIR=./math \
cargo run -p lgs --release| Variable | Default | Purpose |
|---|---|---|
LGS_BIND_ADDR |
0.0.0.0:3001 |
Where the LGS binds |
LGS_MATH_DIR |
./math |
Root folder of game subfolders |
LGS_UI_DIR |
auto-detected | Override path to ui/build/ |
RUST_LOG |
info |
tracing-subscriber filter |
Prerequisites
- Rust 1.90+ (rustup)
- Node.js 20+ and pnpm 10+
- Windows: WebView2 Runtime (pre-installed on Win 11)
- macOS: Xcode Command Line Tools
- Linux:
libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
git clone https://github.com/simnJS/stake-dev-tool.git
cd stake-dev-tool
pnpm install
pnpm tauri:dev # hot-reload dev build
pnpm tauri:build # release build → target/release/bundle/The app checks GitHub Releases on startup and shows a banner when a newer version is published. Updates are Minisign-verified and installed silently (passive NSIS on Windows, replace-in-place elsewhere).
Releases are signed via the GitHub Actions workflow on every v* tag — see
CONTRIBUTING.md for the maintainer setup.
Issues, PRs, and discussions are welcome — see CONTRIBUTING.md.
MIT — see LICENSE.
Built by @simnJS · Changelog · Report a bug