Badge Playground

development preview — not hardware evidence
click, tap or hold the badge's buttons · one-finger drag elsewhere to rotate · double-click or double-tap to frame the screen
not booted · frame sha256 — · —
keys: ↑/↓ Up/Down · A/S/D = A/B/C · Esc HOME · drag an app folder onto the badge to install it
click to open the logs

Runs the repository's canonical production MicroPython byte-for-byte in the pinned Badgeware runtime. Browser behavior demonstrates product logic only — no performance, power, radio, filesystem-durability or physical claims.
✓ check — what this browser can do (3D, drive access, serial).

Deploy to the physical badge

A deploy is just a file copy — no toolchain needed on this computer. This browser exposes direct drive access (the File System Access API); it needs a secure origin — https or localhost (use tailscale serve for the always-on instance).

  1. Plug the badge into this computer with USB.
  2. Double-tap RESET (small button on the badge). The screen says Disk Mode and a TUFTY drive appears. (HOME/BOOT + RESET is the firmware bootloader — that's a different thing, don't use it here.)
  3. Remembered for next time.
  4. Writes the exact hash-verified bytes of everything you see — all apps and the launcher — then reads them back to check. A dev-server playground deploys source (.py); a built playground deploys the compiled bytecode (.mpy) the badge actually runs — the log above says which. Deploy changes only skips apps whose last fully-verified install (recorded on the drive) matches the staged package and whose on-device file list still matches exactly; skipped apps are not byte re-verified — Deploy everything is the proof path. Hash-verified is not the same as current: these are the bytes packaged when this playground was started or built, so after a git pull re-package (restart the dev server, npm run package-apps, or npm run build) before deploying.
  5. Eject TUFTY in your OS, then tap RESET once. Done.