All nodes/Input / Output/UI Output

ExtraSection

An extra output for streaming (e.g. the agent's 'thinking' blocks). Connects to nodes that support mirror_ports. Displays a parallel data stream in the chat UI.

ExtraSection
Input

Type in the graph: extra_section

Exec

Ports can be split into separate execution and data handles.

Try it

The agent's reasoning as its own block

A thinking catcher streams the model's reasoning tokens into a collapsible section above the answer.

Entry
LLM
AI Agent
Catch Thinking
ExtraSection
Exit
  • Execute + Data
  • LLM
  • Extension
  • Streaming
  • Execute + Data + Streaming
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Runs as pasted

When to use it

The Extra section is for showing a side channel in the chat — the model’s reasoning, tool calls, an intermediate result — without mixing it into the answer. In the web chat it is a separate collapsible block above the assistant’s message; the answer itself stays exactly what arrived at exit.

How it works

The section is fed in two different ways, and the behaviour depends on which.

A streaming wire — from the stream port of catch_output, catch_thinking, catch_tool_call, or from the thinking port of llm_response (that port appears once “Mirror output to Extra Section” is on). The text is then typed into the block as it is generated.

An ordinary execution or data wire — the node then behaves like any other, and the block appears whole once the value is ready. That is the convenient way to show an intermediate result: retrieved fragments, parsed JSON, a plan.

The “Title” is a template, but {{ inputs.* }} is not available in it: with a streaming connection the title is drawn before the node has run. {{ variables.<name> }}, {{ nodes.<id>.output }} and {{ loop.item }} all work. “Expanded by default” sets the initial state; the reader can fold and unfold it either way. “Repeat mode” matters inside a loop: separate gives one block per iteration, incremental appends into one, replace overwrites the previous content on every call.

Common mistakes

  • Wiring from a catcher node that does not have “Explicit Extra stream port” enabled. Without it the port is hidden. Note the other side of that switch: as soon as you enable it, the built-in stream into the Extra panel is turned off — the flow goes only along the edge you drew.
  • Expecting “thoughts” from a model that does not produce them. catch_thinking forwards reasoning tokens; a model without reasoning has none, and the block stays empty.
  • Trying to read the section’s content further down the graph. The node has no outputs: it passes nothing on and affects neither the answer nor the run status.

Inputs

PortWirePayloadNotes
InputendExecute + Dataexecute_data

Execution trigger and content (including streaming when connected)

Outputs

Configuration

FieldTypeDefaultDescription
Expanded by defaultdefault_openbooleantrue

Whether the section is expanded by default in chat. Users can still toggle it.

Repeat moderepeat_modestringseparate

How to display when the node is called multiple times (e.g. inside a loop). Separate: each call creates a new block. Incremental: all calls append to the same block. Replace: each call replaces the previous content.

Options: separate, incremental, replace

Titletitlestring""

Custom title shown in chat. Leave empty to use the node display name. Supports templates: {{variables.name}}, {{nodes.id.output}}, {{loop.item}}. {{inputs.*}} is not available: when the section is fed by a streaming edge the title is rendered before the node runs, so it has no resolved inputs.

supports templates

Shared fields

Every node has these three — the platform adds them, not the node author.

  • expose_error_output — When enabled, show an execution output to connect nodes that run if this step fails.
  • split_ports_in — Show separate execution and data input handles instead of one combined port.
  • split_ports_out — Show separate execution and data output handles instead of one combined port.