Build customized CircuitPython firmware
on demand using GitHub Actions — no local toolchain required.
Start from any supported board, then tune it: enable or disable CIRCUITPY_*
features, add frozen Python modules, choose a specific release or branch, and download
the resulting .uf2 straight from GitHub Actions artifacts.
Loading releases…
Tag, commit (≥8.1.0), or "latest"
Check a flag to override it. Amber = board sets this explicitly. Teal = port default. Select a board to see effective values.
Select a board to see its flag values, or browse all flags below.
Values from this board's mpconfigboard.mk. Check a row to override it.
Select a board to see its flags.
Bold blue = already frozen in the selected board. Unchecking a board default auto-enables "clear".
Loading frozen module list…
Run these commands locally from the root of a CircuitPython checkout.
Select a board to see the equivalent build commands.
Stored only in your browser's localStorage. Browsing works without a token; triggering builds requires one.
Saving your token identifies you via the GitHub API and routes builds to your own fork automatically — you can use this page at its original URL.
You must fork this repo first (one-time setup) and enable Actions on your fork (Actions tab → "I understand my workflows, go ahead and enable them").
Classic token: check workflow scope.
Fine-grained token: set Repository permissions → Actions: Read and write (not "Workflows") on your fork — though fine-grained tokens may still return 403 on some accounts.