One native desktop app. Six reasons it's not a web build.
Market making, cross-exchange arbitrage with on-chain transfers, and live multi-session quoting deserve a real desktop client. We picked Tauri v2 over Electron for the smaller footprint and the security model. Here's the operator-level case.
Sub-100ms fill-to-screen
Order updates from the bundled Node sidecar reach the UI over an in-process channel, not a public WebSocket. A market-making session quoting a tight spread sees its fill before a browser tab would have finished the round-trip to a SaaS API.
→ Local IPC vs ≥150ms cloud round-trip
Your API keys never leave the box
Exchange API keys are encrypted client-side with AES-256-GCM and stored locally. The ciphertext is not synchronised, not backed up to our servers, not present on any third-party device. A web app cannot match this — at minimum, the keys would have to traverse the browser session.
→ Zero key exposure to our infrastructure
Works offline (sort of)
The bundled SQLite database lets you review trade history, PnL reports, and audit logs with no internet at all. The exchange connectors obviously need network to trade, but everything analytical keeps working — useful when your provider drops and you need to know what just happened.
→ Analytics & audit log: offline-capable
Native OS notifications + system tray
Alerts fire as Windows toast / macOS Notification Center entries — they survive a closed browser tab and respect Do-Not-Disturb. The tray icon shows live active-session count without you needing to refocus the app.
→ Toast + tray badge, no permission dance
Signed auto-updates
v1.0.33 ships with a Tauri signed-update channel. The desktop checks our manifest on startup and every 6 hours; if a newer build with a valid signature is available, a snackbar offers to install it. Bundles without a signature matching the embedded public key are rejected — no man-in-the-middle, no fake installer.
→ Ed25519 signed bundles only
Bundled Node sidecar — zero deploy
The Node.js runtime and the entire compiled server bundle ship inside the installer. No `node_modules` install, no Docker, no port collisions with your other tools. Tauri spawns the sidecar at startup, waits for the health check, then shows the window.
→ Single 33 MB installer, zero post-install config
Android companion · v0.1.1
Your desktop. In your pocket.
A thin Android companion that pairs with your desktop over LAN. It NEVER holds your exchange API keys — every authenticated call still happens on the desktop, with biometric-gated approval from the phone for sensitive actions.
Biometric-gated approvals
Withdraw gate, sell gate, and stop-loss confirmation each require a fresh Face/fingerprint check on the phone. Approve a cross-exchange withdraw while you're at lunch instead of running to your desk.
Push notifications via FCM
Sub-second alerts on approval-needed, stop-loss fired, auto-pause, and confirmed deposits. Tap the notification to land directly on the right tab — Approvals, Sessions, Spreads.
Read-only by design
Sessions list, opportunities feed, wallet, alerts — all read-only. Exchange API keys never leave the desktop. Worst-case theft of the phone reveals trade history, not funds.
Built with Android Studio
No EAS, no Expo cloud, no third-party CI. The APK is built locally with gradle + Android Studio and self-distributed from this same server.
CryptoRoute-mobile.apk
Android 8.0+ · 73 MB · sideload only · pairs over your home WiFi
Before pairing, enable the desktop's LAN listener: MOBILE_API_ENABLED=1.
What's in the installer
One file. Everything to trade.
The Windows installer (CryptoRoute_1.0.38_x64-setup.exe, 33 MB) bundles the Tauri shell, a portable Node runtime, the compiled server, the React UI, and a clean SQLite database. No prerequisites, no separate downloads.
| Shell | Tauri v2 (Rust core, ~6 MB) |
| UI | React 19 + Vite 6 + MUI 6 + Zustand |
| Charts | Lightweight-charts + Recharts |
| Sidecar | Node 22 + Express + Pino, bundled inline |
| DB | SQLite (better-sqlite3) — single .db file |
| Updates | tauri-plugin-updater, Ed25519 signed manifest |
| Encryption | AES-256-GCM, scrypt-derived per-user key |
System requirements
Spec sheet
Desktop
- OS
- Windows 10 / 11 (64-bit). macOS 12+ in beta.
- CPU
- Dual-core 2 GHz+ (any reasonably modern x86_64)
- RAM
- 4 GB minimum, 8 GB recommended for MM sessions
- Disk
- ~150 MB installed (incl. bundled Node runtime)
- Network
- Stable broadband, outbound 443 to exchanges
- Background CPU
- ≈1–3% idle, ≈8–15% during MM quoting
The objections, answered
“But isn’t a web app more convenient?”
Can I run CryptoRoute on a Chromebook or iPad?
No. Both lack the local compute and persistent-process model the market making engine needs. If portability matters more than performance, this isn't the tool for that workflow.
What if I'm away from my desktop?
Configure Telegram or email alerts in Settings — they fire when a trigger condition hits. For execution while away, you'd need to leave the desktop running; the auto-pause watchdog keeps an idle MM session from drifting into a bad inventory state.
Why Tauri instead of Electron?
Smaller installer (~33 MB vs ≥120 MB for an equivalent Electron app), uses the OS-native WebView instead of bundling Chromium, and the Rust core is faster to audit for security.
Is the macOS build the same product?
Yes — same React UI, same Node sidecar, same SQLite layout. The macOS build lags Windows by 1–2 releases while we finalise notarisation; v1.0.19 is the last shipped macOS bundle and v1.0.33 is currently in QA.
Download. Install. Start trading.
Future versions install in-app via the signed auto-updater — this is the last time you'll have to download anything by hand.