Stoatworks Flasher
Firmware onto our hardware, or any ESP32, from a browser

What it does
Our boards all run on ESP32s, and each has a serial port its firmware can go on through: the CANary's and Cuckoo's own USB-C, or a USB-serial adapter on the nanODE's edge pads. This page does the flashing from a browser tab with Espressif's esptool-js, so putting firmware on a board doesn't need a Python install or an ESP-IDF checkout. It used to be the CANary Flasher, and its old address still works: it forwards here with the CANary chosen.
Every release of every device comes bundled with the page, in each of its variants, and each part is checked against its published SHA-256 checksum before it's shown. Or bring your own: a release zip you saved earlier, a whole-flash image, or the parts of an ESP-IDF build. Each file is identified by what's in it rather than what it's called, and goes where its chip and the partition table say that kind of file belongs. Anything it can't place, a filesystem image say, waits for an offset you type.
Before it writes anything, the page reads the board: the chip, its MAC, its flash size, its partition table, and which firmware its bootloader will boot, from the board's own OTA records. So you can see what you're about to replace before you replace it, and a board already running one of our devices' firmware picks that device for you.
Every release is also a download: the release zip, which this page and Burrow both read, and a whole-flash .bin per variant for esptool. They're on each device's GitHub release, pinned to its tag, with a copy on the page itself.
- Every bundled release of the CANary, nanODE and Cuckoo, checksummed, in every variant
- Your own file: a release zip, a whole-flash image or the parts of a build, identified by their contents
- Any ESP32, from the original to the S3, C6 and P4, laid out by its own partition table
- Shows what the board boots before overwriting it
- Refuses the wrong chip, a foreign app, anything off its partition and overlapping writes
- Every write verified by read-back
- Keeps the board's settings unless you ask for a full erase
- Downloads of every release, so you only fetch it once
- A serial console to watch it boot
Where it stands
A beta. The image checks, the checksums and the write verification are covered by tests that run against every bundled image, and the page has been driven in a browser as far as connecting. It hasn't flashed a board end to end yet, and the page says so above the controls. Desktop Chrome, Edge or Opera only, because it needs Web Serial.