CLI Reference

The Embedr desktop app uses the Embedr CLI runtime for firmware and PCB operations. You can also run the CLI directly in the Terminal.

Global format option

Most commands support text output by default and JSON output for app integration or scripts:

embedr --format json boards --limit 5

Use JSON in automation. Use text when working manually.

Project creation

embedr init
embedr init --name my-project
embedr init my-project
embedr init my-project -b esp32
embedr init my-project -b esp32-idf
embedr init my-project -b pico

Creates:

embedr.yaml
platformio.ini
src/main.cpp or src/main.c
lib/
.gitignore

The source extension depends on the framework.

Board registry

embedr boards
embedr boards --all
embedr boards --filter esp32
embedr boards --category stm32
embedr boards --sync
embedr boards --limit 20

The desktop Target dropdown uses the same target concepts.

Firmware build

embedr compile
embedr compile --clean
embedr compile --verbose
embedr compile --environment esp32dev
embedr compile --path /path/to/project

Target setting overrides:

embedr compile --monitor-speed 115200
embedr compile --upload-speed 921600
embedr compile --upload-protocol esptool

For manifest v1 projects, supported target settings can be persisted into the active project configuration.

Upload

embedr upload
embedr upload --port /dev/cu.usbserial-0001
embedr upload --environment esp32dev
embedr upload --verbose

The desktop Upload button passes the selected target, environment, and device to the same underlying operation.

Run

embedr run
embedr run --port /dev/ttyUSB0
embedr run --monitor

run compiles, uploads, and optionally starts monitor.

Monitor and devices

embedr devices
embedr devices --watch
embedr devices --filter USB

embedr monitor
embedr monitor --port /dev/cu.usbserial-0001

Use devices when the app dropdown does not show the board you expect.

Dependencies

embedr lib search neopixel
embedr lib install "Adafruit NeoPixel"
embedr lib install FastLED --version 3.6.0
embedr lib list
embedr lib uninstall FastLED
embedr lib update

The Project Dependencies modal is the UI for these workflows.

Target config

embedr target-config --target esp32 --path .
embedr set-target-config --target esp32 --monitor-speed 115200

Use this when you want to inspect or persist upload and monitor settings outside the UI.

Manifest inspection and discovery

embedr manifest inspect
embedr manifest discover

Inspection normalizes manifest state for the app. Discovery can help existing projects describe their firmware provider and source layout.

PCB workspace

embedr pcb init
embedr pcb status
embedr pcb build
embedr pcb test
embedr pcb layout
embedr pcb layout --check
embedr pcb layout --no-open
embedr pcb open
embedr pcb fmt

These commands operate on the project pcb/ workspace. The desktop app and agent expose additional PCB actions, including netlist inspection, linting, placement comments, auto placement, and auto layout.

Validation and cleanup

embedr validate
embedr clean

validate checks project structure and component references. clean removes build output through PlatformIO.

Component commands

Embedr also includes component commands for project-level hardware references:

embedr search led
embedr add led-5mm
embedr remove led-5mm
embedr list

These update project component references in embedr.yaml.

Firmware libraries still use embedr lib .... Component commands are about physical parts and hardware intent.

Scriptable baseline

For CI or repeatable checks:

embedr --format json validate
embedr --format json compile --environment esp32dev

Avoid relying on desktop UI state in automation. Pass path, environment, and port explicitly.