Skip to main content

Flows

A flow is the thing you design in Workbench and call from your code. It's a directed graph of nodes wired together by links: inputs enter, data moves through the nodes you've wired, and the flow emits outputs. You build it visually on the canvas at workbench.zerowidth.ai.

The property that makes a flow worth building: its behavior is the contract, and its internals are yours to change. Your integration doesn't change as long as the inputs and outputs stay the same. Swap the model, rewrite a prompt, rewire the middle. That's the whole point of designing behind a flow instead of hard-coding one model call.

What a flow carries

  • Metadata — display name, description, tags, and a long-form readme shown on its detail page.
  • Nodes — the units of work.
  • Links — the wires connecting one node's output port to another's input port.
  • Imports — other flows it embeds as pinned, versioned building blocks.
  • A stable id — every flow has a flowUuid, the identifier used across the public API for reading, forking, and running. It's distinct from the id in the editor URL.

Start from a pattern

Most flows don't start from a blank canvas. Workbench offers guided pattern editors — each a focused form for a common shape that generates the graph for you:

  • Agent — a chat assistant with a system prompt and optional tools.
  • Classifier — sorts an input into one of a fixed set of categories.
  • Structurer — extracts structured JSON from unstructured input against a schema.
  • Judge — scores an input against a rubric (the shape that powers Caliper evals).
  • Interviewer — an objective-driven conversation that gathers information over multiple turns.
  • Custom — the full graph editor, every node available. Any pattern can convert to custom to take over the canvas; the conversion is one-way.

Whichever you start with, the result is the same kind of flow, runnable through the same API.

Draft and published versions

A flow has a live draft — the working copy you edit. It changes every time you save, and Workbench keeps a rolling history of snapshots so you can restore an earlier state.

When a behavior is ready to depend on, you publish a version: a named, frozen snapshot. Version labels are free-form text ("1.0.0", "production", "tone-v2"). Re-publishing a label re-points it to the new snapshot.

The publish dialog also shows the flow's eval standing — the latest score when a Caliper eval targets the flow, or a warning when nothing does. Publishing is never blocked; the button just reads "Publish anyway" when the version would ship without receipts.

Where to go next

3 min read