In questo post del 7 giugno 2026, Mark Dembo (Head of Solutions – Developer Platform & AI presso Cloudflare) racconta un progetto di sperimentazione domenicale: costruire 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. Il motto: "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 circa 200 righe di script Python. Dato che hanno "raggio d'azione nullo", si concede il lusso 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 agente vero, indirizza Opus verso il Cloudflare Agents SDK, passa da REST a trasporto 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. Con 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 di 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 50 strumenti tutti insieme, da cui due problemi: saturazione del contesto (context bloat) e un rischio reale (una chiamata sbagliata potrebbe eliminare un'attività critica). La sua contromisura, ispirata al MCP Server Portal di Cloudflare e ai 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 = deny.

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