Weekday playground

Tech Demos

One pattern at a time. Each card says what the demo proves, what you can try, and what you could build with it.

22
Live demos
Cloudflare Workers · 1 Dynamic Worker
Runtime
tech-demos.theserverless.dev
Host

The gallery

Shows the pattern, then the stack

01 Worker

R2 Drive

A one-hour WebDAV drive you can mount. Isolated R2 prefix, SQLite locks, no share links.

Shows WebDAV Class 1 and Class 2 on Workers, including LOCK and UNLOCK, against an isolated R2 prefix with locks in a SQLite Durable Object and a cron that wipes the drive after an hour.

  • webdav
  • r2
  • durable-objects
  • d1
  • turnstile
  • email
What you can do
  • Mint a drive with a verified email, Turnstile, and an accepted use notice
  • Mount it from macOS, Windows, rclone, or Obsidian Remotely Save
  • Upload, rename, delete, and preview from the browser
  • Watch the live log, including lock owner, timeout, and depth
  • Read the litmus page, which shows a suite only after a real run

Build with this

  • A personal Dropbox-style drive
  • Obsidian or Zotero sync
  • A backup target for rclone
02 Worker

Clairic Intake

Paste a support email or a receipt. Clairic returns typed fields with spans, confidence, and honest nulls.

Shows Reliable typed data from messy documents on Workers alone, with provenance and honest nulls. @cf/cloudflare/clairic reads text or one image and returns a value per field, or null, plus source spans and confidence. A small instruct model runs beside it. Clef can refund, escalate, or approve from the typed values. A sample inbox runs through a Queue into D1.

  • workers-ai
  • clairic
  • d1
  • r2
  • queues
  • turnstile
What you can do
  • Paste the support email or upload the receipt photo
  • Switch the invoice, support ticket, or insurance claim preset, or add a field
  • Read highlights, nulls, an estimate band, and a forecast chart
  • Compare latency, schema-valid output, and estimated cost with Llama 3.2 3B
  • Ask Clef to refund, escalate, or approve
  • Run the sample inbox and accept or correct a row

Build with this

  • Invoice intake that files a total only when the span and the confidence agree
  • Support triage that sends low-confidence or null fields to a person
  • Claims processing that estimates a reserve and forecasts the next payouts
03 Worker

Melody Auth

Full OAuth 2.1 / OpenID Connect server and client at the edge. PKCE, device code, client credentials, playground, plug into any OIDC app.

Shows You can run a standards-compliant OpenID Provider on Workers + D1 + KV and, when configured, broker Google / GitHub / Microsoft logins — then plug the issuer into Auth.js, Grafana, oauth2-proxy, or Cloudflare Access.

  • oauth
  • oidc
  • pkce
  • d1
  • kv
  • turnstile
  • rfc8628
What you can do
  • Authorization code + PKCE, client credentials, device code, token exchange
  • RFC 9068 JWT access tokens, introspection, revocation, PAR, consent
  • Dynamic client registration and admin client CRUD
  • Sign in with upstream OIDC/OAuth when secrets are set
  • Interactive OAuth playground with a request/response viewer

Build with this

  • IdP for any app that already speaks OAuth/OIDC
  • Broker Google/GitHub/Microsoft into your own tokens when those providers are configured
  • A standards-compliant login box you host at the edge
04 Worker

Edge browser

Paste a URL. A workflow screenshots it, saves a PDF, and summarizes the page.

Shows A Worker on the Workers Paid plan drives headless Chrome through the Browser Rendering binding and @cloudflare/puppeteer. A Workflow takes a desktop screenshot, a 390px phone screenshot, a PDF, and markdown, then Workers AI summarizes it. Warm reuse connects to the newest Browser Rendering session under the context cap, and otherwise launches a browser and disconnects it. There are no Containers and no Workers for Platforms.

  • browser-rendering
  • puppeteer
  • workflows
  • r2
  • d1
  • workers-ai
  • turnstile
What you can do
  • Paste a URL, pass Turnstile, and watch each workflow step
  • Open the desktop and phone screenshots, the PDF, the markdown, and the summary
  • See whether the capture reused the warm session or launched a browser
  • Try a blocked address and read the SSRF rejection
  • Open a recent capture from this browser

Build with this

  • Link previews that store a screenshot and a short summary
  • Page archiving with a PDF and markdown kept for a day
  • Visual regression checks from a desktop shot and a 390px shot
  • A scraping step that turns a page into markdown for RAG
05 Worker

BYOK playground

Paste an OpenAI-compatible key and talk to your model. The Worker does not store it.

Shows Not a general-purpose proxy: only /models and /chat/completions, https:443, no redirects, rate-limited. The key stays in the browser, SSRF is blocked, DNS is best-effort, and Workers AI comparison is Turnstile-gated with a daily budget.

  • ssrf
  • turnstile
  • d1
  • workers-ai
  • byok
What you can do
  • Paste a key, an https base URL, and a model id, then stream a chat
  • List models from GET /models on that endpoint
  • Send the same prompt to your model and to Workers AI; read latency, time to first token, and tokens
  • Probe streaming, tools, JSON schema, and vision — pass only with evidence, otherwise fail, unsupported, or inconclusive

Build with this

  • A product that accepts a customer’s OpenAI-compatible key without writing it to disk
  • A migration bench that compares a provider against Workers AI on the same prompt
  • An eval harness that records which capabilities an endpoint actually implements
06 Worker

Ember Rush

A 75-second multiplayer orb hunt. Highest score in the room wins.

Shows One Durable Object per room is the coordinator: hibernating WebSockets carry poses and scores, and an alarm runs the 75-second round. The room owns pickups, scores and the clock, and validates movement speed. A second tab is another player, not another copy of the game.

  • durable-objects
  • websockets
  • threejs
  • game
What you can do
  • Join a named room and open the link in a new tab or another browser
  • Start a 75-second round and move with the keyboard, a click, or the pad
  • Collect ember orbs (+1) and gold orbs (+3); the highest score wins
  • Play again without leaving the room
  • Play the same round on a 2D floor when WebGL cannot start

Build with this

  • A realtime game where the server owns pickups, scores and the round clock, and validates movement speed
  • A classroom activity with a shared timer and a scoreboard
  • A room that hibernates while players idle and wipes itself when the last one leaves
07 Worker

EdgeChat

A mini team chat. A message in one tab shows up in the other tabs in that room.

Shows One ChatRoom Durable Object per room name fans out hibernating WebSockets. The object sleeps between messages while visitors stay connected. D1 keeps the last 80 messages across refresh, KV stores the display name, and R2 holds an attachment the message can link to.

  • durable-objects
  • d1
  • kv
  • r2
  • websockets
What you can do
  • Join the same room in two tabs and watch a message arrive in both
  • Refresh and still see the last 80 messages stored in D1
  • Set a display name that is kept in KV
  • Attach a file; the message links to the R2 object, and PNG/JPEG/GIF/WebP images preview

Build with this

  • An incident channel where the transcript survives a refresh
  • In-product comments with file drops
  • A support room that sleeps between messages while visitors stay connected
08 Worker

ResolveHQ

A support inbox: public seeds, a per-visitor sandbox, and a labelled AI-or-stub draft.

Shows A Worker coordinates D1 tickets, R2 attachments, and a Queue consumer that turns a simulated inbound email into a ticket. Draft reply is same-origin, Turnstile-gated, session-bound, rate-limited, and budgeted; the composer labels Workers AI vs stub. Local bun run dev uses the stub (no AI binding). Live Workers AI needs the owner-deployed binding. Seed tickets are public (original thread). Your replies, inbound, and uploads stay in this browser and reset hourly. Seed status is locked.

  • d1
  • r2
  • queues
  • workers-ai
  • turnstile
  • cron
What you can do
  • Open a seeded ticket and read the original thread
  • Attach a PNG, JPEG, PDF, or text file; it downloads as an attachment and expires
  • Simulate inbound mail; only this browser sees the new ticket
  • Ask for a draft reply and see Path: Workers AI or Path: stub fallback (local is stub)

Build with this

  • A small inbox without a live mail route yet
  • Queue-backed intake that becomes tickets in a visitor sandbox
  • A reply desk that still fills a draft when the model is down, without an anonymous AI path
09 Worker

Temp email

Disposable inboxes on email.lomvic.com, plus a key you mint for an agent.

Shows An Email Worker receives catch-all mail, parses the MIME message, and stores metadata in D1 and message bodies plus attachments in R2. A cron deletes expired inboxes. An agent mints its own Turnstile-gated key and can long-poll for the next message.

  • email-workers
  • email-routing
  • d1
  • cron
  • agents
  • r2
  • turnstile
What you can do
  • Mint a short-lived address and copy it
  • Send the sample message and read the extracted code or link
  • Open HTML mail in a sandboxed frame; remote images stay blocked until you allow them
  • Mint a Turnstile-gated agent key, shown once, for the long-poll API
  • Deploy the same Worker onto your own zone

Build with this

  • Throwaway inboxes for signup and one-time-code tests
  • An agent that waits on the next message instead of sharing one API secret
  • A self-hosted mail zone with the same Email Worker, D1, and R2 layout
10 Worker

Apollo desk

A browser desk that talks to one Agents SDK brain and keeps the conversation.

Shows One Agents SDK Durable Object per desk runs the voice turn — speech to text, a tool loop, then speech — and stores SQLite memory with vector recall, schedules, and a confirmation gate. The desk is an MCP-style JSON-RPC tool server the brain calls on the same WebSocket.

  • agents-sdk
  • durable-objects
  • workers-ai
  • voice
  • mcp
What you can do
  • Hold to talk, type, or tap a suggested turn
  • Save a fact, a list item, or a timer, then refresh and see them return
  • Ask it to change the volume; the brain calls an MCP-style JSON-RPC tool server in the desk
  • Ask it to forget everything — facts, lists, conversation, location, timers, and reminders — and confirm or cancel within 30 seconds
  • Open the console for the SQLite transcript, vector scores, and the turn trace

Build with this

  • A voice appliance whose tools live on the device and whose memory lives in one Durable Object
  • A personal list and timer that survive a refresh
  • An agent that asks before it runs an unsafe tool
11 Worker

Cloudflare OS, sliced

An agent workspace where each gadget is a sandboxed Durable Object facet with its own SQLite

Shows Gadgets run as Durable Object facets inside Dynamic Workers, each with private SQLite. The sandboxed UI calls the facet over Cap'n Web, and a gatekeeper holds an outside read until a person approves it.

  • dynamic-workers
  • do-facets
  • capnweb
  • workers-ai
  • agents
  • durable-objects
What you can do
  • Open one workspace link in two tabs
  • Spawn Slides, Tic-tac-toe, Pixel Board, or Headlines, or ask the agent to draw
  • Use the gadget inside a sandboxed frame
  • Approve or deny the Headlines gadget's fetch of hn.algolia.com
  • Inspect RPC timings and that facet's SQLite tables

Build with this

  • An internal workspace where each tool is a sandboxed worker with its own database
  • An agent that can edit a gadget but cannot fetch until someone approves
  • A host for small multiplayer apps that share one workspace link
12 Dynamic Worker

Hello Dynamic Worker

A one-file HTML page the hub loads as a Dynamic Worker.

Shows The hub bundles worker.js as text. On the first request, the Worker Loader starts an isolate with id hello-dynamic:<sha256 of compat date + source> and reuses it while it stays warm. A source change gives a new id. The demo stores nothing; the hub's Workers Logs keep the request URL for up to 7 days.

  • dynamic-workers
  • starter
What you can do
  • Open the page served by the loaded worker
  • Type a name in the form (or follow ?name=Ankur) and see the greeting update
  • Refresh and watch the isolate request counter climb — that number is from the loaded module, not a static file on the hub

Build with this

  • A gallery that loads a snippet without a separate Worker deploy (load the source from KV or R2 instead of bundling it)
  • A preview of generated worker code
  • A check that the loader path works before you add bindings
13 Worker

Personal agent

An anonymous assistant with notes, recall, and a short research pass.

Shows One Agents SDK Durable Object per anonymous visitor holds the thread and embedding vectors. Page views and expired or unsigned reads do not create one. Markdown notes live in R2 under that visitor's prefix, and research fetches 2–4 allowlisted pages. An alarm deletes that visitor's R2 files and Durable Object storage 24 hours after the last write.

  • agents-sdk
  • durable-objects
  • r2
  • workers-ai
  • turnstile
What you can do
  • Chat with the assistant bound to this browser's visitor id
  • Create, open, and delete markdown notes in R2
  • See the note title and score under a reply that used memory
  • Run research over 2–4 allowlisted pages and read the citations
  • Start a new visitor, which is a different Durable Object

Build with this

  • A notes-backed assistant for one person, with no account
  • A research sidebar that only fetches an allowlist
  • A demo tenant that deletes its own storage on a timer
14 Worker

Partyboard

A shared ink board. A stroke in one tab shows up in the others.

Shows PartyServer routes each ink room to one hibernating Durable Object. Yjs strokes persist in Durable Object storage; cursors stay on the awareness channel and are not stored. An alarm wipes the room two hours after it is created. Caps are enforced in the Durable Object so erasing reopens a full board.

  • partyserver
  • yjs
  • durable-objects
  • websockets
  • turnstile
What you can do
  • Open a room after the Turnstile check and send the link
  • Draw and watch the stroke sync to another tab
  • See live cursors that disappear when the socket closes
  • Hit the caps: 8 connections, 240 strokes, and a 256 KB snapshot

Build with this

  • A collaborative whiteboard that deletes itself
  • Live annotation on a shared page
  • A classroom sketch room with a hard cap on size and time
15 Worker

Feedlog

A public feedback board with votes, a roadmap, and duplicate spotting.

Shows D1 holds posts, one vote per visitor cookie, and changelog rows. Workers AI embeds the title and body into Vectorize so the compose box can list similar posts. If the index is unavailable, the page falls back to word overlap and says so.

  • d1
  • r2
  • vectorize
  • workers-ai
  • turnstile
What you can do
  • Read the seeded ideas, vote once from this browser, and open the roadmap and changelog
  • Write a post and watch similar posts appear as you type
  • Attach a JPEG, PNG, GIF, or WebP under 1.5 MB (it stays hidden until an admin approves it)
  • Type a near-copy of a seeded title (try 'Dark mode for the roadmap') and see it flagged as a possible duplicate

Build with this

  • A public roadmap with one vote per browser
  • A changelog next to the requests that prompted it
  • A request form that warns when a near-duplicate already exists
16 Worker

Company Brain

A private org memory. Answers cite stored rows, or say they don't know.

Shows One Agents SDK Durable Object per sandbox org stores facts and decisions in SQLite. Workers AI answers only from retrieved rows and cites them, or says it does not know. Orgs are not shared, and an alarm wipes the sandbox.

  • agents-sdk
  • durable-objects
  • workers-ai
  • turnstile
What you can do
  • Create a private org seeded with a few Northline facts and decisions
  • Ask a question and see cited fact or decision ids, or a refusal when nothing matches
  • Add a fact or decision in the memory pane
  • Ingest a row with the ingest token returned at creation

Build with this

  • An onboarding bot that only quotes the rows you loaded
  • A decision log whose answers cite the source row
  • A sandbox for the “I don't know” path before you add connectors
17 Worker

Clef Gate

A desk where every sandboxed tool call stops for a Clef decision.

Shows Every tool call is a choice from Clef or Clef-flash: allow, deny, or ask-human, with probabilities. Ask-human and low-confidence calls wait in the session Durable Object until you approve or deny, or ten minutes pass. The five tools are fakes — nothing is sent, fetched, or deleted — and each verdict is written to D1.

  • workers-ai
  • agents-sdk
  • d1
  • durable-objects
  • turnstile
What you can do
  • Ask the desk to use one of the five sandboxed tools
  • Read the verdict and the probabilities
  • Approve or deny a paused call; it resumes in the same Durable Object, or ten minutes pass
  • Open the audit list for the tool, the arguments, the decision, and your answer
  • See that send, delete, and SQL tools only describe what they would have done

Build with this

  • A tool-using agent with a human approval queue
  • An audit log of model verdicts before a real side effect exists
  • A gate you can later put in front of mail, SQL, or deletes
18 Worker

Tanbase

An anonymous kanban. Cards stay in sync across tabs, and a workflow can split one.

Shows D1 is the board of record. One hibernating Board Durable Object per board fans creates, moves, edits, and deletes to every tab in the same browser. A Workflow splits a card and the drawer shows whether Workers AI or the fallback wrote the subtasks. There are no accounts; boards expire after 7 days.

  • d1
  • durable-objects
  • r2
  • workflows
  • workers-ai
  • turnstile
What you can do
  • Create a board and add, edit, move, and delete cards
  • Open the same board in another tab and watch the Durable Object sync it
  • Attach a small file to a card
  • Split a card and see whether Workers AI or the fallback wrote the subtasks

Build with this

  • A private board per browser that stays in sync across its tabs
  • Live card updates across every open tab in that browser
  • A “split this task” action backed by a Workflow
19 Worker

Actor lab

A counter race and a chat that show how one Durable Object lines up work.

Shows A SQLite-backed actor persists fields through a state proxy, and mailbox handlers run one at a time. An await on Workers AI opens the input gate, so interleaved updates lose increments. The chat actor hibernates; a simulated eviction clears the in-memory scratch note and reloads the transcript from SQLite.

  • durable-objects
  • workers-ai
  • websockets
  • turnstile
What you can do
  • Arm a race after Turnstile and fire Interleaved: the counter usually ends below the number of updates
  • Fire Serialized mailbox: the counter reaches the number of updates
  • Chat in a room over a hibernating WebSocket
  • Simulate evict: the scratch note disappears and the SQLite transcript remains

Build with this

  • A counter or balance that must not lose increments across an await
  • A chat whose history survives hibernation and a dropped isolate
  • A bench for teaching the Durable Object input gate
20 Worker

Repo per agent

One agent and one git repo per task. The page shows the commit and the diff.

Shows One Agents SDK agent and one Cloudflare Artifacts git repository per task. The agent commits a small file edit through Git smart HTTP. The Artifacts binding creates the repo, reads the tree, and mints a ten-minute read-only clone token. If the model returns the same file, nothing is committed.

  • artifacts
  • agents-sdk
  • workers-ai
  • d1
  • turnstile
  • durable-objects
What you can do
  • Create a task after Turnstile and get a fresh Artifacts repo
  • Run the agent and, when the model changes a file, see the commit
  • Read the commit log and the line diff
  • Mint a ten-minute read-only git clone token
  • An unchanged model response is reported as an error and commits nothing

Build with this

  • A coding agent with one repo per ticket
  • A review page that shows the diff before anyone clones
  • A scratch repo that a cron deletes with its log rows
21 Worker

Memory repo

An agent's memory is markdown in a git repo. Facts and dreams are commits you can diff.

Shows One ChatAgent Durable Object per visitor recalls an FTS5 index, then Workers AI replies. One MemoryAgent per visitor owns an Artifacts git repo of markdown. Every memory write is a commit, and a dream alarm consolidates the files into another commit. If the dream's output is unusable, nothing is committed. The repo, chat, and rows are deleted 24 h after the last activity.

  • artifacts
  • agents-sdk
  • workers-ai
  • d1
  • turnstile
  • durable-objects
What you can do
  • Pass Turnstile and open a memory repo for this browser
  • State a name, preference, or project and see the commit
  • Read MEMORY.md and the topic files the reply recalled
  • Open a commit and read the unified diff
  • Run Dream now and see the steps, or why nothing was committed

Build with this

  • A personal agent with memory that lives in a git repo
  • A consolidation job that rewrites notes and leaves a diff
  • A demo tenant whose git repo deletes itself on a timer
22 Worker

Omni Judge

Clef-omni scores a receipt, a cracked screen, a parcel, a support note, or a fall in one call.

Shows One Workers AI call to Clef-omni reads the photo, voice note, or clip and returns a probability for every allowed answer. The bundled presets are real intake tasks with a labelled expected answer. Upload bytes are sniffed, stored in R2 under an unguessable id, and deleted after 24 hours. Judgments live in D1.

  • workers-ai
  • d1
  • r2
  • turnstile
  • cron
What you can do
  • Run a preset: expense receipt, product QA, delivery parcel, support voice, or a safety clip
  • Read the top answer, the bar for every option, and whether it matched the expected label
  • Snap a photo, record a voice note, or film up to 10 seconds and write a checklist
  • Compare an image or a voice note with Whisper or a vision model, then Clef

Build with this

  • Expense intake that rejects a blurry receipt
  • Product QA that flags a cracked mug or phone screen
  • A delivery photo check for a damaged parcel
  • Support voice-note triage, urgent versus routine
  • A short safety clip that spots a fall