Documentation
New here? Start with Write your first notebook. The Reference covers every feature; the Deep reads explain why the system is shaped this way.
Start here
Five-minute quickstart
The shortest path to a running notebook: one input, one derived value, a live slider.
Write your first notebook
From an empty file to a running, built notebook — the from-scratch walkthrough.
How the names work
Function name, result name, type, and label are four different things — the result name is the edge.
Learn
Recipes
The cookbook: one mechanism per recipe, smallest correct form, meant to be copied — inputs, outputs, graph shape, build/feed/test.
Live feeds
Wire a sensor, socket, or polled API into a notebook: a feed is a driver on the set port.
Publish & deploy
Get a built WASM notebook online: the three files, the required MIME type, caching, GitHub Pages / S3 / static hosts, and a copy-paste Action.
Troubleshooting
An index of the check/run/build messages, what each means, and the fix.
Reference
Directives
The //notebook: comment directives — slider, height, area, layout — and the presentation-only rule they share.
Controls
How a value becomes an input, and which widget it renders as — decided by type, not directive.
Rendering
How a value is drawn: the Render method, the MIME types, and the degradation ladder.
JS client
Drive a WASM notebook from a host page: enumerate its inputs and compute on its typed value stream — no build step.
Ports & wire formats
The exact contract for driving a notebook from outside: /set, /events (SSE), /leaves, the browser port, and the security boundary.
Charts
The optional nb/chart package: five chart forms and summary statistics, drawn well — the 1% of a plotting library, on purpose.
Build & run
The check/run/build verbs, the binary's --headless/--set/--json flags, and the WASM gate.
Layout
Arrange a notebook with area + layout — presentation over source order, degrading to linear.
Provenance
What every built artifact records about its origin, and why it makes figures reproducible.