PlatformIO-compatible embedded build tool (Rust implementation)
Project description
fbuild
fbuild is a fast, multi-platform compiler, deployer, emulator runner, and
serial monitor for embedded development. It reads the same platformio.ini
files already used by PlatformIO sketches, but uses a Rust-native, data-driven
build pipeline.
Build Matrix
These board builds are part of the front door. They show the platform breadth that fbuild actively protects in CI.
AVR
MegaAVR
Renesas
ESP8266
ESP32
CH32V (RISC-V)
CH32X (RISC-V, USB PD)
Teensy
STM32
SAM / SAMD
RP2040 / RP2350
Nordic NRF52
Apollo3
NXP LPC (Cortex-M0+)
Silicon Labs
Raspberry Pi Pico
Board descriptions and family deep-dives live in
docs/BOARD_STATUS.md.
Installation
pip install fbuild
For source installs, platform notes, and first-run cache behavior, start with the getting started guide.
Quick Start
Create a minimal Arduino project:
mkdir my-project
cd my-project
mkdir src
Add platformio.ini:
[env:uno]
platform = atmelavr
board = uno
framework = arduino
Add src/main.ino:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Build it:
fbuild build
On the first build, fbuild downloads the toolchain and framework packages it
needs, then caches them for later builds. A successful Uno build writes
.fbuild/build/uno/firmware.hex.
Examples
Common workflows:
fbuild build
fbuild deploy --clean
fbuild deploy --monitor
fbuild test-emu . -e uno
fbuild monitor --timeout 60 --halt-on-success "TEST PASSED"
Detailed build, deploy, monitor, and emulator examples live in the CLI reference and emulator testing guide.
Docs Index
The full FAQ-style map is docs/INDEX.md. Common entry
points:
| Goal | Start here |
|---|---|
| Install fbuild and run the first build | docs/getting-started/ |
| Use build, deploy, monitor, or test-emu | docs/reference/cli.md |
Configure platformio.ini |
docs/reference/platformio-ini.md |
| Check board and platform support | docs/platforms/ |
| Understand the project rationale | docs/WHY.md |
| Work on fbuild itself | docs/development/ |
| Read architecture internals | docs/architecture/overview.md |
Key Features
platformio.inicompatibility for existing Arduino and ESP32 sketches- Fast incremental builds with cached toolchains, frameworks, and libraries
- URL-based package and library management, including GitHub
lib_deps - Build, deploy, serial monitor, and emulator test workflows from one CLI
- Cross-platform support on Windows, macOS, and Linux
- Transparent architecture with Rust workspace internals documented under
docs/architecture/
See docs/WHY.md for the full rationale, benefits, and
performance notes.
CLI Usage
The user-facing command reference is
docs/reference/cli.md. It covers core workflows
(build, deploy, monitor, test-emu) and diagnostics such as symbols,
bloat, lib-select, compile-many, and ci.
Configuration
fbuild reads platformio.ini project files. The configuration reference,
including default_envs, build_flags, lib_deps, upload and monitor
settings, and compatibility notes, lives in
docs/reference/platformio-ini.md.
Emulator Testing
fbuild can build firmware and run it without hardware via fbuild test-emu or
fbuild deploy --to emu. Emulator backends, auto-detection rules, QEMU notes,
and known limitations live in
docs/guides/emulator-testing.md.
PlatformIO Compatibility: .eh_frame Strip
On supported release builds, fbuild may strip unused GCC .eh_frame unwind
metadata to reduce firmware size. The policy, opt-out controls, and rationale
are documented in
docs/reference/platformio-compatibility.md.
Supported Platforms
fbuild supports AVR, MegaAVR, Renesas RA, ESP8266, ESP32 variants, CH32 RISC-V, Teensy, STM32, SAM/SAMD, RP2040/RP2350, Nordic NRF52, Apollo3, Silicon Labs EFR32, NXP LPC, and WASM via Emscripten.
For the canonical per-board CI badge matrix, support table, and board-family
notes, see docs/BOARD_STATUS.md or the
platforms docs.
Project Structure
The repository is a Rust workspace with a Python package boundary. The human
development guide is docs/development/, and the
crate dependency map is crates/CLAUDE.md.
Architecture
Architecture docs are decentralized under
docs/architecture/. Start with
docs/architecture/overview.md, then follow
the subsystem-specific docs.
Development
Testing, troubleshooting, linting, release, and local setup instructions live
in docs/development/. Project-wide rules for
contributors and LLM agents are in CLAUDE.md.
License
In the spirit of Dan Garcia's permissively licensed software, fbuild is
presented as free software.
BSD 3-Clause License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fbuild-2.3.2-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: fbuild-2.3.2-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 17.4 MB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c86b1ab78e0c55ae7a5aa49a6e459729c4814c265b44ca01dbec1125e4b34cd
|
|
| MD5 |
d97dfdeebfa11c61342467e63c5a4872
|
|
| BLAKE2b-256 |
d46301dc6a5cd8876122b311428d8be4638d5828cb9a4510280c46a7ca8c8865
|
Provenance
The following attestation bundles were made for fbuild-2.3.2-cp310-abi3-win_amd64.whl:
Publisher:
release-auto.yml on FastLED/fbuild
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fbuild-2.3.2-cp310-abi3-win_amd64.whl -
Subject digest:
5c86b1ab78e0c55ae7a5aa49a6e459729c4814c265b44ca01dbec1125e4b34cd - Sigstore transparency entry: 1918016446
- Sigstore integration time:
-
Permalink:
FastLED/fbuild@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FastLED
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-auto.yml@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fbuild-2.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: fbuild-2.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 17.7 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52ffefafa10c6be651680b482ecaf58ddc9c2b2a3c2100a7afb49abef8cb0efa
|
|
| MD5 |
2de8e6c07dbaf1d8c4e42ea39dab2c9c
|
|
| BLAKE2b-256 |
fae411930f53f6b89b092c1256cd47674bb287f9591c06012731cdfeac250005
|
Provenance
The following attestation bundles were made for fbuild-2.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release-auto.yml on FastLED/fbuild
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fbuild-2.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
52ffefafa10c6be651680b482ecaf58ddc9c2b2a3c2100a7afb49abef8cb0efa - Sigstore transparency entry: 1918016169
- Sigstore integration time:
-
Permalink:
FastLED/fbuild@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FastLED
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-auto.yml@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fbuild-2.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: fbuild-2.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 16.4 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d93b846c167d223dff5cda7363563c13caba56113420ed0c6daaa05b0e869426
|
|
| MD5 |
a32b7610ad25d5e1a01a2189cd8de50d
|
|
| BLAKE2b-256 |
05de974fa731be257f68a7aa456fa9fc18d5d7a0f003ab773902f06b15636e44
|
Provenance
The following attestation bundles were made for fbuild-2.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release-auto.yml on FastLED/fbuild
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fbuild-2.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
d93b846c167d223dff5cda7363563c13caba56113420ed0c6daaa05b0e869426 - Sigstore transparency entry: 1918016343
- Sigstore integration time:
-
Permalink:
FastLED/fbuild@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FastLED
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-auto.yml@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fbuild-2.3.2-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl.
File metadata
- Download URL: fbuild-2.3.2-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl
- Upload date:
- Size: 16.5 MB
- Tags: CPython 3.10+, macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5be139a0feb3cfe64777c2b8d81510c6a82c1af9ee8acdc9427ba7db938cd076
|
|
| MD5 |
7e1089a8516d8d971ba62b6e0715f181
|
|
| BLAKE2b-256 |
cf4721be87e29d08f132bfa4a5e4f9bcc0e0f700a88d7aea687d3560690a0656
|
Provenance
The following attestation bundles were made for fbuild-2.3.2-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl:
Publisher:
release-auto.yml on FastLED/fbuild
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fbuild-2.3.2-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl -
Subject digest:
5be139a0feb3cfe64777c2b8d81510c6a82c1af9ee8acdc9427ba7db938cd076 - Sigstore transparency entry: 1918016265
- Sigstore integration time:
-
Permalink:
FastLED/fbuild@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FastLED
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-auto.yml@5ac73bc1bc7a62cc51945d0eb4afee405b5c47c3 -
Trigger Event:
push
-
Statement type: