🩺 Emulated · self-test & demos

The Canary checks itself.

Every Canary runs a 10-probe self-test at boot and scores its own health 0–100%. Every feature — camera PEEK, mic, motion, GPS, thermal — is one tap to test. None of it costs extra program memory: it's already in the firmware. Watch the Doctor run.

Your Canary firmware · we pick it for you

No decision needed — this is the build most people should run, and everything below matches it. Building something specific, or just curious? Open developer mode to choose any board and level.

⚙️ Developer & education — choose any board & build level

Only the S3 Canary has dev / release / full levels — the others are single builds. BLE + mesh live only in S3 · full (and the WAP), because they don't fit the smaller OTA slots. The tests below re-light to match whatever you pick.

Boot self-test · 10 probes · 0–100% health

Runs automatically on every boot; you can re-run it any time from the console or GET /api/selftest. Each probe is worth 10%.

health

Feature tests & demos

Each of these is a real endpoint or console command already in the firmware — tap Run to see what it does. (Emulated here; on a real device these return live data.)

🔵 Bluetooth bring-up · the hard one

BLE is the heaviest feature, so "it doesn't work" is really several different failures. The test reports the first rung that failed and what to do — including the honest reason it's a [env:full]-only build.

🪶 …and it's nearly free on flash

On the XIAO ESP32-S3 the tight budget is flash, not RAM — so a "run everything" mode reuses what's already compiled in rather than adding a test framework:

  • The boot self-test and its 10 probes already ship (diag_run_selftest()). It's re-run by GET /api/selftest.
  • Every feature already exposes a cheap check — camera captureFrame(), audio_selftest_start(), *_is_running()/*_get_stats() — surfaced by the existing dashboard endpoints.
  • The only add is a one-key console t ("run all") that prints them in a table — a few strings, since every call it makes is already linked in. No new framework, no meaningful flash.

This is an emulation for illustration; live results come from the device. The probe list and feature tests are pinned to the firmware in onboarding-spec.json and checked in CI, so this page can't drift from what the device actually does. Firmware is open source on GitHub.