STEALTHOZ.TECH neon sign over a dark alley

WEB SERIAL · SELF-HOSTED BINARIES · NO CLOUD FLASHER

Flash firmware straight from the browser.

Pick a device, pick a firmware, connect over USB. Everything — the flasher and the images — is served from stealthoz.tech. Your browser talks to the board directly over Web Serial; nothing touches a third-party flash server.

Your browser can't flash here. This flasher needs the Web Serial API. It works in Chrome/Edge/Opera (desktop) and Chrome 148+ on Android. Not in Firefox, Safari, or iOS.

Compatibility matrix

Devices × firmware, checked against each upstream project's own release table. “Flash now” opens the in-browser installer; “—” means the upstream project publishes no build for that exact board, and we don't fake one. Small .bin links next to a button are the manual esptool copies of the same image.

Device Meshtastic 2.8.1 MeshCore 1.17.1 Bruce 1.16.1 Marauder 1.18.0 StealthMesh agent Tasmota / MicroPython
Heltec V3ESP32-S3 · SX1262 · 868/915 MHz Flash now .bin Companion Repeater .bin —no upstream build for this board —no upstream build for this board Flash now .bin our own agent — placeholder build MicroPython .bin generic ESP32-S3 build — no board pins configured
M5Stack CardputerESP32-S3 · ADV board in our store Flash now .bin — —Bruce targets the original Cardputer, not the ADV Flash now .bin — —
StealthDeck LiteESP32-2432S028 “CYD” · classic ESP32 · 4 MB —no upstream Meshtastic target for this board — Flash now .bin Flash now .bin — —
StealthDeck ProLILYGO T-Embed CC1101 · ESP32-S3 · 16 MB —no upstream Meshtastic target for this board —no upstream build for this board Flash now .bin —no upstream build for this board — MicroPython .bin generic ESP32-S3 build — no board pins configured
ESP32 DevKit starter kitclassic ESP32 · 4 MB DIY node .bin requires the documented Meshtastic DIY node wiring — —no classic-ESP32 DevKit build upstream —no classic-ESP32 DevKit build upstream — Tasmota .bin MicroPython .bin WLED .bin (app image — flash with esptool)
ESP32-C5 boardsour C5 stock — board variant TBD Coming soon Coming soon Coming soonBruce ships C5 builds upstream; we pin one once our C5 stock variant is settled Coming soon Coming soon Coming soon

Every “Flash now” button points at a binary we downloaded once from the upstream project and self-host here — nothing is fetched from a third-party CDN at flash time. Phones are not Web-Serial flashable — GrapheneOS installs via its own official web installer.

How it works

Short version, no hand-waving.

1. You plug in the board. The browser asks for permission to open the USB serial port — that permission is per-device, per-site, and revocable.

2. The flasher runs locally. The ESP Web Tools bundle (Apache-2.0, self-hosted in /static/vendor/) drives the chip's ROM download mode over Web Serial. It erases, writes the image at 0x10000 and verifies the flash — same protocol as esptool, in your browser.

3. The images are ours. Manifests and .bin files are served from this domain with the same hash-pinned CSP as the rest of the store. SHA-256 sums for our shipped builds are on the firmware verification page.

First flash of a used board: tick “erase device” in the installer so old LittleFS/config partitions don't confuse the new firmware.