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.
