Skip to main content

Fork node

Decision

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

PortDirectionKindNotes
inindataRows to duplicate.
<branchId>outdataOne dynamic output port per configured branch. Every row fires on every branch.
erroroutcontrolFires on validation failures.
notifyoutcontrolNotification 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

  1. Add a branch with the + button and give it a display label.
  2. Wire each branch to its downstream chain on the canvas.
  3. 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 forkBufferState per 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.