# esparagus: ESP32 flashing with structured output for CI and coding agents

DevFeed: [esparagus: ESP32 flashing with structured output for CI and coding agents](<https://devfeed.tech/articles/esparagus-esp32-flashing-with-structured-output-for-ci-and-coding-agents-13790.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2026/08/esparagus-esp32-flashing-for-ci-and-agents/>)

Author: John Lee

Published: 2026-08-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP32](<https://devfeed.tech/topics/esp32.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Agent Skill](<https://devfeed.tech/topics/agent-skill.md>), [ci](<https://devfeed.tech/topics/ci.md>), [MCP Server](<https://devfeed.tech/topics/mcp-server.md>)

Tags: [agent-skill](<https://devfeed.tech/tags/agent-skill.md>), [ai](<https://devfeed.tech/tags/ai.md>), [blog](<https://devfeed.tech/tags/blog.md>), [ci](<https://devfeed.tech/tags/ci.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cli](<https://devfeed.tech/tags/cli.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esptool](<https://devfeed.tech/tags/esptool.md>), [flashing](<https://devfeed.tech/tags/flashing.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [observability](<https://devfeed.tech/tags/observability.md>), [rust](<https://devfeed.tech/tags/rust.md>)

## AI overview

This article introduces esparagus, a Rust flasher for the ESP32 family that behaviorally ports esptool's flashing paths. It adds machine-oriented observability through NDJSON events, structured reports, stable exit codes, crash detection, and integrations including a direct CLI, an Agent Skill, and an MCP server.

## Source excerpt

esparagus is an ESP32-family flasher written in Rust -- a behavioral port of esptool's protocol, sync, reset, and stub-loader paths, wrapped in an observability layer built for programs rather than humans: NDJSON events, a machine-readable report file, stable exit codes, and an expect-style serial monitor with built-in crash detection. This article explains why that layer exists, how the flash-test-fix feedback loop works, and the three ways to integrate it -- direct CLI, an Agent Skill, and an MCP server.