nff
Servidor MCP para firmware embebido: compila, flashea y lee el puerto serie en más de 1000 placas, además de depuración en vivo con JTAG/GDB y despliegue de flotas OTA firmadas.
Documentación
nff — deja que los agentes de codificación iteren sobre hardware
documentación · inicio rápido · herramientas mcp · cli · plataforma · discord
nff es un servidor MCP que da a los agentes de codificación control directo sobre hardware físico — en el banco de trabajo durante el desarrollo, y en el campo para mantenimiento y diagnóstico.
Conecta tu placa por USB y Claude escribe, compila, flashea y lee la salida serie de forma autónoma. Despliega dispositivos con la librería nff-sdk-c y Claude puede alcanzarlos de forma remota: capturar el estado del fallo, diagnosticar errores y enviar correcciones — sin acceso físico.
nff es la CLI de banco de código abierto de la plataforma nff — un sistema integral impulsado por agentes para desarrollar, publicar y operar firmware de clase ESP32 (banco → OTA → diagnóstico de flota). Este repositorio y la librería de dispositivos (
nff-sdk-c) son las dos piezas con licencia MIT que se ejecutan en tu portátil y hardware; el backend alojado es propietario.
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"
características
- el bucle de banco, en una sola conversación — sin cambiar entre editor, terminal y monitor serie. El agente itera sobre el firmware en respuesta a la salida serie, captura excepciones y vuelve a flashear.
- mantenimiento en campo cuando el firmware está muerto — un MCU de metal desnudo que se ha bloqueado no tiene shell, ni SSH, ni tabla de procesos. nff captura registros, pila, memoria y backtrace y los enruta a un agente en la nube que explica el fallo y dirige la recuperación. Este es el vacío que Mender, balena y herramientas OTA similares no pueden llenar: necesitan un cliente de red vivo dentro del firmware.
- publícalo por aire —
nff ota deployconvierte el binario que acabas de compilar en un despliegue por fases firmado con ECDSA con seguimiento por dispositivo y reversión automática;nff fleet --watchmuestra cómo aterriza. ota → - universal para placas — cualquiera de las ~1000+ placas de PlatformIO en ~40 plataformas (todas las variantes de ESP32, RP2040/Pico, todas las familias STM32, AVR, SAMD, Teensy, nRF52, Uno R4, RISC-V…), con toolchain autoinstalada en la primera compilación. arduino-cli sigue disponible como segundo backend. placas →
- depuración en vivo en el chip — puntos de interrupción reales, pilas de llamadas e inspección de variables sobre JTAG/SWD (OpenOCD + GDB, controlados por nff). depuración →
- local primero — compilar, flashear, monitorizar, depurar y las herramientas MCP no necesitan cuenta y nunca abren un navegador. Solo OTA,
repairyagentrequieren iniciar sesión. - un solo binario Rust — autocontenido, sin runtime de Python, y se autoactualiza en segundo plano como hace Claude Code.
cómo empezar
macOS / Linux:
curl -fsSL https://nanoforgeflow.com/install.sh | sh
Windows (PowerShell):
irm https://nanoforgeflow.com/install.ps1 | iex
Luego conecta tu placa y ejecuta:
nff init # detects the board, writes config, registers + starts the MCP server
nff doctor # verify
Reinicia Claude Code para que detecte el servidor MCP y luego simplemente describe lo que quieres:
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"
Opciones completas de instalación, inicio de sesión de --cloud y detalles de la primera ejecución: inicio rápido →
herramientas mcp
34 herramientas sobre HTTP transmisible en 127.0.0.1:3010/mcp, iniciadas en segundo plano por nff init.
| Grupo | Herramientas | Cubre |
|---|---|---|
| Banco | 7 | list_devices, compile, flash, serial_read/write, reset_device, get_device_info |
| Depuración | 14 | puntos de interrupción, pila de llamadas, variables, registros, memoria, ejecución paso a paso, GDB crudo |
| Campo | 8 | diagnose (local, sin inicio de sesión), repair (nube, con símbolos ELF) + ciclo de vida de autenticación |
| Flota y OTA | 5 | ota_deploy, ota_status, ota_deployments, ota_devices, fleet_status |
Firmas completas y formas de retorno: herramientas mcp →
demo
documentación
todo vive en nanoforgeflow.com/docs: inicio rápido · referencia de cli · configuración · herramientas mcp · usar claude code · sdk de dispositivos · aprovisionamiento · despliegues ota · despliegues por git-push · estado de la flota · diagnóstico de fallos · depuración en chip · alimentación · seguridad
Referencia en el repositorio (docs/): placas e ids USB · autoactualización y configuración · hoja de ruta · arquitectura
cómo contribuir
Los errores y solicitudes de funciones van a GitHub Issues; lee CONTRIBUTING.md antes de abrir un PR — añadir una placa suele ser un cambio de dos líneas. Por favor, sigue el Código de Conducta y reporta vulnerabilidades a través de SECURITY.md. Las preguntas e ideas son bienvenidas en Discord.
licencia
MIT — consulta LICENSE.
Copyright (c) 2026 Gauthier Lechevalier
