Configuration
Configure the fwm CLI with TOML files at global and per-project scopes, plus install-time environment variables.
fwm reads configuration from two TOML files. Values resolve in this
priority order:
- Slash flags — e.g.
/build --release - Environment variables
- Per-project
.fwm/project.toml - Global
~/.fwm/config.toml - Built-in defaults
Global config — ~/.fwm/config.toml
Created automatically by /login. Edit it to set defaults that apply to
every project.
[defaults]
language = "c"
compliance = "misra-c-2012"Per-project config — .fwm/project.toml
Created by /init and committed alongside your firmware source. Controls
target, build system, flash runner, and project-specific overrides.
[project]
name = "ble-sensor-hub"
target = "nrf52840"
board = "nrf52840dk/nrf52840"
language = "c"
[build]
system = "zephyr"
extra_args = "--sysbuild -- -DSHIELD=nrf7002eb2"
artifact = "build/zephyr/zephyr.hex"
[flash]
# command = "nrfutil device program ..."[project]
| Key | Purpose |
|---|---|
name | Project identifier. |
target | Nordic MCU target (e.g. nrf52840, nrf9160). |
board | Zephyr Hardware Model v2 board string. |
language | c, cpp, or rust. |
[build]
| Key | Purpose |
|---|---|
system | zephyr, cargo, cmake, make, idf, or pio. |
extra_args | Appended to the auto-detected build command. |
artifact | Path to the firmware artifact for /flash. |
command | Custom build command — overrides auto-detection entirely. |
[flash]
| Key | Purpose |
|---|---|
command | Custom flash command — overrides the auto-detected runner. |
If [flash] command is not set, fwm prefers modern
nrfutil device program and falls back to nrfjprog, probe-rs,
openocd, pyocd, picotool, or dfu-util.
Install-time environment variables
The install script honors two env vars:
| Variable | Purpose |
|---|---|
FWM_INSTALL | Install directory for the fwm binary (default ~/.fwm). |
FWM_VERSION | Pin to a specific version tag (e.g. v0.5.0); defaults to latest. |
FWM_VERSION=v0.5.0 curl -fsSL https://firmwaremaestro.com/install.sh | shAuthentication storage
/login opens the browser, authenticates, and saves the token to
~/.fwm/config.toml. Use /logout to remove it or /whoami to check
who is currently signed in. See Slash Commands.