6.9 KiB
Velxio Desktop App
Native desktop build of the Velxio simulator — same React frontend, wrapped in a Tauri shell, with the QEMU binaries bundled in. Targets Windows, macOS, and Linux.
The desktop app is a Pro feature (30-day free trial). The OSS web build remains free at velxio.dev and via Docker self-host.
What you get
- Offline-capable — the simulator keeps running with no internet. License is validated on launch with a grace period if the network is down.
- Bundled QEMU —
libqemu-xtensa,libqemu-riscv32, andqemu-system-aarch64ship inside the app, so ESP32 and Raspberry Pi boards work without Docker. - Native menus and file system — open
.vlxprojects from the filesystem, save without browser download prompts. - Local compile —
arduino-cli, ESP-IDF, and the custom-chip toolchain are managed by the app, with progress shown in a native panel. - Single-process — frontend, backend, QEMU all in one Tauri runtime — no Docker, no localhost dance.
Install
Download the installer for your platform from velxio.dev/download:
- Windows —
Velxio-Setup-{version}.exe(signed) - macOS —
Velxio-{version}.dmg(notarized) - Linux —
Velxio-{version}.AppImageandvelxio_{version}_amd64.deb
First launch downloads the toolchains it needs (~200 MB for AVR + RP2040, plus ~700 MB for ESP-IDF if you select ESP32 boards). All caches live under the OS app-data dir:
| Platform | Path |
|---|---|
| Windows | %APPDATA%\velxio\ |
| macOS | ~/Library/Application Support/velxio/ |
| Linux | ~/.local/share/velxio/ |
License flow
The desktop app uses vlx_pro_* / vlx_trial_* keys issued by velxio.dev.
Sign in (browser deep-link)
- Launch the desktop app.
- Welcome screen appears (the editor is hidden behind it until authorised).
- Click Sign in with Velxio.
- Your default browser opens
https://velxio.dev/auth/desktop. - Sign in (or create an account) and click Authorise Velxio Desktop.
- The page hands a license token back via the
velxio-desktop://auth?token=…deep-link scheme. - Editor appears.
Paste a license key manually
If your browser blocks the custom-URL scheme (some Linux distros, corporate proxies), click Paste key on the welcome screen and enter the vlx_pro_* or vlx_trial_* string from Account → My licenses.
Offline grace period
Once authorised, the desktop app caches the validated key + entitlements on disk (encrypted via the OS keychain on Windows/macOS, plain file on Linux). On launch:
- Online + valid — proceeds normally.
- Offline + cached key still in grace window — a GraceBanner appears at the top reading "Working offline — re-validate by date". The editor stays usable.
- Offline + grace window expired OR explicit invalidation — welcome screen comes back; the editor stays hidden until re-validation succeeds.
Grace window length and revalidation cadence are set by the license server response (typically 14 days).
ESP32 QEMU prompt
The first time you select an ESP32-family board on the canvas, a side panel asks you to confirm the bundled QEMU shared library was extracted successfully. If extraction failed (antivirus quarantine, missing VC++ redistributable on Windows), the panel offers a manual download link and a "Retry" button.
Once QEMU is in place, the prompt does not appear again unless the cached binary is removed.
Storage layout
%APPDATA%/velxio/ (Windows) or ~/Library/Application Support/velxio/ (macOS)
+- arduino-cli/ arduino-cli binary + index
+- arduino-data/ installed cores (avr, rp2040, esp32, ATTinyCore)
+- esp-idf/ ESP-IDF toolchain (~700 MB, optional)
+- qemu/ libqemu-xtensa, libqemu-riscv32, qemu-system-aarch64
+- ccache/ C/C++ object cache
+- build/ persistent ESP-IDF build dirs (per target)
+- vlx-files/ user-saved projects
+- license.json cached license payload + expiry
+- logs/ rotating log files (last 7 days)
Everything outside vlx-files/ is regeneratable — you can delete the whole folder and reinstall; first launch will refetch.
Tauri bridge
The renderer (React) talks to the native shell through frontend/src/desktop/tauriBridge.ts. The Tauri commands shipped:
| Command | Purpose |
|---|---|
license_get_key |
Read the cached license key from disk |
license_validate |
POST it to https://velxio.dev/api/pro/license/validate |
license_clear |
Wipe the cached key (Sign Out) |
qemu_check |
Verify the bundled libqemu binaries exist + are executable |
qemu_extract |
Re-extract the bundled binaries into the cache dir |
open_external |
open / xdg-open / start for the docs button |
pick_file |
OS file picker for .vlx import |
save_file |
OS save dialog for .vlx export |
The render-side mounts only when VITE_DESKTOP is set at build time, so the OSS web bundle never ships these symbols.
Build from source
The desktop shell is not in this repo (it lives in the closed Tauri build). The renderer code at frontend/src/desktop/ is what mounts on top of the regular SPA when VITE_DESKTOP=true.
If you want to build your own Tauri shell against the OSS frontend, the minimum requirements are:
- A Tauri 2.x project that loads the production-built
frontend/distas its WebView source. - Implement the commands listed under "Tauri bridge" above.
- Bundle
arduino-cliandlibqemu-*for your target platforms. - Set
VITE_DESKTOP=1when runningnpm run buildinfrontend/.
The OSS license still applies to the React side. You provide your own Tauri Rust code and your own license server (the official one is gated to legitimate Pro subscriptions).
Pricing
- Free trial — 30 days, full Pro features, no credit card.
- Pro $15/mo — desktop app + premium components on velxio.dev.
- Pro Max $35/mo — everything in Pro plus the in-app AI assistant and priority simulation queue.
Manage your subscription at velxio.dev/billing.
Troubleshooting
- Welcome screen won't close after sign-in — the deep-link handler didn't fire. Click Paste key instead and use the key from Account → My licenses.
- "libqemu missing" error on ESP32 boards — the prompt to re-extract appears automatically. If it fails, antivirus likely quarantined the file; whitelist
%APPDATA%\velxio\qemu\(Windows) or the equivalent on your OS. - Grace banner says "expired" — connect to the internet briefly and the next launch will re-validate.
- Logs —
~/.local/share/velxio/logs/(or equivalent). Attach the latest file when filing a bug report.
See also
- Getting Started — Hosted, Docker, manual options
- Emulator Architecture — How each CPU backend works