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

## Veille

Sonntäglicher Tüftler-Beitrag von **Mark Dembo** (Head of Solutions, Developer Platform & AI bei **Cloudflare**), veröffentlicht am **7. Juni 2026** auf seinem persönlichen Blog. **Erzählung**: Inspiriert von **Steve Ruiz** kauft sich der Autor ein kleines Gerät **M5Stack Stick 3** (~30 €) und baut sich, die Veröffentlichung von **Opus 4.8** nutzend, einen **DIY-KI-Agenten** „aus reiner Neugier, ohne Ziel". **Iteration 1 (45 Min.)**: Er wirft die Dokumentation des Geräts **Claude Code** vor, das Python-Skripte (~200 LOC, *„zero blast radius“*) generiert, die das Wetter in München und dann in mehreren Städten anzeigen; ein **Cloudflare Workers + Workers AI Backend** ergänzt **Text-to-Speech (TTS)**, **Push-to-Talk** (Speech-to-Text) und ein zentrales **kleines LLM** zur Beantwortung von Fragen. **Iteration 2 (ein echter Agent)**: Umstellung der REST-Endpunkte auf **WebSocket**-Transport via **Cloudflare Agents SDK** + **Dynamic Worker execution** → das Muster ***„Code Mode“*** (der Agent schreibt und führt Code aus, um seine Aufgabe zu erledigen). Der Agent beantwortet daraufhin Fragen zu öffentlichen Daten (11! = Fakultät, der Champions-League-Sieger via `fetch()` auf Wikipedia, das Wetter für eine beliebige Stadt). **Iteration 3 (echte Befugnisse)**: Verbindung zu **Todoist** über einen **MCP OAuth**-Flow → 50 Tools auf einmal, daher zwei Probleme: **Context Bloat** und **echtes Schadensrisiko**. Die Lösung stützt sich auf Cloudflares **MCP Server Portal** + die Claude-Connector-Einstellungen: pro Tool **Always allow / Ask for approval / Disable** (*Disabled*-Tools gelangen nie in den Kontext; ein **LLM-Klassifikator** akzeptiert nur eindeutige „Allow“-Freigaben und **verweigert standardmäßig**). **Erklärte Haltung**: Reduzierung seiner Rolle auf ***„idea generator, executor and judge“*** (und selten technischer Anleiter), ein „Human-in-the-Loop“-Ablauf, den er als wenig *„2026“* empfindet (Copy-Paste in UIFlow). **Was er NICHT getan hat**: keine Latenz-/Streaming-Optimierung, keine optimistischen LLM-Aufrufe, keine Evals, ***„I did not even look at the code once.“*** **Verwunderung**: 30 € + ein Anthropic-Session-Fenster + ein paar Cent Cloudflare-Inferenz → ein Objekt, das zuhört und spricht, gesteuert in natürlicher Sprache; *„the true unlock is how accessible it is.“* Scharfer Kontrast zu [[thomas-pragdave-failing-faster-code-rot-ai-velocity-2026-06-06]] (hier rechtfertigt *„zero blast radius“*, den Code nie anzusehen); illustriert konkret *Code Mode* / *„the agent just writing and executing code,“* das **MCP**-Muster ([[claude-skills-bigger-than-mcp-willison-2025-10-16]]), *Ask for approval*-artige Tool-Governance (uber-engineering-agent-identity-crisis-zero-trust-spire-2026-05-21) sowie die Doktrin der *systems around the model* aus 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, eigene KI mitbringen, Tüfteln, Basteln, M5Stack Stick 3, 30-€-Gerät, Hardware-DIY, Steve Ruiz, Opus 4.8, Claude Code, UIFlow, zero blast radius, idea generator executor judge, human-in-the-loop, Cloudflare Workers, Workers AI, Text-to-Speech, Speech-to-Text, Push-to-Talk, kleines LLM, Cloudflare Agents SDK, WebSocket, Dynamic Worker execution, Code Mode, Agent schreibt und führt Code aus, fetch, Wikipedia, Fakultät, MCP, MCP OAuth, Todoist, 50 Tools, Context Bloat, MCP Server Portal, Claude Connectors, Always allow Ask for approval Disable, LLM-Klassifikator, Standardverweigerung, Zugänglichkeit, I did not even look at the code once, Neugier, Erforschung, 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

**Profil**: Tüftler-Erzählung in der Ich-Perspektive, Register **begeistert-geekig und locker**, technisch tief im Stack (Workers, Agents SDK, MCP, Code Mode), aber mit leichtem, selbstironischem Ton. Zielgruppe: neugierige Entwickler und *Builder*. Haltung: ein **Cloudflare-Praktiker**, der bei einem risikoarmen Projekt „sein eigenes Hundefutter isst“.

**Stil**: Narrativ, schrittweise (3 Iterationen + ein Abschnitt *„What I did not do“*), durchsetzt mit Humor (*„the pomodoro timers of the modern age“* für *Session-Limit-Fenster*, *„Value add! Value add!“* selbstironisch über das manuelle Copy-Paste). Offen geäußerte Verwunderung (*„wow, I cannot believe how far we have come“*). Eingebettete Demo-Videos.

**Zentrale Aphorismen**:
- ***"The goal? There is no goal. Pure exploration and curiosity. And that feels just great."***
- ***"This reduced my jobs to the following three: idea generator, executor and judge."***
- ***"Given that these are ~200 LOC Python scripts with zero blast radius, I can afford to not care about the code at all."***
- ***"I did not even look at the code once. And you know what? That's the nice part of it."***
- ***"That we have this capability is great … how accessible it is is the true unlock."***

**Ausgearbeitete Metaphern / Rahmen**:
- ***BYO Agent*** — der Bau eines eigenen Hardware-/Software-Agenten aus einem 30-€-Gerät.
- ***Code Mode*** — der Agent schreibt und führt Code aus, um seine Aufgabe zu erledigen (im Gegensatz zu festen Tool-Aufrufen), das bevorzugte Muster des Autors.
- ***Idea generator / executor / judge*** — die Schrumpfung der menschlichen Rolle gegenüber einem Agenten, der selbstständig codet.
- ***Always allow / Ask for approval / Disable*** — Tool-bezogene Governance zur Kontrolle von Context Bloat und Blast Radius (50 Todoist-Tools).
- ***Session limit windows = modern-day pomodoros*** — Humor über den durch Session-Fenster auferlegten Rhythmus.

**Epistemische Haltung**: explorativer Bericht **ohne methodischen Anspruch** (räumt explizit ein, keine Evals, keine Optimierung, keine Code-Review durchzuführen) — der Wert liegt in der **Demonstration der Zugänglichkeit** und der **Freude am Lernen**, nicht in ingenieurmäßiger Strenge.

**Autorität**: (a) **Cloudflare-Expertise** (Head of Solutions Dev & AI) zum verwendeten Stack; (b) **konkreter, reproduzierbarer Erfahrungsbericht** (echte Hardware + SDK + MCP); (c) **Ehrlichkeit über die eingegangenen Abkürzungen** (zero blast radius). Zu lesen als **Schaufenster des Möglichen** und nicht als Produktionsleitfaden.

## Pense-betes

- **Datum / Quelle**: **7. Juni 2026**, persönlicher Blog **markpauldembo.com**. Autor: **Mark Dembo**, Head of Solutions Developer Platform & AI **Cloudflare**. Inspiration: **Steve Ruiz**.
- **Rahmen**: Sonntägliches Tüfteln, **~30 €** (M5Stack Stick 3) + frisch veröffentlichtes **Opus 4.8**. *„No goal. Pure exploration and curiosity.“* ### Iteration 1 — von null zum sprechenden Objekt (45 Min.)
- Gerätedokumentation → **Claude Code** → **Python-~200-LOC**-Skripte, *„zero blast radius“* → *„I can afford to not care about the code at all.“*
- **Human-in-the-Loop**-Ablauf (als wenig 2026 eingeschätzt): Opus generiert → Copy-Paste in **UIFlow** → Ausführung → Rückmeldung des Ergebnisses an Claude.
- Rolle reduziert auf **idea generator / executor / judge** (+ selten technischer Anleiter).
- Backend aus **Cloudflare Workers + Workers AI**: **TTS**, **Push-to-Talk** (STT), zentrales **kleines LLM** zur Beantwortung. ### Iteration 2 — ein echter Mini-Agent
- **Cloudflare Agents SDK**: REST → **WebSocket** + **Dynamic Worker execution** = das Muster ***„Code Mode“*** (der Agent schreibt/führt Code aus).
- Öffentliche Daten OK: **11!** (Einzeiler), **Champions-League**-Sieger (via `fetch()` auf Wikipedia — dem Agenten gewährter Internetzugang), Wetter für jede beliebige Stadt.
- Grenze: **kein Zugriff auf private Daten** → nächste Mission. ### Iteration 3 — echte Befugnisse (und ihr Schutzmechanismus)
- **Todoist**-Verbindung via **MCP OAuth** (in Minuten von Claude hinzugefügt) → **50 Tools** auf einmal.
- Zwei Probleme: (1) **Context Bloat** (die meisten Tools ungenutzt); (2) **echter Blast Radius** (ein Fehlaufruf = Löschung einer wichtigen Aufgabe).
- Lösung (Cloudflare MCP Server Portal + Claude-Connectors): pro Tool **Always allow / Ask for approval / Disable**; *Disabled* bleibt außerhalb des Kontexts; **LLM-Klassifikator** akzeptiert nur eindeutige „Allow“-Freigaben, **Standard ist Verweigerung**. ### Was er NICHT getan hat (als bewusste Entscheidung)
- Keine Latenz-/Streaming-Optimierung für Audio+LLM (*„yes, I know, it's slow“*).
- Keine optimistischen LLM-Aufrufe, **keine Evals** von Modellen/Prompts.
- ***„I did not even look at the code once“*** — und das wird als der schöne Teil davon beansprucht. ### Für Einsätze / Präsentationen
- **Beleg für Zugänglichkeit**: 30 € + 1 Session-Fenster + ein paar Cent Inferenz → ein gesprächsfähiges Objekt. *„The true unlock is how accessible it is.“*
- Konkrete Demonstration von **Code Mode** + **MCP** + **Tool-Governance** (allow/ask/disable, default-deny) — wiederverwendbar zur Einordnung agentischer Sicherheit.
- **Lehrreicher Kontrast** zu *Failing Faster* (Pragdave): Hier rechtfertigt *„zero blast radius“*, den Code nie anzusehen — die Disziplin hängt vom **Blast Radius** ab, nicht von Dogma.

## RésuméDe400mots

In diesem Beitrag vom **7. Juni 2026** schildert **Mark Dembo** (Head of Solutions – Developer Platform & AI bei **Cloudflare**) ein sonntägliches Tüftelprojekt: den Bau eines **DIY-KI-Agenten** aus einem kleinen, für ~30 € gekauften **M5Stack Stick 3**-Gerät, inspiriert von **Steve Ruiz** und motiviert durch die Veröffentlichung von **Opus 4.8**. Die Devise: *„There is no goal. Pure exploration and curiosity. And that feels just great.“*

**Erste Iteration (45 Minuten).** Er wirft die Dokumentation des Geräts **Claude Code** vor, das Python-Skripte von rund **200 Zeilen** erzeugt. Da diese *„zero blast radius“* haben, erlaubt er sich, **sich nicht um den Code zu kümmern**. Der Ablauf bleibt *human-in-the-loop* (für seinen Geschmack wenig *„2026“*): Opus generiert, er kopiert per Copy-Paste in die Weboberfläche **UIFlow**, führt aus und meldet das Ergebnis zurück. Seine Rolle schrumpft auf drei Funktionen — ***idea generator, executor, and judge***. Ein Backend aus **Cloudflare Workers + Workers AI** ergänzt rasch **Text-to-Speech**, **Push-to-Talk** (Spracherkennung) und ein zentrales **kleines LLM**: Das Objekt hört zu, antwortet und reißt schlechte Witze.

**Zweite Iteration.** Auf der Suche nach einem echten Agenten richtet er Opus auf das **Cloudflare Agents SDK**, stellt den Transport von REST auf **WebSocket** um und aktiviert **Dynamic Worker execution** — was sein bevorzugtes Muster freischaltet, ***„Code Mode“***: Der Agent **schreibt und führt Code aus**, um seine Aufgabe zu erledigen. Mit Internetzugang berechnet der Agent **11!** mit einer Einzeiler-Anweisung, findet den Champions-League-Sieger via `fetch()` auf Wikipedia und liefert das Wetter für jede beliebige Stadt. Seine Grenze: kein Zugriff auf **private Daten**.

**Dritte Iteration.** Er verbindet **Todoist** über einen **MCP OAuth**-Flow (in wenigen Minuten von Claude hinzugefügt) — und erbt sofort **50 Tools**, was zwei Probleme mit sich bringt: **Context Bloat** und einen **echten Blast Radius** (ein Fehlaufruf könnte eine kritische Aufgabe zerstören). Seine Lösung, angelehnt an Cloudflares **MCP Server Portal** und die Claude-Connectors: jedes Tool auf **Always allow / Ask for approval / Disable** setzen — deaktivierte Tools gelangen nie in den Kontext, ein **LLM-Klassifikator** akzeptiert nur explizite Freigaben, und **Standard ist Verweigerung**.

**Was er nicht getan hat**: keine Latenzoptimierung, keine Evals, keine optimistischen Aufrufe — *„I did not even look at the code once. And you know what? That's the nice part of it.“* Die abschließende Verwunderung gilt weniger der Leistungsfähigkeit als ihrer **Zugänglichkeit**: 30 € und ein paar Cent Inferenz für ein Objekt, das man in natürlicher Sprache steuert.

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