FlowDSL
Studio
Spec

Node Object Reference

Complete field reference for the Node object in FlowDSL.

Nodes are declared under the top-level nodes map, keyed by their PascalCase name.

Fields

FieldTypeRequiredDescription
operationIdstringYessnake_case identifier matching the registered handler. Must be unique across all nodes in the flow.
kindstringYesNode role: source, transform, router, llm, action, checkpoint, publish, terminal, integration
summarystringNoOne-line description. Shown in Studio and API responses.
descriptionstringNoLonger description. Supports markdown.
inputsobjectNoMap of port name → Port object.
outputsobjectNoMap of port name → Port object.
settingsobjectNoStatic configuration injected into the node handler at initialization.
x-uiobjectNoCanvas layout hints for Studio.

Port object

FieldTypeRequiredDescription
packetstringNoReference to a packet type: "PacketName" or "asyncapi#/..."
descriptionstringNoDescription of this port.

Node kinds

KindHas inputsHas outputsDescription
sourceNoYesEntry point. No incoming edges. Triggered by external events.
transformYesYesMaps input to output. Pure function, no side effects.
routerYesYes (multiple)Routes input to one of several named outputs.
llmYesYesCalls a language model.
actionYesYes (optional)Performs side effects in external systems.
checkpointYesYesSaves state to MongoDB and passes through.
publishYesNoPublishes to an event bus. Terminal-like.
terminalYesNoEnd of path. No outputs.
integrationYesYesBridges to an external FlowDSL flow.

x-ui fields

FieldTypeDescription
position.xnumberCanvas X coordinate
position.ynumberCanvas Y coordinate
colorstringHex color for the node card
iconstringIcon name from Studio's icon library

Complete example

yaml
nodes:
  LlmAnalyzeEmail:
    operationId: llm_analyze_email
    kind: llm
    summary: Classifies email as urgent, normal, or spam
    description: |
      Reads the email subject and body and uses an LLM to classify
      the email into one of three categories. Returns a classification
      with confidence score and reasoning.
    inputs:
      in:
        packet: EmailPayload
        description: The email to classify
    outputs:
      out:
        packet: AnalysisResult
        description: Classification result with confidence and reason
    settings:
      model: gpt-4o-mini
      temperature: 0.1
      maxTokens: 500
      systemPrompt: |
        Classify the email as urgent, normal, or spam.
        Return JSON: {"classification": "...", "confidence": 0.0-1.0, "reason": "..."}
    x-ui:
      position:
        x: 420
        y: 200
      color: "#7c3aed"
      icon: sparkles

Naming rules

RuleCorrectIncorrect
Node names: PascalCaseOrderReceived, ValidatePaymentorder_received, validatePayment
operationId: snake_casevalidate_payment_amountvalidatePaymentAmount, ValidatePayment
operationId must be uniqueSame operationId in two nodes

Next steps

Copyright © 2026