Skip to content
Sponsor

Triggers and pulled data

Every wire in Boltjar carries one of two things: an event that says “run now”, or data that a node reads when it runs. Once that clicks, every graph reads the same way.

A trigger starts a turn on its own: a Chat Input when you send a message, a Webhook when a request arrives, an Interval or a Schedule on the clock, a Manual when you press Fire. What it fires travels along the red event wires.

A node that does work, such as an LLM, an HTTP Request or a DB, has a trigger input. It runs when an event lands there, and when it finishes it fires its own trigger output, so the next node can run after it. That chain of events is the order of the graph.

The other inputs of a node that fires are data. They are not pushed to it: at the moment it fires, the node pulls them. A pulled input asks the node upstream for its value, and if that node is a data node, such as a Text, a Template or a Compute, it runs right then to produce it.

So in Text → Template → LLM.prompt, nothing happens until the LLM fires. Then the LLM pulls its prompt, the Template assembles its text, and the Template pulls the Text. A Template never sits on a clock; it runs when something needs its words.

Everything that happens because of one event is a turn. Within a turn, a data node runs once and every reader gets the same value, so three nodes pulling one Template see one text. A sensor such as Time or Screen Capture is the exception: it reads fresh on every pull.

A trigger that carries data sets its data outputs first and fires last. The Chat Input sets text, then fires trigger; the Webhook sets body, json, headers and query, then fires. So a node fired by the trigger always reads the new values.

Each page of the node reference says which one a node is:

Runs When Examples
trigger on its own: a message, a request, the clock Chat Input, Webhook, Schedule
fired when an event or a value lands on a trigger input LLM, HTTP Request, DB, Write File
pulled when a node that fires reads its output Text, Template, Chunk, Read File
routing never: the runtime joins the wires around it Router, Wireless In, Wireless Out

A few nodes shape the flow of events themselves: For-each loops, Sync waits for several branches, Queue lets one job through at a time, Wait delays, and Logic sends a value one way or the other.