Fork node
The Fork node duplicates every input row across N output ports so parallel downstream branches process the same data. Unlike Router (which sends a row to one port), Fork sends every row to every port.
When to use
- The same rows need to feed multiple independent downstream chains (a Load AND a Notification, a summary AND a full extract).
- You need parallelism at the workflow level rather than at the row level.
Ports
| Port | Direction | Kind | Notes |
|---|---|---|---|
in | in | data | Rows to duplicate. |
<branchId> | out | data | One dynamic output port per configured branch. Every row fires on every branch. |
error | out | control | Fires on validation failures. |
notify | out | control | Notification policy port. |
Configuration
- Branches. Ordered list of
{ id, label }. Add a branch for each parallel downstream chain. - Fork mode.
streaming(default) — each chunk of input rows fires on every branch as it arrives.buffer_all— buffer the entire input stream and fire ONE call per branch with all rows. Useful when a downstream Compute is expected to see all rows at once.
Configure Action walkthrough
- Add a branch with the + button and give it a display label.
- Wire each branch to its downstream chain on the canvas.
- Toggle mode: streaming (per chunk) vs buffer_all (single call per branch).
Runtime behaviour
- Streaming mode: every incoming chunk fires immediately on every branch. Downstream chains run in parallel.
- Buffer_all mode: the runtime accumulates the input into
forkBufferStateper node id per source; the finalize pass fires the buffer once per branch.
Failure modes
- Buffer_all under memory pressure. Large input can exhaust the runtime; prefer streaming for large streams.