Skip to content

Utility nodes

DAG control flow: branching, looping, merging, sub-workflows, code execution, set/wait.

40 nodes.


aggregate_node — Aggregate

Groups items and aggregates a numeric/text field (sum, avg, min, max, count, concatenate).

Config fields

FieldTypeRequiredValues
operationstringyessum | avg | min | max | count | concatenate
fieldstringno
groupBystringno
inputKeystringno
separatorstringno

Example config

json
{
  "operation": "sum",
  "field": "amount",
  "inputKey": "items"
}

chat_intent_router — Chat Intent Router

Routes helper-chat requests into report, code, message, or missing-context branches without custom Switch conditions.

Config fields

FieldTypeRequiredValues
inputTemplatestringno
intentKeystringno
artifactPathstringno
requireArtifactForCodebooleanno
reportKeywordsstringno
codeKeywordsstringno
outputKeystringno

Example config

json
{
  "inputTemplate": "{{user_prompt}}",
  "intentKey": "parsed.intent",
  "artifactPath": "latest_report",
  "requireArtifactForCode": false,
  "reportKeywords": "report, pdf, dashboard, chart, analytics, summary, visualize",
  "codeKeywords": "python, code, script, automate, nightly, regenerate, reproduce, without ai, without l2m",
  "outputKey": "intent"
}

code_node — Code Node

Runs custom JavaScript transformation logic in a sandboxed VM context.

Config fields

FieldTypeRequiredValues
codestringyes
timeoutnumberno

Example config

json
{
  "timeout": 1500,
  "code": "const name = String(input.user_prompt ?? 'World');\nconst upper = name.toUpperCase();\nconsole.log('Transformed prompt to uppercase');\nreturn { transformed: upper, length: upper.length };"
}

compare_datasets_node — Compare Datasets

Diffs two datasets by a key field and reports added/removed/changed/same items.

Config fields

FieldTypeRequiredValues
inputAstringyes
inputBstringyes
keyFieldstringyes

Example config

json
{
  "inputA": "datasetA",
  "inputB": "datasetB",
  "keyField": "id"
}

compression_node — Compression

Gzip / gunzip data using node:zlib. Zip/unzip not yet supported.

Config fields

FieldTypeRequiredValues
operationstringyesgzip | gunzip | zip | unzip
datastringno
encodingstringnoutf8 | base64

Example config

json
{
  "operation": "gzip",
  "data": "hello",
  "encoding": "utf8"
}

convert_to_file_node — Convert to File

Convert data to CSV, JSON, HTML, or text file output.

Config fields

FieldTypeRequiredValues
formatstringyescsv | json | html | text
filenamestringno
inputKeystringno
dataanyno

Example config

json
{
  "format": "json",
  "filename": "out.json",
  "inputKey": "items"
}

crypto_node — Crypto

Hash, HMAC, encrypt, decrypt, sign, verify using node:crypto.

Config fields

FieldTypeRequiredValues
operationstringyeshash | hmac | encrypt | decrypt | sign | verify | random
algorithmstringno
keystringno
ivstringno
datastringno
encodingstringnohex | base64 | utf8
signaturestringno
bytesnumberno

Example config

json
{
  "operation": "hash",
  "algorithm": "sha256",
  "data": "hello",
  "encoding": "hex"
}

date_time_node — Date & Time

Format, parse, add/subtract or compare dates using built-in Date and Intl.

Config fields

FieldTypeRequiredValues
operationstringyesformat | parse | add | subtract | compare | now
valuestringno
formatstringno
unitstringnoms | second | minute | hour | day | week | month | year
amountnumberno
compareTostringno
timezonestringno

Example config

json
{
  "operation": "format",
  "value": "{{now}}",
  "format": "iso"
}

edit_fields_node — Edit Fields

Adds, modifies, removes or renames fields on items.

Config fields

FieldTypeRequiredValues
operationsarray<object>yes
inputKeystringno

Example config

json
{
  "operations": [
    {
      "op": "set",
      "field": "active",
      "value": true
    },
    {
      "op": "remove",
      "field": "tmp"
    }
  ]
}

edit_image_node — Edit Image

Image editing (resize/crop/rotate/text/watermark). Requires optional native dependency — currently not implemented in core.

Config fields

FieldTypeRequiredValues
operationstringyesresize | crop | rotate | text | watermark
datastringno
widthnumberno
heightnumberno
rotateDegreesnumberno
textstringno

Example config

json
{
  "operation": "resize",
  "width": 100,
  "height": 100
}

execute_workflow — Execute Workflow

Executes another workflow as a reusable sub-workflow.

Config fields

FieldTypeRequiredValues
workflowIdstringyes
inputMappingobjectno
modestringnosync | async
outputMappingobjectno

Example config

json
{
  "workflowId": "",
  "inputMapping": {
    "user_prompt": "user_prompt",
    "session_id": "session_id"
  },
  "mode": "sync",
  "outputMapping": {}
}

extract_from_file_node — Extract from File

Parse CSV, JSON, or XML strings/base64 into structured data.

Config fields

FieldTypeRequiredValues
formatstringyescsv | json | xml | pdf | excel
datastringno
encodingstringnoutf8 | base64
inputKeystringno

Example config

json
{
  "format": "csv",
  "data": "a,b\n1,2",
  "encoding": "utf8"
}

filter_node — Filter

Evaluates conditions against context data and routes to pass or filtered branches.

Config fields

FieldTypeRequiredValues
conditionsarray<object>no
combineWithstringnoAND | OR
passModestringnopass | reject

Example config

json
{
  "conditions": [
    {
      "field": "status",
      "operator": "eq",
      "value": "active"
    }
  ],
  "combineWith": "AND",
  "passMode": "pass"
}

html_node — HTML

Extract data from HTML via simple CSS-like selectors, or generate HTML.

Config fields

FieldTypeRequiredValues
operationstringyesextract | generate
htmlstringno
selectorsarray<object>no
templatestringno

Example config

json
{
  "operation": "extract",
  "html": "<div class='title'>Hi</div>",
  "selectors": [
    {
      "key": "title",
      "selector": ".title"
    }
  ]
}

human_approval — Human Approval

Pauses execution and waits for a human approve/reject action before resuming.

Config fields

FieldTypeRequiredValues
approvalMessagestringyes
timeoutMinutesnumberyes

Example config

json
{
  "approvalMessage": "Approve before sending this response to the customer?",
  "timeoutMinutes": 60
}

if_node — IF

Evaluates a condition and routes execution to the true or false branch.

Config fields

FieldTypeRequiredValues
conditionstringyes
trueLabelstringno
falseLabelstringno

Example config

json
{
  "condition": "{{answer}}",
  "trueLabel": "True",
  "falseLabel": "False"
}

input_validator — Input Validator

Validates input fields against deterministic rules before downstream execution.

Config fields

FieldTypeRequiredValues
rulesarray<object>yes
onFailstringyeserror | branch

Example config

json
{
  "rules": [
    {
      "field": "email",
      "check": "required",
      "value": ""
    },
    {
      "field": "message",
      "check": "max_length",
      "value": "1200"
    }
  ],
  "onFail": "branch"
}

jwt_node — JWT

Sign, decode, verify JWTs (HS256/HS384/HS512). HMAC-only, no external library.

Config fields

FieldTypeRequiredValues
operationstringyessign | decode | verify
secretstringno
payloadobjectno
tokenstringno
algorithmstringnoHS256 | HS384 | HS512
expiresInSecondsnumberno

Example config

json
{
  "operation": "sign",
  "secret": "shh",
  "algorithm": "HS256",
  "payload": {
    "sub": "user1"
  }
}

limit_node — Limit

Caps an array of items to N entries from the start or end.

Config fields

FieldTypeRequiredValues
maxItemsnumberyes
keepstringnofirst | last
inputKeystringno

Example config

json
{
  "maxItems": 10,
  "keep": "first",
  "inputKey": "items"
}

local_memory — Simple Memory

SQLite-backed session memory that can be attached to an Agent Orchestrator node.

Config fields

FieldTypeRequiredValues
namespacestringno
sessionIdTemplatestringno
maxMessagesnumberno
persistToolMessagesbooleanno

Example config

json
{
  "namespace": "default",
  "sessionIdTemplate": "{{session_id}}",
  "maxMessages": 20,
  "persistToolMessages": false
}

loop_node — Loop / ForEach

Iterates over an input array and executes direct downstream nodes once per item.

Config fields

FieldTypeRequiredValues
inputKeystringyes
itemVariablestringyes
maxIterationsnumberno

Example config

json
{
  "inputKey": "documents",
  "itemVariable": "item",
  "maxIterations": 100
}

merge_node — Merge / Join

Merges outputs from multiple parent branches after fan-in.

Config fields

FieldTypeRequiredValues
modestringyesappend | combine_by_key | choose_branch
combineKeystringno

Example config

json
{
  "mode": "append",
  "combineKey": "id"
}

noop_node — No Operation

Pass-through node that performs no operation. Useful as a placeholder or visual marker.

Config fields

FieldTypeRequiredValues
labelstringno

Example config

json
{
  "label": "Placeholder"
}

output_guardrail — Output Guardrail

Validates and optionally retries model output when guardrail checks fail.

Config fields

FieldTypeRequiredValues
checksarray<string>yes
onFailstringyesretry | error
inputKeystringno

Example config

json
{
  "checks": [
    "no_pii",
    "must_contain_json"
  ],
  "onFail": "retry",
  "inputKey": "answer"
}

output_parser — Output Parser

Validates and transforms LLM output into structured data using JSON Schema, item list parsing, or auto-fix retry.

Config fields

FieldTypeRequiredValues
modestringyesjson_schema | item_list | auto_fix
parsingModestringnostrict | lenient | anything_goes
jsonSchemastringno
itemSeparatorstringno
maxRetriesnumberno
inputKeystringno

Example config

json
{
  "mode": "json_schema",
  "parsingMode": "strict",
  "jsonSchema": "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"sentiment\":{\"type\":\"string\",\"enum\":[\"positive\",\"negative\",\"neutral\"]}},\"required\":[\"name\",\"sentiment\"]}",
  "maxRetries": 2,
  "inputKey": "answer"
}

prompt_template — Prompt Template

Builds a prompt using handlebars-style placeholders.

Config fields

FieldTypeRequiredValues
templatestringyes
outputKeystringno

Example config

json
{
  "template": "Context: {{context}}\n\nQuestion: {{user_prompt}}",
  "outputKey": "prompt"
}

remove_duplicates_node — Remove Duplicates

Removes duplicate items by all or specified fields.

Config fields

FieldTypeRequiredValues
fieldsarray<string>no
inputKeystringno

Example config

json
{
  "fields": [
    "id"
  ],
  "inputKey": "items"
}

rename_keys_node — Rename Keys

Renames keys on items in an array (or single object).

Config fields

FieldTypeRequiredValues
renamesarray<object>yes
inputKeystringno

Example config

json
{
  "renames": [
    {
      "from": "old",
      "to": "new"
    }
  ],
  "inputKey": "items"
}

session_artifact_load — Session Artifact Load

Loads an exact JSON artifact saved for the current session, such as a prior report payload.

Config fields

FieldTypeRequiredValues
namespacestringno
sessionIdTemplatestringno
artifactKeystringno
outputKeystringno

Example config

json
{
  "namespace": "default",
  "sessionIdTemplate": "{{session_id}}",
  "artifactKey": "latest_report",
  "outputKey": "artifact"
}

session_artifact_save — Session Artifact Save

Saves an exact JSON artifact for the current session so later turns can reuse it deterministically.

Config fields

FieldTypeRequiredValues
namespacestringno
sessionIdTemplatestringno
artifactKeystringno
valueKeystringno
valueTemplatestringno
fieldsarray<object>no
outputKeystringno

Example config

json
{
  "namespace": "default",
  "sessionIdTemplate": "{{session_id}}",
  "artifactKey": "latest_report",
  "fields": [
    {
      "key": "final_html",
      "valueKey": "parsed.final_html"
    },
    {
      "key": "python_code",
      "valueKey": "parsed.python_code"
    },
    {
      "key": "chart_data",
      "valueKey": "parsed.chart_data"
    }
  ],
  "outputKey": "saved_artifact"
}

set_node — Set / Transform

Builds a structured output object from key/template assignments.

Config fields

FieldTypeRequiredValues
assignmentsarray<object>no

Example config

json
{
  "assignments": [
    {
      "key": "customerId",
      "valueTemplate": "{{webhook.customer.id}}"
    },
    {
      "key": "status",
      "valueTemplate": "active"
    },
    {
      "key": "metadata",
      "valueTemplate": "{\"source\":\"workflow\",\"index\":{{_loop_index}}}"
    }
  ]
}

sort_node — Sort

Sorts items ascending, descending, randomly, or by custom expression.

Config fields

FieldTypeRequiredValues
fieldstringno
orderstringnoasc | desc | random
expressionstringno
inputKeystringno

Example config

json
{
  "field": "name",
  "order": "asc",
  "inputKey": "items"
}

split_out_node — Split Out

Splits an array field into multiple items.

Config fields

FieldTypeRequiredValues
fieldstringyes
destinationFieldstringno
inputKeystringno

Example config

json
{
  "field": "items",
  "destinationField": "item"
}

sticky_note — Sticky Note

A visual-only annotation on the canvas (markdown supported). Not executed by the runtime.

Config fields

FieldTypeRequiredValues
contentstringno
colorstringnoyellow | blue | green | pink | purple | gray
fontSizenumberno

Example config

json
{
  "content": "## Note\nExplain what this section of the workflow does.",
  "color": "yellow",
  "fontSize": 14
}

stop_and_error — Stop and Error

Immediately stops the workflow with a custom error message and code.

Config fields

FieldTypeRequiredValues
messagestringno
errorCodestringno

Example config

json
{
  "message": "Validation failed: {{error_message}}",
  "errorCode": "VALIDATION_ERROR"
}

summarize_node — Summarize

Multi-field aggregate (pivot-like). Supports group-by and multiple aggregations per group.

Config fields

FieldTypeRequiredValues
fieldsToSummarizearray<object>yes
fieldsToGroupByarray<string>no
inputKeystringno

Example config

json
{
  "fieldsToSummarize": [
    {
      "field": "amount",
      "aggregation": "sum"
    }
  ],
  "fieldsToGroupBy": [
    "region"
  ],
  "inputKey": "items"
}

switch_node — Switch

Routes execution to one of several branches based on a matched value.

Config fields

FieldTypeRequiredValues
switchValuestringyes
casesarray<object>yes
defaultLabelstringno

Example config

json
{
  "switchValue": "{{sentiment}}",
  "cases": [
    {
      "value": "positive",
      "label": "positive"
    },
    {
      "value": "negative",
      "label": "negative"
    }
  ],
  "defaultLabel": "default"
}

try_catch — Try / Catch

Wraps downstream execution in a try/catch block. Routes to an error branch on failure.

Config fields

No configurable fields.

Example config

json
{}

wait_node — Wait / Delay

Pauses execution for a bounded amount of time before continuing.

Config fields

FieldTypeRequiredValues
delayMsnumberno
maxDelayMsnumberno
resumeModestringnotimer | webhook | datetime
resumeWebhookPathstringno
resumeAtstringno

Example config

json
{
  "delayMs": 1000,
  "maxDelayMs": 30000,
  "resumeMode": "timer"
}

xml_node — XML

Convert XML to JSON or JSON to XML using a built-in lightweight parser.

Config fields

FieldTypeRequiredValues
operationstringyestoJson | toXml
dataanyno

Example config

json
{
  "operation": "toJson",
  "data": "<root><item>1</item></root>"
}