Skip to main content
AgentsAgentic Designer

Workflow Nodes Reference

Complete reference for every node type available in the Agentic Designer. Each node performs a specific role in your workflow graph — from LLM calls and branching logic to state management and safety checks.

Template Variables

Many node fields support template variables that resolve at runtime. Use double-brace syntax inside any field marked with “supports templates”.

VariableResolves to
{{input}}The original user input for this run
{{last_output}}Output of the previous node in the graph
{{state.myKey}}Value of myKey from the run’s global state
{{node.nodeId.output}}Output of a specific node by its ID
{{all_outputs}}JSON object of all node outputs so far

Node Overview

NodeCategoryPurpose
StartControlEntry point — receives input, initializes state
EndControlTerminates execution, produces final output
LLMExecutionCalls an LLM with a prompt template
Agent CallCollaborationDelegates to another agent
IfControlBranches to true/false paths
WhileControlLoops while a condition holds
User ApprovalControlPauses for human approval
Global StateStateRead/write key-value state
Data TransformStateTransform data between nodes
GuardrailsSafetyPII detection and policy enforcement
NoteAnnotationCanvas-only comment, not executed

Start Node

Every workflow must have exactly one Start node. It is the entry point that receives the user’s input and optionally initializes global state keys for downstream nodes.

Settings

FieldOptionsDescription
Input Bindinglast_user_message, full_conversation, custom_pathHow the user’s input is captured. last_user_message takes the final message; full_conversation serializes the entire message array as JSON.
Initialize StateArray of key/value pairsSets initial values in the run’s global state before any other node executes. Use this to seed counters, flags, or default values that other nodes will read.
System Context TemplateText (supports templates)Optional system-level context stored in __system_context state. Supports template variables.

Outputs

Produces the bound user input as its output and connects to the first processing node via its out handle.

End Node

Terminates workflow execution and produces the final output returned to the caller. Every workflow must have at least one End node.

Settings

FieldOptionsDescription
Response Sourcelast_node_output, state_key, templateWhere the final output comes from. last_node_output uses the previous node’s output; state_key reads from global state; template renders a template string.
State KeyText (autocomplete)When Response Source is state_key, the key to read from global state.
TemplateText (supports templates)When Response Source is template, a template string with variable substitution.
Include Trace SummaryBooleanAppends step count and token usage to the output for debugging.

LLM Node

Calls a large language model with a configurable prompt. The prompt template supports all template variables, so you can inject state, previous outputs, or user input dynamically. The model is selected via your router configuration.

Settings

FieldOptionsDescription
Prompt TemplateText (supports templates)The user message sent to the LLM. Use {{input}}, {{last_output}}, {{state.key}}, etc.
System PromptText (supports templates)Optional system message prepended to the conversation. Also supports template variables.
Router Selectioninherit_agent_router, fixed_router, router_from_state_keyinherit_agent_router uses the agent’s default router. fixed_router lets you specify a router ID. router_from_state_key reads the router ID from a state key at runtime.
Output Modetext, jsontext passes through the raw response. json validates that the LLM returned valid JSON and fails if not.
Write Output To State KeyText (autocomplete)Optionally writes the LLM response into global state under this key.
Tools EnabledBoolean (default: on)When enabled, the agent’s tools (built-in tools, skills) are passed to the LLM alongside the prompt. Disable this for simple prompt-in / text-out nodes where tool definitions would unnecessarily bloat the context and confuse the model.

Advanced

Timeout, On Error (fail run, continue, or go to node), and Disabled toggle are available under the Advanced section for all execution nodes.

Agent Call Node

Delegates a sub-task to another agent you own. The child agent executes its own full workflow and returns its output. Supports cycle detection, call-depth limits (max 5 levels), and cost guardrails.

Settings

FieldOptionsDescription
Target Agent Modefixed_agent_id, agent_id_from_state_keyfixed_agent_id uses a hardcoded agent ID. agent_id_from_state_key reads the target agent ID from global state at runtime, enabling dynamic delegation.
Input Modelast_node_output, state_key, template, full_contextWhat to send as the child agent’s input. template supports template variables. full_context sends input, messages, state, and all node outputs as JSON.
Result Moderaw_output, extract_json_pathraw_output passes through the child’s response as-is. extract_json_path parses the child’s output as JSON and extracts a value at the specified path.
Write Output To State KeyText (autocomplete)Optionally stores the child agent’s result in global state.
Cost Guardrail (USD)NumberIf the child execution exceeds this cost, the node fails. Prevents runaway spending from recursive or expensive sub-agents.

An agent cannot call itself (self-call prevention). Circular call chains are also detected and blocked automatically.

If Node

Evaluates a condition and routes execution to either the true or false output handle. Supports both simple comparisons and JSON Logic expressions. Both modes fully support dynamic state and template variables.

Condition Types

Simple Compare

Compares a left operand against a right operand using an operator. Both operands support template variables, so you can branch on dynamic runtime values.

FieldDescription
Left OperandThe left side of the comparison. Use {{state.counter}} to compare a state value, {{last_output}} to compare the previous node’s output, etc.
Operator==, !=, >, <, >=, <=, contains
Right OperandThe right side. Can be a literal value like 10 or a template like {{state.threshold}}.

Example: To check if a counter exceeds 5, set Left Operand to {{state.counter}}, Operator to >, and Right Operand to 5.

JSON Logic

A JSON object evaluated using JSON Logic rules. Use the var operator to reference runtime data.

Available data paths for var:

PathResolves to
inputThe original user input
last_outputOutput from the previous node
state.myKeyValue of myKey from global state
node_outputs.nodeIdOutput of a specific node
json
// Check if state.counter > 5
{ ">": [{ "var": "state.counter" }, 5] }

// Check if last output contains "approved"
{ "in": ["approved", { "var": "last_output" }] }

// Combine conditions with "and"
{ "and": [
  { ">": [{ "var": "state.counter" }, 0] },
  { "!=": [{ "var": "state.status" }, "done"] }
] }

Supported operators: ==, !=, >, <, >=, <=, and, or, !, in, var.

Advanced

FieldDescription
Null BehaviorWhen the condition evaluates to null or undefined, treat it as true or false. Defaults to false.

Handles

Connect the true handle to the path that executes when the condition passes, and the false handle to the alternative path.

While Node

Evaluates a condition on each pass. If true, routes to the loop handle; if false, routes to exit. The loop body must eventually connect back to this While node to form the cycle. Uses the same condition types as the If node (Simple Compare or JSON Logic).

Settings

FieldOptionsDescription
Condition Typejson_logic, simple_compareSame condition system as the If node. Both support dynamic state and templates.
Max IterationsNumber (1–100)Hard cap on how many times the loop can execute. Defaults to 10.
On Max Iterationsexit, fail_runexit gracefully exits the loop. fail_run throws an error.
Iteration State KeyText (autocomplete)State key where the current iteration count is stored. Auto-increments on each pass. Defaults to __loop.nodeId.iteration.

Handles

loop — connects to the first node in the loop body. exit — connects to the node that runs after the loop finishes.

User Approval Node

Pauses the workflow and waits for a human to approve, reject, or let the request time out. The decision routes execution to one of three output handles: approved, rejected, or timed_out.

Settings

FieldOptionsDescription
Approver Roleowner, admin, memberWhich user role is allowed to approve this step.
Action LabelTextLabel shown on the approval button (e.g. “Approve”, “Deploy”).
Request TemplateText (supports templates)Message shown to the approver. Supports template variables to include dynamic context.
On Timeoutwait, auto_reject, route_timeoutwait keeps waiting indefinitely. auto_reject treats timeout as rejection. route_timeout routes to the timed_out handle.
Timeout (ms)NumberHow long to wait before the timeout behavior triggers. Defaults to 300000 (5 minutes).
Reason RequiredBooleanWhether the approver must provide a reason with their decision.
Audit RequiredBooleanWhether the approval decision is recorded for audit trail purposes.

Handles

approved — the approver accepted. rejected — the approver declined or the request auto-rejected on timeout. timed_out — only active when On Timeout is set to route_timeout.

Global State Node

Performs read/write operations on the run’s key-value state store. Use this to set counters, flags, accumulators, or any data that other nodes need to read via {{state.key}} template variables or the var operator in JSON Logic conditions.

Settings

FieldOptionsDescription
Operationset, append, increment, delete, copyset — overwrite the key with a new value. append — append to an array or concatenate to a string. increment — add a numeric delta to the existing value. delete — remove the key entirely. copy — copy the value from another state key.
KeyText (autocomplete)The state key to operate on. Supports dot-notation for nested paths (e.g. results.count).
Value Sourceliteral, last_node_output, template, state_keyWhere the value comes from. literal uses the Value field directly. template supports template variables. state_key copies from another state key.
ValueAnyThe value to use (for literal or template source). For increment, this is the delta. For copy, this is the source key name.
If Missingcreate, skip, failWhat to do if the key doesn’t exist yet. create creates it. skip silently skips. fail throws an error (except for set, which always creates).

Data Transform Node

Transforms data using a template expression or JSONata query and writes the result to a state key. Useful for reshaping LLM output, extracting fields, or building structured payloads between nodes.

Settings

FieldOptionsDescription
Input Sourcelast_node_output, state_keyWhere to read input data from. state_key requires specifying an Input Key.
Input KeyText (autocomplete)When Input Source is state_key, the key to read from global state.
Transform Enginejson_template, jsonatajson_template uses the template variable system. jsonata evaluates a JSONata expression against the input data.
ExpressionText (supports templates for json_template engine)The transform expression. For json_template, use template variables. For jsonata, write a JSONata query. The data context includes input, last_output, state, and node_outputs.
Write To State KeyText (autocomplete, required)The state key where the transformed result is stored.
Output Validation SchemaJSON (optional)An optional JSON schema to validate the transform output. Checks type and required fields.
On Validation Failurefail_run, continueWhat to do if the output doesn’t match the schema.

Guardrails Node

Scans content for personally identifiable information (PII) and other sensitive patterns. Can warn, block execution, redact matches, or route based on whether content is flagged.

Settings

FieldOptionsDescription
Input Sourcelast_node_output, state_key, full_contextWhat content to scan.
Checkspii_email, pii_phone, pii_ssn, pii_credit_card, pii_ip_address, custom_regexWhich patterns to scan for. Select one or more. custom_regex lets you define additional regex patterns.
Actionwarn, block, redact, route_by_resultwarn — log a warning but continue. block — fail the run if content is flagged. redact — replace matches with the redaction token. route_by_result — route to flagged or pass handles.
Redaction TokenTextThe string that replaces matched PII. Defaults to [REDACTED].
Write Report To State KeyText (autocomplete)Optionally writes the guardrails report (flagged, matches, action) to state for downstream inspection.

Handles

When Action is route_by_result, the node exposes flagged and pass handles. Otherwise it has a single out handle.

Note Node

A canvas-only annotation. Notes are not executed at runtime and have no input or output handles. Use them to document your workflow, leave reminders, or explain complex logic to collaborators. Notes support inline editing directly on the canvas.

Common Advanced Settings

Most execution nodes (LLM, Agent Call, While, Data Transform, Guardrails) share the following advanced settings:

FieldDescription
Timeout (ms)Maximum execution time for this node. If exceeded, triggers the On Error behavior.
On Errorfail_run aborts the entire workflow. continue skips the error and proceeds to the next node. goto_node jumps to a specified error-handling node.
Error Target NodeWhen On Error is goto_node, the node ID to jump to.
DisabledWhen checked, the node is skipped during execution. Useful for temporarily disabling a step without removing it from the graph.