ToolBB-0148

esparagus: an ESP32 flasher that reports to coding agents in NDJSON

esparagus is a Rust port of esptool that reports to programs instead of people. It emits NDJSON events, a JSON report of suggested next steps and a fixed exit code per failure class. A monitor watches the boot log for crashes and reboot loops. Sylwester Sosnowski reports full bench validation only on an ESP32-P4.

Open original source developer.espressif.com · Sylwester Sosnowski

Claimed
Why this evidence label?

Author reports ESP32-P4 end-to-end bench validation and ESP32-C5 detect and backup on silicon; the post shows sample output only.

How we check entries
Preview image for esparagus: an ESP32 flasher that reports to coding agents in NDJSON
The source's own preview image, from developer.espressif.com.

Briefing

flash-monitor writes the image, resets into the app and watches the boot log against a deadline. Exit 0 means the expected line appeared, 31 a timeout, and 32 a detected crash such as a panic, watchdog reset or brownout. There are three ways in: the CLI, a skill document for agents with a shell, and esparagus mcp for typed tools. A symlink can stand in for esptool.py, and idf.py flash then runs esparagus.

The author lists the ESP32-P4 as bench-validated end to end and the ESP32-C5 for detection and backup; other chips rely on shared protocol code. eFuse burning, secure boot and flash encryption are out of scope. It is licensed GPL-2.0-or-later because it ports esptool's code.

“esparagus is for the case where the thing reading the output is a program.”

Sylwester Sosnowski, in the source on developer.espressif.com

From the GitHub API

Repository facts

Repository facts for datanoisetv/esparagus, from the GitHub API
Repositorydatanoisetv/esparagus
Stars5
LicenseGPL-2.0 Copyleft
LanguageRust
Last push19 May 2026 5 mo ago

Tags

Board

Report a problem with this entry