ai.parse or transform.script), a typed config,
and a typed output. The engine topologically sorts the graph and runs each step
through its registered processor, passing outputs forward along the edges.
Steps
Steps come in four categories:- AI steps (
ai.*), model-backed parsing, extraction, classification, and splitting. - Transform steps (
transform.*), deterministic data shaping: scripts, templates, merges, regex extraction, and format conversions. - Action steps (
action.*), external side effects such as HTTP requests and invoking other workflows. - Control steps (
control.*), flow control: conditions, loops, parallel fan-out, and typed failure.
Referencing step output
Downstream steps read upstream output with template expressions:.output segment is required because each step result is stored as
{ output, status }. Scalar inputs to the workflow are available as
{{ input.<name> }}.
Runs
Executing a workflow creates a run. Runs are claimed from a queue by workers, carry a status (created, queued, running, completed, failed,
cancelled), and store their inputs and per-step outputs. Inputs are frozen
once a run leaves the created state. To change inputs after enqueue, start a
new run.
Evaluating workflows
Workflows are tested like code: you attach a dataset of examples (inputs plus expected outputs) and run evaluators (exact-diff, LLM-judge, or a custom script) to score each run. Theeigenpal workflow CLI commands push
datasets and evaluators, run experiments, and compare results.