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.
Kernpunkte
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
Ö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.
Zugeschriebene Aussagen
« I did not even look at the code once »
— Mark Dembo
die Zugänglichkeit von KI-Fähigkeiten (30 € + ein paar Cent Inferenz) ist der eigentliche Durchbruch
— Mark Dembo
Der aus dieser Fiche extrahierte Wissensgraph — 12 Entitäten, 13 Relationen.
In diesem Graphen :Mark Dembo · BYO Agent with M5Stack Stick 3 · M5Stack Stick 3 · Opus 4.8 · Cloudflare Workers / Workers AI · Cloudflare Agents SDK · Code Mode · MCP (OAuth) · gouvernance d'outils MCP · zero blast radius · idea generator / executor / judge · Cloudflare