Show HN: I let an AI agent brick my $2.51 ESP32 on purpose NanoForgeFlow released nff, an open-source MCP server that lets coding agents like Claude directly control ESP32-class hardware, enabling autonomous firmware development, over-the-air deployment, and remote diagnosis. The tool, which costs $2.51 for an ESP32 board, provides 34 tools over streamable HTTP and supports over 1,000 boards across 40 platforms, with features like live on-chip debugging and local-first operation. docs https://www.nanoforgeflow.com/docs · quick start https://www.nanoforgeflow.com/docs quickstart · mcp tools https://www.nanoforgeflow.com/docs mcp-tools · cli https://www.nanoforgeflow.com/docs cli · platform https://nanoforgeflow.com · discord https://discord.com/invite/QkFCS3mShe nff is an MCP server that gives coding agents direct control over physical hardware — on the bench during development, and in the field for maintenance and diagnosis. Connect your board over USB and Claude writes, compiles, flashes, and reads serial output autonomously. Deploy devices with the nff-sdk-c library and Claude can reach them remotely: capture crash state, diagnose failures, and push fixes — without physical access. nff is the open-source bench CLI of the— an end-to-end, agent-driven system for developing, shipping, and operating ESP32-class firmware bench → OTA → fleet diagnosis . This repo and the device library nff platform nff-sdk-c are the twoMIT-licensedpieces that run on your laptop and hardware; the hosted backend is proprietary. you: "Run the sensor init sequence and assert the calibration values over serial" LLM: writes firmware → compiles → flashes ESP32 → reads serial → returns structured output you: "Why did the unit in the field just hard-fault?" LLM: captures panic over OTA → reads registers + backtrace → "Stack overflow in your sensor ISR at line 47" the bench loop, in one conversation — no switching between editor, terminal, and serial monitor. The agent iterates on firmware in response to serial output, catches exceptions, and reflashes. field maintenance when the firmware is dead — a crashed bare-metal MCU has no shell, no SSH, no process table. nff captures registers, stack, memory, and backtrace and routes them to a cloud agent that explains the failure and drives recovery. This is the gap Mender, balena, and similar OTA tools cannot fill: they need a living network client inside the firmware. ship it over the air — nff ota deploy turns the binary you just built into a staged, ECDSA-signed rollout with per-device tracking and automatic rollback; nff fleet --watch shows it land. ota → https://www.nanoforgeflow.com/docs ota board-universal — any of PlatformIO's ~1000+ boards across ~40 platforms every ESP32 variant, RP2040/Pico, all STM32 families, AVR, SAMD, Teensy, nRF52, Uno R4, RISC-V… , toolchain auto-installed on first build. arduino-cli remains available as a second backend. boards → /GLechevalier/nff-core/blob/main/docs/BOARDS.md live on-chip debugging — real breakpoints, call stacks, and variable inspection over JTAG/SWD OpenOCD + GDB, driven by nff . debug → https://www.nanoforgeflow.com/docs debug local-first — compile, flash, monitor, debug, and the MCP tools need no account and never open a browser. Only OTA, repair , and agent require a sign-in. one Rust binary — self-contained, no Python runtime, and it self-updates in the background like Claude Code does. macOS / Linux: curl -fsSL https://nanoforgeflow.com/install.sh | sh Windows PowerShell : irm https://nanoforgeflow.com/install.ps1 | iex Then plug in your board and run: nff init detects the board, writes config, registers + starts the MCP server nff doctor verify Restart Claude Code so it picks up the MCP server, then just describe what you want: you: "Flash sketches/blink esp32 and confirm the LED is toggling over serial" LLM: compiles → flashes ESP32 → reads serial → "LED toggling at 1 Hz, confirmed" Full install options, --cloud sign-in, and first-run detail: quick start → https://www.nanoforgeflow.com/docs quickstart 34 tools over streamable HTTP on 127.0.0.1:3010/mcp , started in the background by nff init . | Group | Tools | Covers | |---|---|---| Bench | 7 | list devices , compile , flash , serial read / write , reset device , get device info | Debug | 14 | breakpoints, call stack, variables, registers, memory, stepping, raw GDB | Field | 8 | diagnose local, no login , repair cloud, ELF-symbolized + auth lifecycle | Fleet & OTA | 5 | ota deploy , ota status , ota deployments , ota devices , fleet status | Full signatures and return shapes: mcp tools → https://www.nanoforgeflow.com/docs mcp-tools everything lives at nanoforgeflow.com/docs : quick start https://www.nanoforgeflow.com/docs quickstart · cli reference https://www.nanoforgeflow.com/docs cli · configuration https://www.nanoforgeflow.com/docs config · mcp tools https://www.nanoforgeflow.com/docs mcp-tools · using claude code https://www.nanoforgeflow.com/docs claude-code · device sdk https://www.nanoforgeflow.com/docs sdk · provisioning https://www.nanoforgeflow.com/docs provisioning · ota deploys https://www.nanoforgeflow.com/docs ota · git-push deploys https://www.nanoforgeflow.com/docs git-push · fleet status https://www.nanoforgeflow.com/docs fleet · crash diagnosis https://www.nanoforgeflow.com/docs diagnosis · on-chip debug https://www.nanoforgeflow.com/docs debug · power https://www.nanoforgeflow.com/docs power · security https://www.nanoforgeflow.com/docs security In-repo reference docs/ /GLechevalier/nff-core/blob/main/docs : boards & USB ids /GLechevalier/nff-core/blob/main/docs/BOARDS.md · self-update & config /GLechevalier/nff-core/blob/main/docs/CONFIGURATION.md · roadmap /GLechevalier/nff-core/blob/main/docs/ROADMAP.md · architecture /GLechevalier/nff-core/blob/main/ARCHITECTURE.md Bugs and feature requests go to GitHub Issues https://github.com/GLechevalier/nff/issues ; read CONTRIBUTING.md /GLechevalier/nff-core/blob/main/CONTRIBUTING.md before opening a PR — adding a board is usually a two-line change. Please follow the Code of Conduct /GLechevalier/nff-core/blob/main/CODE OF CONDUCT.md , and report vulnerabilities via SECURITY.md /GLechevalier/nff-core/blob/main/SECURITY.md . Questions and ideas are welcome on Discord https://discord.com/invite/QkFCS3mShe . MIT — see LICENSE /GLechevalier/nff-core/blob/main/LICENSE . Copyright c 2026 Gauthier Lechevalier