Anthropic abrió su Claude Hardware Interface, una API local sobre Bluetooth Low Energy (BLE) que permite que un dispositivo basado en ESP32-S3 se conecte directamente al cliente de escritorio de Claude. El proyecto de referencia, Claude Desktop Buddy, ya está disponible como código abierto en GitHub.

El firmware corre sobre el M5StickC Plus, una placa de M5Stack de unos USD 30 en AliExpress, y funciona como un acompañante físico para Claude Cowork y Claude Code en macOS y Windows. Durante el reciente evento "Build with Claude", la compañía recomendó además el M5Stack Cardputer como una de las mejores opciones para makers que quieran construir hardware que interactúe con agentes de IA.

¿Qué hace exactamente Claude Desktop Buddy?

El dispositivo se queda en tu escritorio y muestra en tiempo real lo que el agente está haciendo. Cuando Claude pide permiso para ejecutar una acción, podés aprobar o rechazar directamente con los botones físicos del Buddy, sin volver a la ventana del computador. Toda la conversación entre la placa y el cliente ocurre localmente por BLE: no hace falta API key, internet ni servicios cloud para el handshake.

El "Buddy" arrancó como un easter egg escondido dentro del CLI de Claude Code: estaba pensado para el April Fools del 1 de abril de 2026, pero se filtró un día antes por un source map de npm publicado por error. Los desarrolladores lo invocaban con un comando para ver un personaje ASCII reactivo cuya energía y humor cambiaban según la actividad de código. La idea era hacer las sesiones largas de terminal menos aburridas, y a fines de abril Anthropic decidió escalarlo más allá del software: abrió el código del firmware y publicó la API BLE local para los clientes de escritorio.

Modo Sleep con ZZZs (izquierda), animación Celebrate (centro) y modo Attention/alerta cuando hay aprobación pendiente (derecha)
Modo Sleep con ZZZs (izquierda), animación Celebrate (centro) y modo Attention/alerta cuando hay aprobación pendiente (derecha)

El firmware convierte la placa en una mascota tipo Tamagotchi que reacciona a tu trabajo con Claude: duerme cuando no pasa nada, se despierta apenas inicia una sesión y se impacienta cuando hay un permiso pendiente. Los siete estados predefinidos son:

  • Sleep: el puente BLE no está conectado (ojos cerrados, respiración lenta).
  • Idle: conectado pero sin urgencias (parpadeo, mira alrededor).
  • Busy: sesión activa (suda, trabajando).
  • Attention: aprobación pendiente (alerta, LED parpadeando).
  • Celebrate: se gatilla cada 50.000 tokens procesados (confeti, rebotes).
  • Dizzy: cuando agitás la placa, gracias al IMU integrado (ojos en espiral).
  • Heart: aprobaste un prompt en menos de 5 segundos (corazones flotando).

¿Cómo se diferencia de StackChan, Loona o EchoEar?

El problema concreto que resuelve la Hardware Interface es el de las aprobaciones frecuentes: dispositivos similares como StackChan, Loona Deskmate o el EchoEar de Espressif no tienen forma de aceptar prompts sin que el usuario vuelva a la pantalla del computador. Acá los botones físicos sí cierran ese loop, y al ser BLE local todo queda dentro del entorno del usuario.

Claude Desktop Buddy mostrando estadísticas y humor de la mascota (izquierda) y un prompt de aprobación en tiempo real con controles físicos (derecha)
Claude Desktop Buddy mostrando estadísticas y humor de la mascota (izquierda) y un prompt de aprobación en tiempo real con controles físicos (derecha)

Si querés un personaje custom en vez de los ASCII por defecto, Anthropic incluye un ejemplo oficial llamado Bufo con GIFs propios. También podés crear el tuyo con el script prep_character.py: alistá GIFs de 96 píxeles de ancho para cada uno de los siete estados, armá un manifest.json y arrastrá la carpeta entera a la ventana Hardware Buddy del cliente de escritorio. El pack se transmite por BLE y aparece al instante en el dispositivo. La única restricción dura es que la carpeta completa no supere los 1,8 MB, límite impuesto por la flash del ESP32.

¿En qué placas corre y cómo se compila?

El proyecto está construido para ESP32 y ESP32-S3 con el framework de Arduino, y se compila y flashea con PlatformIO. Depende de la biblioteca del M5StickC Plus para la pantalla, los botones y el sensor de movimiento, así que si querés llevarlo a otra placa hay que forkear el código y ajustar los drivers de pines. Espressif también ofrece soporte propio vía ESP-IDF y la ESP Desktop Buddy library para quienes prefieran no pasar por Arduino.

Cliente de escritorio Claude con la ventana Hardware Buddy en el menú Developer (izquierda) y la interfaz de pareo para conectar un ESP32 y cargar packs de personajes (derecha)
Cliente de escritorio Claude con la ventana Hardware Buddy en el menú Developer (izquierda) y la interfaz de pareo para conectar un ESP32 y cargar packs de personajes (derecha)

En el M5StickC Plus el botón frontal (A) aprueba prompts o abre el menú, el botón derecho (B) hace scroll o rechaza, y el botón de encendido enciende o apaga la pantalla. Agitar la placa dispara el Dizzy, y dejarla boca abajo manda a dormir a la mascota. Para parearla con Claude hay que activar el Developer Mode en el cliente de escritorio, abrir la ventana Hardware Buddy y conectar por Bluetooth: después se reconecta sola.

Contexto: el ecosistema de mascotas Claude crece

La semana pasada CNX Software cubrió el Clawdmeter, otro dashboard de escritorio basado en ESP32-S3 que monitorea el consumo de tokens de Claude Code. La diferencia es importante: Clawdmeter es un proyecto comunitario de telemetría y alertas, mientras que Claude Desktop Buddy es el oficial de Anthropic, con aprobaciones por botones físicos y feedback tipo Tamagotchi.

Para makers chilenos el costo de entrada es bajo: un M5StickC Plus se consigue desde USD 30 en distribuidores asiáticos, y un ESP32-S3 genérico sin pantalla baja a USD 5 si estás dispuesto a forkear los drivers. Con el BLE local y el código en GitHub bajo licencia abierta, replicar el proyecto en una placa nacional o adaptarlo a un display de e-paper es una tarde de trabajo, no un proyecto de meses.