Bench

Coming soon

You write the code. Bench does everything around it.

A Mac app for microcontroller firmware. Bench finds and names your boards, builds, flashes, shows serial output, decodes crashes, plots values from your logs, and reads what’s actually on a board. Your editor stays your editor.

For ESP32, Raspberry Pi Pico, STM32 and nRF boards. Mac only, on purpose.

Download for Mac Coming soon See it work

Bench isn’t out yet, so it isn’t on sale. When it is, you can try it free for 30 days, then buy it for US $79 once, plus sales tax or VAT where it applies.

The Bench circuit pass: a green circuit board the size of a playing card, with Bench printed on it, gold traces, a chip, a metal crystal, a blank name plate and gold contacts along the bottom edge. Its green LED is lit.

Every board on your desk, by name.

Plug a board in and it shows up within a second, named after the end of its MAC address. Rename it and the name sticks, on any port, any cable, in any project. Beside each name is the build it’s running: #51, or #51+ when it was built with uncommitted changes.

Bench never resets a board unless you asked for something that needs it. If another app has the port open, Bench says which one, and picks the board back up when it lets go.

Bench’s window for a project called Cairn. The sidebar lists two boards, XIAO ESP32C3 4C88 and XIAO ESP32C3 FE1C, above six builds numbered 51. The selected board’s photo sits beside its chip, MAC address, port and board type, with Flash, Inspect, Reset and Actions buttons. Below, its console streams timestamped lines.
A project called Cairn, with two boards plugged in and one of them talking.

Build

Every build gets a number and a commit.

⌘B builds with arduino-cli, ESP-IDF or a command of your own. With stamping on, Bench first writes the build number and commit into a small header for your firmware to print. A build with uncommitted changes gets a plus.

Cairn #51

⌘B
Last build: #51, f2e9d4d, 17 s.

Cairn has uncommitted changes.

Errors and warnings land in an Issues list, and clicking one opens your editor at that line. Recent builds keep their images and flash layout, so you can flash one again later or decode a crash against it.

Flash

From built to running in one keystroke.

⌘U flashes the selected board with your latest good build; ⌘R builds first. Bench owns the port, so there’s no monitor to close. The board resets and its boot lines show up in the same console.

XIAO ESP32C3 FE1C

ESP32-C3, revision v0.4

/dev/cu.usbmodem101

Running #51 (f2e9d4d)

Flash ⌘U
  1. 0x0Bootloader19 KB
  2. 0x8000Partition table3 KB
  3. 0xe000OTA data8 KB
  4. 0x10000App1.3 MB
Waiting to flash.
⌘U
Flash
⌘R
Build, then flash
⇧⌘U
Flash All

Flash All writes every connected board for the project, up to six at once. Boards that last ran another project, or have a different chip, are skipped with the reason.

Inspect

What’s actually on the board.

⌘I reads a board’s flash with no help from its firmware: the chip, its MAC, the partition table drawn to scale, which OTA slot is active, and which of your builds sits in each slot.

Chip
ESP32-C3, revision v0.4
MAC
AC:27:6E:81:4C:88
Flash
4 MB
Crystal
40 MHz
Features
WiFi, BLE

Rolled back: build #51 in app0 didn’t start, so it’s booting from app1, build #50.

⌘I

Explore

Serial output that survives resets.

Crashes, decoded

When a board panics, a card appears in the console with the backtrace decoded to function, file and line, against the build that crashed. Click a frame and your editor opens there.

Plot any number

Plot any number that turns up in your logs, live or from a recording, and export it as CSV.

Record after the fact

Record a session on purpose, or save the last 5, 15 or 60 minutes once something odd has already happened.

Keep your editor. Bench opens files in it.

Build issues and crash frames open in your editor at the right line. Turn it on for a project and Bench keeps compile_commands.json and .clangd up to date after each build, so clangd understands your sketch. For Zed, VS Code, Cursor and Windsurf it can add Build, Run, Flash and Monitor tasks too.

  • Zed
  • VS Code
  • Cursor
  • Windsurf
  • Sublime Text
  • Nova
  • CLion
  • TextMate
  • BBEdit
  • Xcode

The bench command

bench build
Build, with the log in your terminal.
bench run --monitor
Build, flash, then stream the board’s serial output.
bench flash --all
Flash All, from the terminal.
bench monitor
Stream serial output until you press Control-C.
bench devices
List boards: name, MAC, chip, port and build.

Install it from Settings > Command Line. It finds the project from the folder you’re in, and starts Bench in the background if it isn’t running.

Also on the bench

  • Signed packages

    Make a P-256 key in Settings and it stays in your Keychain. Bench writes the public keys into a C header for your firmware, and a Swift file if there’s a companion app, then signs each build into a package the firmware can verify.

  • Your scripts, on a board

    Put your own commands in the Actions menu. Bench lets go of the port while one runs, streams its output into the console, then picks the board back up.

  • Boards outside a project

    A window for any board: watch it, inspect it, or flash a .bin someone sent you. Bench checks the chip before it writes.

  • A starting point

    File > New Project creates a starter Arduino sketch or ESP-IDF project, ready to build.

  • No surprises in git

    Bench writes bench.json and only the files you turn on. It never edits .gitignore, and asks before replacing a file it didn’t write.

The Bench circuit pass seen straight on, with a blank name plate.

Make it yours.

Bench isn’t out yet, so it isn’t on sale. This is how buying will work once it is.

Try Bench free for 30 days: the whole app, with no account. After the trial, boards, Console and Inspect keep working; Build and Flash need a license.

Buy it once and it’s yours to keep. A license comes with a year of updates and support.

Download for Mac Coming soon

It will be US $79 once, plus sales tax or VAT where it applies. Questions before then? hello@usefae.com

What it needs

Bring your boards and your editor. Bench can fetch the Arduino tools itself.

System
macOS 26 or later
Mac
Apple silicon or Intel
Boards
ESP32 chips, the ESP8266, Arduino AVR, SAMD, UNO R4, GIGA and Portenta, Raspberry Pi Pico and Pico 2, nRF52, STM32, Teensy 4, and any board arduino-cli supports
Builds with
arduino-cli, ESP-IDF, or your own command
USB
Native USB, CP210x, CH340, CH343, CH9102, FTDI, PL2303
Editor
Any
Status
Coming soon