Get the apps

On your Mac or Linux machine today: the Lab, the whole workshop with the real firmware emulator, and the Flasher, one-button USB flashing. Local-first. No account, no telemetry.

Free & open source · macOS 11+ · most modern Linux

macOS

Universal · Apple Silicon & Intel

Grab the .dmg and drag it into Applications. These builds are unsigned, so macOS blocks the first launch — clear it once with the command below (right-click → Open no longer works on recent macOS).

Download for macOS
First launch (one time): open Terminal, paste, press return
xattr -dr com.apple.quarantine "/Applications/SecuraCV Lab.app"
Removes the “downloaded from the internet” quarantine flag — then it opens normally, forever. Full steps & the Terminal-free path →
Looking for the file? It's SecuraCV Lab_*.dmg on the release page.

Linux

AppImage · or .deb

Take the .AppImage (runs anywhere — chmod +x and go), or the .deb on Debian/Ubuntu.

Download for Linux
Files: *.AppImage and *.deb on the release page.

SecuraCV Flasher

A separate app · macOS · Linux

A focused native tool that writes firmware onto a Canary over USB with bundled espflash — no browser, no Web Serial. It's its own app on its own release train (tags starting flasher-v): use it to flash, use the Lab to explore.

Download the Flasher
For makers: broker encryption

It carries the same Broker encryption select as the browser flasher: plain MQTT by default (what every Canary shipped with), or TLS to your broker — CA-verified, or pinned to the broker certificate's SHA-256 fingerprint — with port 8883 suggested when you pick a TLS mode. Host-tested; not yet run against a TLS broker on hardware.

One difference: the browser flasher can read a board's security fuses; the desktop Flasher can't, and says so on screen.

All builds live on the GitHub releases page: the macOS and Linux buttons open the newest SecuraCV Lab release (app-v tags), the Flasher button the newest flasher-v. Windows isn't built or tested — no release job, no installer target; Windows users run the browser Lab.

Once installed, the Lab checks for its own updates, shows you what's changing, and installs only when you say yes, every update signed and verified first.

Local-first, always

The app runs on your machine and talks to your own devices. It doesn't call our servers — there's nothing to call. It reaches the internet for two things only, both from the project's public GitHub releases: its own update manifest and, once the Flash page ships, the signed firmware it writes — checked against the pinned release key before a byte is written. The same code you can read on GitHub.

It's the real firmware

The emulator is the shipping display firmware compiled to WebAssembly — same faces, same mood engine, same Ed25519 verify. When the firmware changes, the Lab changes with it.

Or just use the web Lab

Not ready to install? The Lab runs in your browser too. The app adds native touches and, soon, USB flashing — in the source, not yet in a published Lab release. The SecuraCV Flasher above does USB flashing today.

On your iPhone, Apple Watch and Apple TV

Both are built and tested in CI, in the open. The iPhone app is on TestFlight by invite; publishing either to the App Store is still ahead.

iPhone, iPad + Apple Watch

One app · the Watch app rides inside it

Your fleet and its alerts on the Lock Screen and your wrist, with each Canary's signed record checked on the phone itself. Adding a Canary is bring it near, tap Set up: Bluetooth for Sense, Vision and WAP, the display's own setup network for a screen.

When your phone is signed in to iCloud, your list of paired Canaries is kept in your own iCloud, not ours.

On TestFlight (ask for an invite) · App Store release pending

Apple TV

The Witness Wall

Your fleet's signed record on the biggest screen in the house, instead of a wall of live feeds. Until the app is on the App Store, the same Wall runs in a browser today.

Built and tested · not on the App Store yet

Your first Canary — the three phone screens, in words

A Sense, Vision or WAP takes your Wi-Fi from the iPhone app in one tap at first power-on. Here is the whole thing, so you know what you are looking at before it happens.

  1. A card appears: “A new Canary is nearby.” Power the Canary on near your phone with the SecuraCV app open; within seconds the card is there. Tap Continue, then Pair when iOS asks.
  2. Pick your Wi-Fi. The list is the networks the Canary itself can see. Choose yours and type its password once; the phone can remember it for the next Canary.
  3. “<name> is on <your Wi-Fi>.” The Canary answers with its own verdict and the phone says so. That is the setup.

No card within about 30 seconds? Unplug the Canary and plug it back in — the door opens for half an hour after power-on. A Sense or Vision also opens it for a minute on one short tap of its BOOT button. The all-rounder Canary and a display have no card at all: the Canary raises its SecuraCV-XXXX setup network (its key is on the Flasher's done card, read off the board's first boot), and a display shows a join QR on its own glass.

The iPhone app is on TestFlight — ask for an invite; its App Store release is pending. The one-tap door is host-tested and not yet tried on a bench device; the setup network always works.

Prefer to build them yourself? The desktop apps are Tauri apps in the main repo — the Lab in desktop-lab/, the Flasher in desktop/ — npm install && npm run build in either. The Apple apps live in ios/ and tvos/.