Connecting threads

Threads are the directed connections between nodes. Data flows along threads as messages — from an output port on one node to an input port on another.

Drawing a thread

Hover over any output port (shown on the right side of a node) until the cursor changes. Click and drag toward the destination node, then release over an input port (shown on the left side) to connect them.

If the port types are incompatible the connection will not be accepted. Compatible pairs:

Port types

TypeDescription
nullCarries no data — acts as a trigger signal. Used by start and value input ports.
numberAn integer value.
textA string value.
booleanTrue or false.
anyAccepts or emits any data type.

Fan-out

A single output port can connect to multiple input ports. When the node fires, the same message is pushed to all connected threads simultaneously. This is how start triggers multiple nodes at once.

Each input port can receive from only one thread at a time. Drawing a new thread to an already-connected input replaces the existing connection.

How nodes sync multiple inputs

Nodes that require more than one input — like add, which needs both a and b — wait until all required inputs have received a message with the same message ID. This is called syncing.

This guarantees that both values are from the same causal origin. For example, if you compute two separate values from the same initial trigger and feed them into add, they will always arrive as a matched pair.

Message IDs. Every message carries a UUID that is propagated unchanged through the graph. Nodes use these IDs to match inputs that belong together. Inside loops, a new ID is pushed onto an ID stack per iteration so that concurrent loop steps don't interfere with each other.

Removing a thread

Click on a thread to select it, then press Backspace or Delete to remove it. You can also select multiple threads and delete them together.

Viewing thread labels

Each thread shows the name of the output port it originates from. Hover over a thread to see its full source and destination port names.