# dembo-byo-agent-m5stack-tinkering-opus-cloudflare-2026-06-07

## Veille

Artículo de trasteo dominical de **Mark Dembo** (Head of Solutions, Developer Platform & AI en **Cloudflare**) publicado el **7 de junio de 2026** en su blog personal. **Narrativa**: inspirado por **Steve Ruiz**, el autor compra un pequeño dispositivo **M5Stack Stick 3** (~30 €) y, aprovechando el lanzamiento de **Opus 4.8**, se construye un **agente de IA DIY** «por pura curiosidad, sin ningún objetivo». **Iteración 1 (45 min)**: pasa la documentación del dispositivo a **Claude Code**, que genera scripts en Python (~200 LOC, *«zero blast radius»*) que muestran el tiempo en Múnich, luego en varias ciudades; un backend de **Cloudflare Workers + Workers AI** añade **texto a voz (TTS)**, **push-to-talk** (voz a texto) y un **small LLM** central para responder preguntas. **Iteración 2 (un agente real)**: cambio de los endpoints REST a transporte **WebSocket** mediante el **Cloudflare Agents SDK** + **Dynamic Worker execution** → el patrón ***«Code Mode»*** (el agente escribe y ejecuta código para llevar a cabo su tarea). El agente responde entonces a preguntas sobre datos públicos (11! = factorial, el ganador de la Champions League mediante `fetch()` en Wikipedia, el tiempo en cualquier ciudad). **Iteración 3 (poderes reales)**: conexión a **Todoist** mediante un flujo **MCP OAuth** → 50 herramientas de golpe, de donde surgen dos problemas: **sobrecarga de contexto** y **riesgo real de daño**. La solución se apoya en el **MCP Server Portal** de Cloudflare + los ajustes de conectores de Claude: por herramienta, **Always allow / Ask for approval / Disable** (las herramientas *Disabled* nunca entran en el contexto; un **clasificador LLM** solo acepta autorizaciones «allow» explícitas y **deniega por defecto**). **Postura declarada**: reduce su papel al de ***«generador de ideas, ejecutor y juez»*** (y, en raras ocasiones, guía técnico), un flujo «human-in-the-loop» que considera poco *«2026»* (copiar y pegar en UIFlow). **Lo que NO hizo**: ninguna optimización de latencia/streaming, ninguna llamada LLM optimista, ningún eval, ***«Ni siquiera miré el código una sola vez.»*** **Asombro**: 30 € + una ventana de sesión de Anthropic + unos céntimos de inferencia de Cloudflare → un objeto que escucha y habla, gobernado en lenguaje natural; *«el verdadero desbloqueo está en lo accesible que es.»* Marcado contraste con [[thomas-pragdave-failing-faster-code-rot-ai-velocity-2026-06-06]] (aquí *«zero blast radius»* justifica no mirar nunca el código); ilustra concretamente *Code Mode* / *«el agente simplemente escribiendo y ejecutando código,»* el patrón **MCP** ([[claude-skills-bigger-than-mcp-willison-2025-10-16]]), la gobernanza de herramientas al estilo *Ask for approval* (uber-engineering-agent-identity-crisis-zero-trust-spire-2026-05-21), y la doctrina de los *sistemas en torno al modelo* de dropbox-okumura-beyond-code-generation-engineering-productivity-ai-agents-2026-05-28.

## Titre Article

BYO Agent with M5Stack Stick 3

## Date

2026-06-07

## URL

https://markpauldembo.com/blog/tinkering-byo-ai

## Keywords

BYO agent, trae tu propia IA, trasteo, trasteo, M5Stack Stick 3, dispositivo de 30 €, hardware DIY, Steve Ruiz, Opus 4.8, Claude Code, UIFlow, zero blast radius, generador de ideas ejecutor juez, human-in-the-loop, Cloudflare Workers, Workers AI, texto a voz, voz a texto, push-to-talk, LLM pequeño, Cloudflare Agents SDK, WebSocket, Dynamic Worker execution, Code Mode, el agente escribe y ejecuta código, fetch, Wikipedia, factorial, MCP, MCP OAuth, Todoist, 50 herramientas, sobrecarga de contexto, MCP Server Portal, conectores de Claude, Always allow Ask for approval Disable, clasificador LLM, denegación por defecto, accesibilidad, Ni siquiera miré el código una sola vez, curiosidad, exploración, Mark Dembo

## Authors

**Mark Dembo** (@darkmembo / @mdembo), **Head of Solutions – Developer Platform & AI** chez **Cloudflare** (auparavant auteur sur le blog Cloudflare). Billet personnel publié sur son blog *markpauldembo.com* le **7 juin 2026** (description : *« Thoughts about tinkering on a Sunday »*).

## Ton

**Perfil**: narrativa de trasteo en primera persona, registro **geek entusiasta e informal**, técnicamente profundo sobre la pila (Workers, Agents SDK, MCP, Code Mode) pero con un tono ligero y autocrítico. Audiencia: desarrolladores curiosos y *builders*. Postura: un **profesional de Cloudflare** que se aplica su propia medicina («eating his own dog food») en un proyecto de bajo riesgo.

**Estilo**: narrativo, paso a paso (3 iteraciones + una sección *«What I did not do»*), salpicado de humor (*«the pomodoro timers of the modern age»* para las *session limit windows*, *«Value add! Value add!»* autoburlándose del copiar y pegar manual). Asombro expresado abiertamente (*«wow, I cannot believe how far we have come»*). Vídeos de demostración incrustados.

**Aforismos clave**:
- ***«¿El objetivo? No hay ningún objetivo. Pura exploración y curiosidad. Y eso se siente genial.»***
- ***«Esto redujo mis funciones a las tres siguientes: generador de ideas, ejecutor y juez.»***
- ***«Dado que son scripts en Python de ~200 LOC con zero blast radius, puedo permitirme no preocuparme por el código en absoluto.»***
- ***«Ni siquiera miré el código una sola vez. ¿Y sabes qué? Esa es la parte agradable.»***
- ***«Que tengamos esta capacidad es genial … lo accesible que es es el verdadero desbloqueo.»***

**Metáforas / marcos desarrollados**:
- ***BYO Agent*** — construirse su propio agente de hardware/software a partir de un dispositivo de 30 €.
- ***Code Mode*** — el agente escribe y ejecuta código para llevar a cabo su tarea (frente a llamadas de herramientas fijas), el patrón preferido del autor.
- ***Idea generator / executor / judge*** — la reducción del papel humano frente a un agente que programa por sí solo.
- ***Always allow / Ask for approval / Disable*** — gobernanza por herramienta para controlar la sobrecarga de contexto y el blast radius (50 herramientas de Todoist).
- ***Session limit windows = pomodoros modernos*** — humor sobre el ritmo impuesto por las ventanas de sesión.

**Postura epistémica**: relato exploratorio **sin pretensión metodológica** (admite explícitamente no hacer evals, ni optimización, ni revisión de código) — el valor reside en la **demostración de accesibilidad** y el **placer de aprender**, no en el rigor de ingeniería.

**Autoridad**: (a) **experiencia en Cloudflare** (Head of Solutions Dev & AI) sobre la pila en juego; (b) **informe de campo concreto y reproducible** (hardware real + SDK + MCP); (c) **honestidad sobre los atajos** tomados (zero blast radius). Debe leerse como una **muestra de lo posible** más que como una guía de producción.

## Pense-betes

- **Fecha / fuente**: **7 de junio de 2026**, blog personal **markpauldembo.com**. Autor: **Mark Dembo**, Head of Solutions Developer Platform & AI en **Cloudflare**. Inspiración: **Steve Ruiz**.
- **Contexto**: trasteo dominical, **~30 €** (M5Stack Stick 3) + **Opus 4.8** recién lanzado. *«Sin objetivo. Pura exploración y curiosidad.»* ### Iteración 1 — de cero a un objeto que habla (45 min)
- Documentación del dispositivo → **Claude Code** → scripts **Python ~200 LOC**, *«zero blast radius»* → *«Puedo permitirme no preocuparme por el código en absoluto.»*
- Flujo **human-in-the-loop** (juzgado poco 2026): Opus genera → copiar y pegar en **UIFlow** → ejecutar → comunicar el resultado de vuelta a Claude.
- Papel reducido a **generador de ideas / ejecutor / juez** (+ raramente guía técnico).
- Backend **Cloudflare Workers + Workers AI**: **TTS**, **push-to-talk** (STT), **small LLM** central para responder. ### Iteración 2 — un mini-agente real
- **Cloudflare Agents SDK**: REST → **WebSocket** + **Dynamic Worker execution** = el patrón ***«Code Mode»*** (el agente escribe/ejecuta código).
- Datos públicos OK: **11!** (una línea), ganador de la **Champions League** (mediante `fetch()` en Wikipedia — acceso a internet concedido al agente), tiempo de cualquier ciudad.
- Límite: **sin acceso a datos privados** → próxima misión. ### Iteración 3 — poderes reales (y su salvaguarda)
- Conexión a **Todoist** mediante **MCP OAuth** (añadida en minutos por Claude) → **50 herramientas** de golpe.
- Dos problemas: (1) **sobrecarga de contexto** (la mayoría de herramientas sin usar); (2) **blast radius real** (una llamada mala = eliminación de una tarea importante).
- Solución (Cloudflare MCP Server Portal + conectores de Claude): por herramienta, **Always allow / Ask for approval / Disable**; *Disabled* queda fuera del contexto; el **clasificador LLM** solo acepta autorizaciones «allow» explícitas, **el valor por defecto es denegar**. ### Lo que NO hizo (asumido como elección)
- Ninguna optimización de latencia/streaming para audio+LLM (*«sí, ya lo sé, es lento»*).
- Ninguna llamada LLM optimista, **ningún eval** de modelos/prompts.
- ***«Ni siquiera miré el código una sola vez»*** — y esto se reivindica como la parte divertida. ### Para usar en encuentros / presentaciones
- **Prueba de accesibilidad**: 30 € + 1 ventana de sesión + unos céntimos de inferencia → un objeto conversacional. *«El verdadero desbloqueo está en lo accesible que es.»*
- Demostración concreta de **Code Mode** + **MCP** + **gobernanza de herramientas** (allow/ask/disable, denegación por defecto) — reutilizable para enmarcar la seguridad agéntica.
- **Contraste instructivo** con *Failing Faster* (Pragdave): aquí *«zero blast radius»* justifica no mirar nunca el código — la disciplina depende del **blast radius**, no del dogma.

## RésuméDe400mots

En este artículo del **7 de junio de 2026**, **Mark Dembo** (Head of Solutions – Developer Platform & AI en **Cloudflare**) relata un proyecto de trasteo dominical: construirse un **agente de IA DIY** a partir de un pequeño dispositivo **M5Stack Stick 3** comprado por ~30 €, inspirado por **Steve Ruiz** y motivado por el lanzamiento de **Opus 4.8**. El lema: *«No hay ningún objetivo. Pura exploración y curiosidad. Y eso se siente genial.»*

**Primera iteración (45 minutos).** Pasa la documentación del dispositivo a **Claude Code**, que produce scripts en Python de unas **200 líneas**. Como tienen *«zero blast radius»*, se permite **no preocuparse por el código**. El flujo sigue siendo *human-in-the-loop* (poco *«2026»* para su gusto): Opus genera, él copia y pega en la interfaz web **UIFlow**, la ejecuta y comunica el resultado de vuelta. Su papel se reduce a tres funciones — ***generador de ideas, ejecutor y juez***. Un backend de **Cloudflare Workers + Workers AI** añade rápidamente **texto a voz**, **push-to-talk** (reconocimiento de voz) y un **small LLM** central: el objeto escucha, responde y suelta chistes malos.

**Segunda iteración.** Con vistas a un agente real, orienta a Opus hacia el **Cloudflare Agents SDK**, cambia el transporte de REST a **WebSocket** y habilita **Dynamic Worker execution** — desbloqueando su patrón preferido, ***«Code Mode»***: el agente **escribe y ejecuta código** para llevar a cabo su tarea. Con acceso a internet, el agente calcula **11!** con una línea de código, encuentra al ganador de la Champions League mediante `fetch()` en Wikipedia y da el tiempo de cualquier ciudad. Su límite: sin acceso a **datos privados**.

**Tercera iteración.** Conecta **Todoist** mediante un flujo **MCP OAuth** (añadido en unos minutos por Claude) — y hereda al instante **50 herramientas**, de donde surgen dos problemas: **sobrecarga de contexto** y un **blast radius real** (una llamada mala podría destruir una tarea crítica). Su solución, extraída del **MCP Server Portal** de Cloudflare y de los conectores de Claude: configurar cada herramienta en **Always allow / Ask for approval / Disable** — las herramientas deshabilitadas nunca entran en el contexto, un **clasificador LLM** solo acepta autorizaciones explícitas, y **el valor por defecto es denegar**.

**Lo que no hizo**: ninguna optimización de latencia, ningún eval, ninguna llamada optimista — *«Ni siquiera miré el código una sola vez. ¿Y sabes qué? Esa es la parte agradable.»* El asombro final tiene menos que ver con la capacidad que con su **accesibilidad**: 30 € y unos céntimos de inferencia para un objeto que se gobierna en lenguaje natural.

## GrapheDeConnaissance

- Mark Dembo —publie→ BYO Agent with M5Stack Stick 3 (DOCUMENT, 0.97)
- Mark Dembo —travaille_chez→ Cloudflare (ORGANISATION, 0.95)
- Mark Dembo —a_créé→ BYO Agent with M5Stack Stick 3 (TECHNOLOGIE, 0.96)
- Mark Dembo —s_inspire_de→ Steve Ruiz (PERSONNE, 0.9)
- Mark Dembo —utilise→ Claude Code (TECHNOLOGIE, 0.95)
- Cloudflare Agents SDK —permet→ Code Mode (CONCEPT, 0.92)
- BYO Agent with M5Stack Stick 3 —utilise→ données publiques via fetch() (Wikipedia) (CONCEPT, 0.9)
- MCP (OAuth) —permet→ la connexion de l'agent à Todoist (50 outils) (CONCEPT, 0.92)
- 50 outils Todoist —permet→ bloat de contexte et risque de blast radius (CONCEPT, 0.9)
- Mark Dembo —recommande→ gouvernance par outil Always allow / Ask for approval / Disable (défaut deny) (METHODOLOGIE, 0.92)
- Mark Dembo —affirme_que→ « I did not even look at the code once » (CITATION, 0.95)
- zero blast radius —permet→ de ne pas se soucier du code (CONCEPT, 0.9)
- Mark Dembo —affirme_que→ l'accessibilité de la capacité IA (30 € + quelques cents d'inférence) est le vrai déblocage (AFFIRMATION, 0.9)

---
Canonical: https://www.thekb.eu/es/fiches/dembo-byo-agent-m5stack-tinkering-opus-cloudflare-2026-06-07/
