FirmwareMaestro Docs
fwm CLI Agent

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:

  1. Slash flags — e.g. /build --release
  2. Environment variables
  3. Per-project .fwm/project.toml
  4. Global ~/.fwm/config.toml
  5. 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]

KeyPurpose
nameProject identifier.
targetNordic MCU target (e.g. nrf52840, nrf9160).
boardZephyr Hardware Model v2 board string.
languagec, cpp, or rust.

[build]

KeyPurpose
systemzephyr, cargo, cmake, make, idf, or pio.
extra_argsAppended to the auto-detected build command.
artifactPath to the firmware artifact for /flash.
commandCustom build command — overrides auto-detection entirely.

[flash]

KeyPurpose
commandCustom 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:

VariablePurpose
FWM_INSTALLInstall directory for the fwm binary (default ~/.fwm).
FWM_VERSIONPin 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 | sh

Authentication 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.

On this page