Visual + NL designer
Designer.
English on one side. Boxes on the other.
A dual-pane editor for Formulas and Views. Type a description and it compiles to a step tree. Drag atoms on the canvas and it writes the description back. Both directions stay in sync. Pick whichever side you find easier.
Describe (left) ↔ step tree (center) ↔ atom palette (right). Changed subtrees glow for two seconds after a sync.
Control flow without a DSL
Four primitives. Every workflow shape.
No arbitrary expression language to learn, just composable blocks that provably halt every time.
branchif (condition) then […] else […]. Eight comparison ops on any $.path value.
forEachIterate over rows with a hard cap. $.item.* exposed to nested steps. Runaway loops can't burn your wallet.
tryCatchtry […] catch (error) […]. $._error.message in the handler. A failure recovers instead of aborting the run.
subFormulaCall another Formula by name with an input mapping. Compose big workflows from small, named pieces.
No goto. No while. No recursive self-calls. Every Reaction provably halts.
Inside the Designer
Authoring that respects your time.
Bidirectional sync
Visual→NL and NL→Visual, each independently manual or auto (debounced). Whichever side is easier. The other follows.
Schema-aware compile
When compiling prose, the LLM sees the real atom output schemas, so layouts and templates bind to columns that actually exist.
Per-atom input templates
Explicit JSON templates with $.path autocomplete. Question: "$.formulaInput.q", rowCount: "$.priorOutputs.nl-to-sql.rowCount".
Per-step model override
Pin a specific LLM profile to a single step without touching the rest of the Formula.
Streaming describe
The description fills in word-by-word over SSE as the model writes it.
Diff highlight + undo
Changed subtrees glow blue after a sync. One-step undo rolls back the most recent change on either side.
NL Views too
The same dual-pane model authors Views: NL ↔ JSON ↔ live preview, schema-aware when bound to a Skill.
Starter templates
KPI dashboard, driver breakdown, approval card, plain results. Seed the editor with tuned prose.
Local persistence
Pane state and sync-mode preferences survive a page reload, per session.