Execution Model
Execution model
A pipeline describes what to run; the execution model is how the engine runs it. Two mechanisms move work through the graph: data lanes carry data between nodes, and control connections let agents invoke their helpers.
Data lanes
A lane is a typed channel between two nodes. A node declares the lanes it
consumes in its input array; the engine routes each output lane to the inputs
that ask for it.
"input": [{ "lane": "questions", "from": "qdrant_1" }]
This reads: take the questions lane produced by qdrant_1 as my input.
Lane types
Lanes are typed, and the type must match across a connection:
| Lane | Carries |
|---|---|
questions | Queries flowing toward a model |
answers | Model responses flowing back |
text | Plain text content |
tags | Structured metadata / parameters |
image | Image content |
audio | Audio streams |
video | Video streams |
Lane flow rules
- Type compatibility: the output lane of one node must match the input lane
of the next. A
textoutput feeds atextinput; mismatched lanes are a pipeline error. - Transformation: many nodes change the lane type. An embedding node turns
questionsinto vectors for a store; an LLM turnsquestionsintoanswers. - Fan-in: a node can consume the same lane from several upstream nodes by
listing multiple entries in
input. Aresponsenode, for example, can mergeanswersfrom several agents.
"input": [
{ "lane": "answers", "from": "agent_rocketride_1" },
{ "lane": "answers", "from": "agent_crewai_1" }
]
Control connections
Data lanes are not the only wiring. Agents (and other nodes with an invoke
field) reach their LLM, tools, and memory through control connections
instead of lanes, see Agents & tools. Control
connections form a side channel: the engine resolves them at startup so an
agent can call a tool mid-run without that tool ever sitting on a data lane.
How a run flows
The engine streams; it does not run the graph stage by stage. Once a pipeline starts:
- Data enters at a source (a
webhook, achatstream, a file). - Each node processes data as it arrives and emits onto its output lanes. Independent branches run concurrently across threads.
- Agents loop, calling their LLM and tools over one or more waves of
reasoning, until they produce a result. For
agent_rocketride,max_wavescaps how many reasoning cycles it may take. - Results stream out through a target (typically a
responsenode) back to the client as they are produced.
Because data streams rather than buffering, results can begin returning before
the whole input is consumed, which is what makes conversational chat() flows
feel live.
Next steps
- Agents & tools: control connections in depth.
- Nodes: what sits on each lane.
- WebSocket protocol: how clients feed and read a run.
- Observability: watch a run stream, with lifecycle, status, metrics, and flow traces.
- Pipeline JSON reference: the
input,lane, andcontrolfields.