A pipeline is a directed graph of nodes that moves and transforms data. Where the namespace
answers "what is this value?", a pipeline answers "what should happen to it?"
One trigger, one read, one calculation, two destinations.
The distinguishing property of a pipeline is reliability: writes it performs are covered by
store-and-forward — buffered on outage, replayed in order,
quarantined on permanent failure. A script write is immediate and fails to its caller.
Execution is graph-driven, not line-by-line: a node runs when a message arrives on its input.
A node with several outbound wires fans out — every downstream branch receives the message.
Switch is the exception: it has one output per rule, and a message leaves
by the outputs whose rules matched. A branch that did not fire is skipped, and the skip cascades.
Array Iterator splits an array into one message per item; Join collects them back.
Batch Transform processes items of a collection in parallel.
Timer is the only node that defers. It never blocks the graph: it hands
a deadline to the runtime and returns, and the run that fires later is an independent one — which
is how a repeating timer works in a graph that forbids cycles.
Errors are logged against the execution, and the branch stops. Other branches continue.
Triggers are armed; the graph executes when they fire.
Error
Started but a node failed fatally; see the execution log.
Action
Permission
Start or stop a pipeline, or all of them
Start and stop pipelines
Execute once, now
Run pipelines
Trigger a single node
Run pipelines
See runtime state
authenticated
A pipeline is also enabled/disabled as configuration. Disabling stops it and keeps it from being
started by "start all" — the right way to shelve a pipeline without deleting it.
New in 1.0.4 — the controls are on the canvas itself, and undo and redo grey out when there is
nothing to step to, so the canvas says what is available rather than leaving you to try it.
Multi-touch pinch to zoom and two-finger pan work on a touch screen. New in 1.0.1
Pipelines are optimistically locked with a server-managed revision. Saving carries the revision
you loaded; a concurrent save by someone else is rejected rather than silently overwriting. Two
engineers editing the same pipeline get a conflict to resolve, not a lost afternoon.