Live demo · Synthetic data, real pipeline

Service incident room

A field issue comes in. The system retrieves evidence, an AI drafts a plan, deterministic rules decide what a person may approve, and the decision is saved with a receipt. It runs live below, on Cloudflare's free tier.

01 Choose a synthetic case Three cases, three different gate outcomes

Loading scenarios from GET /api/incident…

02 Run

Streams stage events from POST /api/incident/run. Nothing below moves until the server reports it.

Loading scenarios…

03 Pipeline Each node latches on a real server event, with the server's own timing
  • Network hop
  • In-process
  • Running
  • Done
  • Fault
  1. 01 · Browser → API Field report Idle Case sent to the incident API.
  2. 02 · In-process Asset lookup Idle Synthetic asset record from a fixture adapter.
  3. 03 · In-process Retrieval Idle BM25 ranking over synthetic runbook sections.
  4. 04 · → Workers AI AI draft Idle Drafts steps from a closed action catalog.
  5. 05 · In-process Policy gate Idle Fixed rules decide what may be approved.
  6. 06 · Human Your decision Idle A person records the decision.
  7. 07 · → D1 Receipt Idle The decision is saved to D1 with a receipt.
04 MCP server

The same tools, published to AI agents

The workflow above calls get_incident and search_service_docs in-process. /api/mcp publishes those two functions over the Model Context Protocol, so any MCP client can discover and call them. Read-only by design: no inference, no writes, bounded synthetic inputs. The tool list below is fetched live from the endpoint when this section comes into view.

Not discovered yet.

Tool cards appear here after tools/list returns.

05 Under the hood

How it is built, and where the honesty lines are

Design choices

The model proposes; code disposes.
The draft may only use four catalog actions and must cite exhibits. Five deterministic rules compute the allowed decisions, and the server runs them again before it saves anything.
A person is the only approver.
Approve exists only when every check passes. The browser cannot send a decision the gate did not permit; the API rejects it, and a repeated decision returns the same receipt.
Honest degradation.
If Workers AI or D1 is unavailable, the page says so, shows an authored reference draft labeled as not AI, and keeps approval closed.
Budgeted for the free tier.
Live drafts are capped per day with a single D1 row; each costs about 17 neurons against a free allowance of 10,000.
One code path.
The MCP tools call the same functions as the workflow, so what an agent sees is what the page ran.

Stack

Runtime
Cloudflare Pages Functions · no framework · no build step
Streaming
Server-sent events over fetch; each stage event carries the server's measured duration
Retrieval
BM25 over 10 original runbook sections, in-process, scores and applicability exposed
Model
Workers AI · @cf/meta/llama-3.1-8b-instruct-fast · JSON-schema response format · temperature 0.1 · 360-token cap
Guardrails
Closed action catalog · server-side citation validation · five deterministic rules · gate re-run on review
Storage
D1 (SQLite): runs, decisions, sandbox tickets, daily live-draft budget
MCP
Streamable HTTP · protocol 2025-06-18 · readOnlyHint annotations · shared handlers
Tests
node:test: the three gate outcomes, citation validation, MCP discovery and calls, the no-AI path
Boundaries

Real versus synthetic

ComponentNatureThis session
Assets, readings, parts, failuresSynthetic Fixtures—
Runbook sectionsSynthetic Original text—
Retrieval and rankingReal BM25 over synthetic textNo run yet
AI draftReal Workers AI when boundNo run yet
Policy gateReal Deterministic codeNo run yet
HTTP API and event streamReal Cloudflare Pages FunctionsNo run yet
Decision storageReal D1 when boundNo decision yet
MCP endpointReal Read-only protocolNot checked
Enterprise, repair, or machine systemsNone Not connected—

Every asset, reading, document, part, and failure on this page is invented. No Cummins, MuleSoft, Snowflake, repair system, or machine is connected. The pipeline, the model call, the rules, the database writes, and the MCP endpoint are real.

For engineers

Engineer view

Server-side trace from the complete event. Durations are the values the server measured.