Skip to content
TriedDocs
Conversation flow

Nodes and edges

The fields every flow node shares, the kinds of outgoing edges, per-node setting overrides, and the order in which the engine leaves a node.

Every step in a flow is a node, and every way out of a node is an edge. This page covers what all nodes have in common. Each node type has its own page for its specific fields.

Common node fields#

Field Type Default Description
id string Unique within the flow. The dashboard generates node_... ids
type string The node type
name string "" Shown on the card and used in search, logs and test output
display_position {x, y} {x: 0, y: 0} Canvas position
global_node_setting object Makes the node a global node
instruction {type: "prompt" or "static_text", text} On most types. See below

Instructions#

Nodes that speak have an instruction:

  • Prompt (type: "prompt"): text for the LLM, added to the system prompt under "Current Task". The LLM writes the words.
  • Static Sentence (type: "static_text"): exact words. A conversation node speaks them verbatim on entry, then tells the LLM it has just said them.

Both render {{variables}}. Instructions exist on conversation, subagent, press digit, end, transfer, function, code, SMS, agent transfer, MCP and transfer-agent nodes. On a function node the field is labelled Message while running (optional).

Edges#

An edge is { id, destination_node_id, transition_condition }. destination_node_id is null while the edge is not connected; an unconnected edge is ignored at runtime.

Edge kind Field Where Taken when
Normal edges[] Most types Its condition holds
Always always_edge Conversation, subagent After any caller reply, before other conditions
Skip response skip_response_edge Conversation Right after the agent finishes speaking, without waiting for the caller
Else else_edge Conversation, subagent, function, code, MCP, component; required on logic split No other edge matched
Failure edge Call transfer (Transfer failed), agent transfer (Swap failed) The transfer or swap failed
Success and failure success_edge, failure_edge SMS (SMS sent, SMS failed) The SMS was or was not sent

On a node card, the Transition section lists every edge. The + button (Add transition) offers Prompt, Equation, Else and Always/Skip where the node type allows them. In Node settings, conversation nodes also have Skip response, Always edge and Else edge toggles.

Evaluation order#

When the engine decides whether to leave a node, it checks in this order:

  1. Always edge.
  2. Equation transitions, top to bottom. The first that holds wins.
  3. Prompt transitions, Both (equation plus prompt) transitions whose equations hold, global node conditions and go-back conditions, decided together by the LLM.
  4. Else edge.
  5. Otherwise stay in the node.

When the checks run depends on the node:

Node When transitions are checked
Conversation, subagent without an else edge Steps 1 and 2 before the LLM replies to each caller turn. Step 3 happens inside the reply call: the LLM either answers or calls a transition_to_<node_id> tool
Conversation, subagent with an else edge All steps before the reply, with one extra LLM call for step 3, so that "else" can apply
Every other node All steps right after the node finishes its work. Step 3 uses a separate LLM call
Skip response edge After the agent finishes speaking in the node

The engine follows automatic transitions for up to 25 hops in a row; after that it stays put and logs an error, which protects against loops.

Per-node settings#

Open Node settings at the bottom of the node's settings to override agent or flow settings while the node is active. Empty fields mean "same as the agent" or "same as the flow".

UI label Field Range
Model model_choice: {type: "cascading", model} Any listed model, or Same as the flow
Voice speed voice_speed 0.5 to 2
Responsiveness responsiveness 0 to 1
Interruption interruption_sensitivity 0 to 1
Transcription stt_mode Optimise for speed (fast) or Optimise for accuracy (accurate)
Boosted keywords boosted_keywords Comma separated
Reminder after (s) reminder_trigger_ms 1 s or more
Reminders, at most reminder_max_count 0 or more
Keypad input interrupts the agent allow_dtmf_interruption Yes, No, or same as the agent
Retrieval instruction kb_instruction Up to 500 characters
Knowledge bases knowledge_base_ids Used instead of the flow's knowledge bases
Example replies, Transition examples finetune_conversation_examples, finetune_transition_examples See Finetune examples

The model override also accepts high_priority and ultrafast through the API. When the next node has no override, the agent's own value is restored.

Start node#

The start node is start_node_id. On the canvas the green Begin tag points at it, and the node's header shows Start in Node settings. Change it with Set as start node in Node settings, or drag a line from Begin to another node. Deleting the start node makes the next node in the list the start.