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

## Veille

Post di svago domenicale di **Mark Dembo** (Head of Solutions, Developer Platform & AI presso **Cloudflare**) pubblicato il **7 giugno 2026** sul suo blog personale. **Narrazione**: ispirato da **Steve Ruiz**, l'autore acquista un piccolo dispositivo **M5Stack Stick 3** (~30€) e, approfittando del rilascio di **Opus 4.8**, si costruisce un **agente AI DIY** "per pura curiosità, senza alcun obiettivo". **Iterazione 1 (45 min)**: sottopone la documentazione del dispositivo a **Claude Code**, che genera script Python (~200 righe di codice, *"zero blast radius"*) che mostrano il meteo di Monaco di Baviera, poi di più città; un **backend Cloudflare Workers + Workers AI** aggiunge **sintesi vocale (TTS)**, **push-to-talk** (riconoscimento vocale) e un **piccolo LLM** centrale per rispondere alle domande. **Iterazione 2 (un vero agente)**: passaggio degli endpoint REST al trasporto **WebSocket** tramite il **Cloudflare Agents SDK** + **Dynamic Worker execution** → il pattern ***"Code Mode"*** (l'agente scrive ed esegue codice per portare a termine il suo compito). L'agente risponde quindi a domande su dati pubblici (11! = fattoriale, il vincitore della Champions League via `fetch()` su Wikipedia, il meteo di qualsiasi città). **Iterazione 3 (poteri reali)**: connessione a **Todoist** tramite un flusso **MCP OAuth** → 50 strumenti in un colpo solo, da cui due problemi: **context bloat** e **rischio reale di danni**. La soluzione si basa sul **MCP Server Portal** di Cloudflare + le impostazioni dei connettori Claude: per ogni strumento, **Always allow / Ask for approval / Disable** (gli strumenti *Disabled* non entrano mai nel contesto; un **classificatore LLM** accetta solo autorizzazioni "allow" distinte e **nega per default**). **Postura dichiarata**: ridurre il proprio ruolo a ***"generatore di idee, esecutore e giudice"*** (e raramente guida tecnica), un flusso "human-in-the-loop" che considera poco *"2026"* (copia-incolla in UIFlow). **Cosa NON ha fatto**: nessuna ottimizzazione di latenza/streaming, nessuna chiamata LLM ottimistica, nessuna valutazione (eval), ***"non ho nemmeno guardato il codice una sola volta"***. **Stupore**: 30€ + una finestra di sessione Anthropic + qualche centesimo di inferenza Cloudflare → un oggetto che ascolta e parla, pilotato in linguaggio naturale; *"il vero sblocco è quanto sia accessibile."* Contrasto netto con [[thomas-pragdave-failing-faster-code-rot-ai-velocity-2026-06-06]] (qui *"zero blast radius"* giustifica il non guardare mai il codice); illustra concretamente il *Code Mode* / *"l'agente che scrive ed esegue codice"*, il pattern **MCP** ([[claude-skills-bigger-than-mcp-willison-2025-10-16]]), la governance degli strumenti in stile *Ask for approval* (uber-engineering-agent-identity-crisis-zero-trust-spire-2026-05-21), e la dottrina dei *systems around the model* di 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, bring your own AI, svago tecnologico, svago tecnologico, M5Stack Stick 3, dispositivo da 30€, hardware DIY, Steve Ruiz, Opus 4.8, Claude Code, UIFlow, zero blast radius, generatore di idee esecutore giudice, human-in-the-loop, Cloudflare Workers, Workers AI, sintesi vocale, riconoscimento vocale, push-to-talk, piccolo LLM, Cloudflare Agents SDK, WebSocket, Dynamic Worker execution, Code Mode, l'agente scrive ed esegue codice, fetch, Wikipedia, fattoriale, MCP, MCP OAuth, Todoist, 50 strumenti, context bloat, MCP Server Portal, connettori Claude, Always allow Ask for approval Disable, classificatore LLM, default deny, accessibilità, non ho nemmeno guardato il codice una sola volta, curiosità, esplorazione, 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

**Profilo**: Narrazione in prima persona di svago, registro **entusiasta-geek e informale**, tecnicamente approfondito sullo stack (Workers, Agents SDK, MCP, Code Mode) ma con un tono leggero e autoironico. Pubblico: sviluppatori curiosi e *builder*. Posizionamento: un **praticante Cloudflare** che "mangia il proprio cibo per cani" su un progetto a basso rischio.

**Stile**: Narrativo, passo dopo passo (3 iterazioni + una sezione *"Cosa non ho fatto"*), cosparso di umorismo (*"i timer pomodoro dell'era moderna"* per le *finestre di sessione limitate*, *"Valore aggiunto! Valore aggiunto!"* autoironico sul copia-incolla manuale). Stupore espresso apertamente (*"wow, non riesco a credere fino a dove siamo arrivati"*). Video dimostrativi incorporati.

**Aforismi chiave**:
- ***"L'obiettivo? Non c'è alcun obiettivo. Pura esplorazione e curiosità. Ed è semplicemente fantastico."***
- ***"Questo ha ridotto i miei compiti ai seguenti tre: generatore di idee, esecutore e giudice."***
- ***"Dato che sono script Python di ~200 righe di codice con zero blast radius, posso permettermi di non preoccuparmi affatto del codice."***
- ***"Non ho nemmeno guardato il codice una sola volta. E sapete cosa? È questa la parte bella."***
- ***"Che disponiamo di questa capacità è fantastico … quanto sia accessibile è il vero sblocco."***

**Metafore / cornici sviluppate**:
- ***BYO Agent*** — costruire il proprio agente hardware/software a partire da un dispositivo da 30€.
- ***Code Mode*** — l'agente scrive ed esegue codice per portare a termine il suo compito (vs. chiamate a strumenti fisse), il pattern preferito dell'autore.
- ***Generatore di idee / esecutore / giudice*** — il restringersi del ruolo umano di fronte a un agente che programma da solo.
- ***Always allow / Ask for approval / Disable*** — governance per strumento per controllare il context bloat e il blast radius (50 strumenti Todoist).
- ***Le finestre di sessione limitate = i pomodori dei tempi moderni*** — umorismo sul ritmo imposto dalle finestre di sessione.

**Postura epistemica**: resoconto esplorativo **senza pretesa metodologica** (ammette esplicitamente di non fare valutazioni, ottimizzazioni, né revisione del codice) — il valore risiede nella **dimostrazione di accessibilità** e nella **gioia di imparare**, non nel rigore ingegneristico.

**Autorità**: (a) **competenza Cloudflare** (Head of Solutions Dev & AI) sullo stack in gioco; (b) **resoconto sul campo concreto e riproducibile** (hardware reale + SDK + MCP); (c) **onestà sulle scorciatoie** prese (zero blast radius). Da leggere come una **vetrina del possibile** piuttosto che una guida alla produzione.

## Pense-betes

- **Data / fonte**: **7 giugno 2026**, blog personale **markpauldembo.com**. Autore: **Mark Dembo**, Head of Solutions Developer Platform & AI **Cloudflare**. Ispirazione: **Steve Ruiz**.
- **Contesto**: svago domenicale, **~30€** (M5Stack Stick 3) + **Opus 4.8** appena rilasciato. *"Nessun obiettivo. Pura esplorazione e curiosità."* ### Iterazione 1 — da zero a un oggetto parlante (45 min)
- Documentazione del dispositivo → **Claude Code** → script **Python ~200 righe di codice**, *"zero blast radius"* → *"posso permettermi di non preoccuparmi affatto del codice."*
- Flusso **human-in-the-loop** (giudicato poco 2026): Opus genera → copia-incolla in **UIFlow** → esecuzione → riporta il risultato a Claude.
- Ruolo ridotto a **generatore di idee / esecutore / giudice** (+ raramente guida tecnica).
- Backend **Cloudflare Workers + Workers AI**: **TTS**, **push-to-talk** (STT), **piccolo LLM** centrale per rispondere. ### Iterazione 2 — un vero mini-agente
- **Cloudflare Agents SDK**: REST → **WebSocket** + **Dynamic Worker execution** = il pattern ***"Code Mode"*** (l'agente scrive/esegue codice).
- Dati pubblici OK: **11!** (una riga di codice), vincitore della **Champions League** (via `fetch()` su Wikipedia — accesso a internet concesso all'agente), meteo per qualsiasi città.
- Limite: **nessun accesso ai dati privati** → missione successiva. ### Iterazione 3 — poteri reali (e la loro protezione)
- Connessione a **Todoist** via **MCP OAuth** (aggiunta in pochi minuti da Claude) → **50 strumenti** in un colpo solo.
- Due problemi: (1) **context bloat** (la maggior parte degli strumenti inutilizzati); (2) **rischio reale di danni** (una chiamata sbagliata = cancellazione di un'attività importante).
- Soluzione (Cloudflare MCP Server Portal + connettori Claude): per ogni strumento, **Always allow / Ask for approval / Disable**; *Disabled* resta fuori dal contesto; il **classificatore LLM** accetta solo autorizzazioni "allow" distinte, il **default è negare**. ### Cosa NON ha fatto (rivendicato come scelta)
- Nessuna ottimizzazione di latenza/streaming per audio+LLM (*"sì, lo so, è lento"*).
- Nessuna chiamata LLM ottimistica, **nessuna valutazione (eval)** di modelli/prompt.
- ***"Non ho nemmeno guardato il codice una sola volta"*** — e questo è rivendicato come la parte divertente. ### Da usare in incarichi / presentazioni
- **Prova di accessibilità**: 30€ + 1 finestra di sessione + qualche centesimo di inferenza → un oggetto conversazionale. *"Il vero sblocco è quanto sia accessibile."*
- Dimostrazione concreta di **Code Mode** + **MCP** + **governance degli strumenti** (allow/ask/disable, default-deny) — riutilizzabile per inquadrare la sicurezza agentica.
- **Contrasto istruttivo** con *Failing Faster* (Pragdave): qui *"zero blast radius"* giustifica il non guardare mai il codice — la disciplina dipende dal **blast radius**, non dal dogma.

## RésuméDe400mots

In questo post del **7 giugno 2026**, **Mark Dembo** (Head of Solutions – Developer Platform & AI presso **Cloudflare**) racconta un progetto di svago domenicale: costruirsi un **agente AI DIY** a partire da un piccolo dispositivo **M5Stack Stick 3** acquistato per ~30€, ispirato da **Steve Ruiz** e motivato dal rilascio di **Opus 4.8**. La parola d'ordine: *"Non c'è alcun obiettivo. Pura esplorazione e curiosità. Ed è semplicemente fantastico."*

**Prima iterazione (45 minuti).** Sottopone la documentazione del dispositivo a **Claude Code**, che produce script Python di circa **200 righe**. Poiché hanno *"zero blast radius,"* si permette di **non preoccuparsi affatto del codice**. Il flusso resta *human-in-the-loop* (poco *"2026"* per i suoi gusti): Opus genera, lui copia-incolla nell'interfaccia web **UIFlow**, esegue e riporta il risultato. Il suo ruolo si riduce a tre funzioni — ***generatore di idee, esecutore e giudice***. Un backend **Cloudflare Workers + Workers AI** aggiunge rapidamente **sintesi vocale**, **push-to-talk** (riconoscimento vocale) e un **piccolo LLM** centrale: l'oggetto ascolta, risponde e racconta battute scadenti.

**Seconda iterazione.** Puntando a un vero agente, indirizza Opus verso il **Cloudflare Agents SDK**, passa dal trasporto REST a **WebSocket** e attiva la **Dynamic Worker execution** — sbloccando il suo pattern preferito, ***"Code Mode"***: l'agente **scrive ed esegue codice** per portare a termine il suo compito. Dato l'accesso a internet, l'agente calcola **11!** con una riga di codice, trova il vincitore della Champions League via `fetch()` su Wikipedia, e fornisce il meteo per qualsiasi città. Il suo limite: nessun accesso ai **dati privati**.

**Terza iterazione.** Connette **Todoist** tramite un flusso **MCP OAuth** (aggiunto in pochi minuti da Claude) — ed eredita all'istante **50 strumenti**, da cui due problemi: **context bloat** e un **rischio reale di danni** (una chiamata sbagliata potrebbe distruggere un'attività critica). La sua soluzione, tratta dal **MCP Server Portal** di Cloudflare e dai connettori Claude: impostare ogni strumento su **Always allow / Ask for approval / Disable** — gli strumenti disabilitati non entrano mai nel contesto, un **classificatore LLM** accetta solo autorizzazioni esplicite, e il default è negare.

**Cosa non ha fatto**: nessuna ottimizzazione della latenza, nessuna valutazione (eval), nessuna chiamata ottimistica — *"non ho nemmeno guardato il codice una sola volta. E sapete cosa? È questa la parte bella."* Lo stupore finale riguarda meno la capacità che la sua **accessibilità**: 30€ e qualche centesimo di inferenza per un oggetto che si pilota in linguaggio naturale.

## 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/it/fiches/dembo-byo-agent-m5stack-tinkering-opus-cloudflare-2026-06-07/
