under the hood

How site works

The Workbench runs on two tempos. Tweak a property and the Construct redraws locally — no network, no tokens. Change the wiring and it fires the real agent: a grounded loop over a curated knowledge base that answers in my voice and shows exactly what it's grounded in.

grounded loopretrievalevidencelocal · no network
BROWSER · clientSERVER · node runtimePatch baywire · tweak propsProperty tweakseed · density · hueLocal recomputeredraws Constructno network · 0 tokensTopology changewire / unwire a portNarration + grounded-in receiptstoken · chips · trace900 ms · settle① POST /api/agent · SSE② SSE stream ↑Narratorclaude-sonnet-5 · loop ≤ 4searchWork toolgrounds each claimClient-safe receiptsinternal notes strippedRetrievecosine · floor 0.25 · top-3queryevidencekb/embeddings.jsonresolve · kb/projects.json

local · no network

The fast lane — local, no network

Property knobs (seed, density, hue) recompute the generative Construct right in the browser. It never calls the agent, spends no tokens, and settles in under two seconds — the tempo you feel while playing.

grounded loop

The grounded lane — the real agent

Wiring or unwiring a port is a topology change. After a 900 ms settle it POSTs to /api/agent over SSE, where the narrator runs a real loop of up to four steps, calling searchWork to retrieve evidence by cosine similarity from a curated knowledge base — the same loop the /agent chat runs.

evidence

Receipts, not vibes

Every retrieved chunk resolves to a client-safe project view — name, url, one-liner — while the internal review notes stay on the server. That's the "grounded in" row: the answer shows exactly what it's built on, and never invents a result.

See it run

Open the Workbench and wire a panel — watch the grounded loop light up, receipts and all.