Skip to content
Try it

See what your pipeline compiles to

Otium takes a multi-stage pipeline as one artifact and works out which dependencies are real, where the scheduler must stop chaining, and what the whole thing costs — before anything runs.

This is the real compiler, running in your browser. Nothing you type is sent to us — no account, no upload, no retention.

The starter pipeline has a deliberate flaw — one step waits on another for no reason. The compiler finds it below; delete the after: line it names and watch the graph get one step shallower.

Format guide →

Quick reference — what the keys mean
name
What the workflow is called. You submit against it by name and version.
input.schema
The shape of one item you submit. `${input.…}` reads from it.
nodes.<key>
One inference step. Its body is an OpenAI chat request with bindings substituted in.
target.product
What you bought — a SKU, not a model. Otium resolves the model at dispatch.
${nodes.x.output.y}
Read an upstream node’s output. This is what creates a dependency — you never declare edges.
after: [x]
Ordering with no data flowing. The only edge you write by hand, and the one the lint questions.
when
A structured guard. If it is false the node is skipped, and the skip propagates.
output.validators
What a good output looks like. A failure retries in place instead of costing another batch window.
fallback
Where to retry when validation keeps failing — a different product, or the same one with different parameters.
estimate
Your expected tokens in and out. Without it the cost figure is assumed from prompt size, and says so.
type: external
A step you run. The run parks, you do the work, you resume it — Otium never runs your code.

The full format — assets, external nodes, predicates, fallback policy — is in the workflow guide.