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

## Veille

Sunday tinkering post by **Mark Dembo** (Head of Solutions, Developer Platform & AI at **Cloudflare**) published on **June 7, 2026** on his personal blog. **Narrative**: inspired by **Steve Ruiz**, the author buys a small **M5Stack Stick 3** device (~€30) and, taking advantage of the release of **Opus 4.8**, builds himself a **DIY AI agent** "out of pure curiosity, with no goal." **Iteration 1 (45 min)**: he throws the device's documentation at **Claude Code**, which generates Python scripts (~200 LOC, *"zero blast radius"*) displaying the weather in Munich, then several cities; a **Cloudflare Workers + Workers AI backend** adds **text-to-speech (TTS)**, **push-to-talk** (speech-to-text), and a central **small LLM** to answer questions. **Iteration 2 (a real agent)**: switching REST endpoints to **WebSocket** transport via the **Cloudflare Agents SDK** + **Dynamic Worker execution** → the ***"Code Mode"*** pattern (the agent writes and executes code to accomplish its task). The agent then answers public-data questions (11! = factorial, the Champions League winner via `fetch()` on Wikipedia, the weather in any city). **Iteration 3 (real powers)**: connecting to **Todoist** via an **MCP OAuth** flow → 50 tools at once, hence two problems: **context bloat** and **real damage risk**. The fix draws on Cloudflare's **MCP Server Portal** + Claude connector settings: per tool, **Always allow / Ask for approval / Disable** (*Disabled* tools never enter the context; an **LLM classifier** accepts only distinct "allow" grants and **defaults to deny**). **Stated posture**: reducing his role to ***"idea generator, executor and judge"*** (and rarely technical guide), a "human-in-the-loop" flow he considers not very *"2026"* (copy-pasting into UIFlow). **What he did NOT do**: no latency/streaming optimization, no optimistic LLM calls, no evals, ***"I did not even look at the code once."*** **Wonder**: €30 + one Anthropic session window + a few cents of Cloudflare inference → an object that listens and speaks, driven in natural language; *"the true unlock is how accessible it is."* Sharp contrast with [[thomas-pragdave-failing-faster-code-rot-ai-velocity-2026-06-06]] (here *"zero blast radius"* justifies never looking at the code); concretely illustrates *Code Mode* / *"the agent just writing and executing code,"* the **MCP** pattern ([[claude-skills-bigger-than-mcp-willison-2025-10-16]]), *Ask for approval*-style tool governance (uber-engineering-agent-identity-crisis-zero-trust-spire-2026-05-21), and the *systems around the model* doctrine from 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, tinkering, tinkering, M5Stack Stick 3, €30 device, 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, small LLM, Cloudflare Agents SDK, WebSocket, Dynamic Worker execution, Code Mode, agent writes and executes code, fetch, Wikipedia, factorial, MCP, MCP OAuth, Todoist, 50 tools, context bloat, MCP Server Portal, Claude connectors, Always allow Ask for approval Disable, LLM classifier, default deny, accessibility, I did not even look at the code once, curiosity, exploration, 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

**Profile**: First-person tinkering narrative, **enthusiastic-geek and casual** register, technically deep on the stack (Workers, Agents SDK, MCP, Code Mode) but with a light, self-deprecating tone. Audience: curious developers and *builders*. Stance: a **Cloudflare practitioner** "eating his own dog food" on a low-stakes project.

**Style**: Narrative, step-by-step (3 iterations + a *"What I did not do"* section), sprinkled with humor (*"the pomodoro timers of the modern age"* for *session limit windows*, *"Value add! Value add!"* self-mockingly about manual copy-pasting). Openly expressed wonder (*"wow, I cannot believe how far we have come"*). Embedded demo videos.

**Key aphorisms**:
- ***"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."***

**Worked metaphors / frames**:
- ***BYO Agent*** — building your own hardware/software agent from a €30 device.
- ***Code Mode*** — the agent writes and executes code to accomplish its task (vs. fixed tool calls), the author's favorite pattern.
- ***Idea generator / executor / judge*** — the shrinking of the human role facing an agent that codes on its own.
- ***Always allow / Ask for approval / Disable*** — per-tool governance to control context bloat and blast radius (50 Todoist tools).
- ***Session limit windows = modern-day pomodoros*** — humor about the rhythm imposed by session windows.

**Epistemic stance**: exploratory account **with no methodological pretense** (explicitly admits doing no evals, no optimization, no code review) — the value lies in the **demonstration of accessibility** and the **joy of learning**, not in engineering rigor.

**Authority**: (a) **Cloudflare expertise** (Head of Solutions Dev & AI) on the stack in play; (b) **concrete, reproducible field report** (real hardware + SDK + MCP); (c) **honesty about the shortcuts** taken (zero blast radius). To be read as a **showcase of the possible** rather than a production guide.

## Pense-betes

- **Date / source**: **June 7, 2026**, personal blog **markpauldembo.com**. Author: **Mark Dembo**, Head of Solutions Developer Platform & AI **Cloudflare**. Inspiration: **Steve Ruiz**.
- **Setting**: Sunday tinkering, **~€30** (M5Stack Stick 3) + freshly released **Opus 4.8**. *"No goal. Pure exploration and curiosity."* ### Iteration 1 — from zero to a talking object (45 min)
- Device docs → **Claude Code** → **Python ~200 LOC** scripts, *"zero blast radius"* → *"I can afford to not care about the code at all."*
- **Human-in-the-loop** flow (deemed not very 2026): Opus generates → copy-paste into **UIFlow** → run → report the result back to Claude.
- Role reduced to **idea generator / executor / judge** (+ rarely technical guide).
- **Cloudflare Workers + Workers AI** backend: **TTS**, **push-to-talk** (STT), central **small LLM** for answering. ### Iteration 2 — a real mini-agent
- **Cloudflare Agents SDK**: REST → **WebSocket** + **Dynamic Worker execution** = the ***"Code Mode"*** pattern (the agent writes/executes code).
- Public data OK: **11!** (one-liner), **Champions League** winner (via `fetch()` on Wikipedia — internet access granted to the agent), weather for any city.
- Limit: **no access to private data** → next mission. ### Iteration 3 — real powers (and their guardrail)
- **Todoist** connection via **MCP OAuth** (added in minutes by Claude) → **50 tools** at once.
- Two problems: (1) **context bloat** (most tools unused); (2) **real blast radius** (a bad call = deletion of an important task).
- Solution (Cloudflare MCP Server Portal + Claude connectors): per tool, **Always allow / Ask for approval / Disable**; *Disabled* stays out of context; **LLM classifier** accepts only distinct "allow" grants, **default is deny**. ### What he did NOT do (owned as a choice)
- No latency/streaming optimization for audio+LLM (*"yes, I know, it's slow"*).
- No optimistic LLM calls, **no evals** of models/prompts.
- ***"I did not even look at the code once"*** — and this is claimed as the fun part of it. ### To use in engagements / presentations
- **Accessibility proof-point**: €30 + 1 session window + a few cents of inference → a conversational object. *"The true unlock is how accessible it is."*
- Concrete demonstration of **Code Mode** + **MCP** + **tool governance** (allow/ask/disable, default-deny) — reusable for framing agentic security.
- **Instructive contrast** with *Failing Faster* (Pragdave): here *"zero blast radius"* justifies never looking at the code — discipline depends on **blast radius**, not dogma.

## RésuméDe400mots

In this post from **June 7, 2026**, **Mark Dembo** (Head of Solutions – Developer Platform & AI at **Cloudflare**) recounts a Sunday tinkering project: building himself a **DIY AI agent** from a small **M5Stack Stick 3** device bought for ~€30, inspired by **Steve Ruiz** and motivated by the release of **Opus 4.8**. The watchword: *"There is no goal. Pure exploration and curiosity. And that feels just great."*

**First iteration (45 minutes).** He throws the device's documentation at **Claude Code**, which produces Python scripts of about **200 lines**. Since they have *"zero blast radius,"* he allows himself **not to care about the code**. The flow stays *human-in-the-loop* (not very *"2026"* for his taste): Opus generates, he copy-pastes into the **UIFlow** web interface, runs it, and reports the result back. His role shrinks to three functions — ***idea generator, executor, and judge***. A **Cloudflare Workers + Workers AI** backend quickly adds **text-to-speech**, **push-to-talk** (speech recognition), and a central **small LLM**: the object listens, answers, and cracks bad jokes.

**Second iteration.** Aiming for a real agent, he points Opus at the **Cloudflare Agents SDK**, switches from REST to **WebSocket** transport, and enables **Dynamic Worker execution** — unlocking his preferred pattern, ***"Code Mode"***: the agent **writes and executes code** to accomplish its task. Given internet access, the agent computes **11!** with a one-liner, finds the Champions League winner via `fetch()` on Wikipedia, and gives the weather for any city. Its limit: no access to **private data**.

**Third iteration.** He connects **Todoist** via an **MCP OAuth** flow (added in a few minutes by Claude) — and instantly inherits **50 tools**, hence two problems: **context bloat** and a **real blast radius** (a bad call could destroy a critical task). His fix, drawn from Cloudflare's **MCP Server Portal** and Claude connectors: set each tool to **Always allow / Ask for approval / Disable** — disabled tools never enter the context, an **LLM classifier** accepts only explicit authorizations, and **default is deny**.

**What he did not do**: no latency optimization, no evals, no optimistic calls — *"I did not even look at the code once. And you know what? That's the nice part of it."* The final sense of wonder is less about the capability than about its **accessibility**: €30 and a few cents of inference for an object one drives in natural language.

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