Onion 4.0

gateway: … drag heads to move · link then click a target · wire button toggles what flows · × removes the link
inside a block — INPUT receives the block's incoming payload · nodes with no outgoing links are the block's output · save / load / reset act on this block only

Graph inputs

No graph inputs. Define named values here (e.g. question, sources) and bind them into any node with {{slots}} — one input can feed many nodes.

Settings

Context

Window (tokens)
manual
Last peak
Warn at %
Alert at %
per-model window sizes

Chat

Expanded width px

Channels

Default max rounds
Inter-agent delay ms
Max @-reply hops per turn

Data

state also mirrors to localStorage on every change; a loaded graph file that carries its own settings / agents / channels wins over it.

Agents

No agents. An agent is a named persona with its own endpoint, model and system prompt — the roster that channels draw on. Agents are not graph nodes. Blank base / model inherit the topbar values.

Channels

Benchmark

Test

Results

Pick a test and hit Run. Artifacts render here — use the header to widen the viewport.
Nothing run yet. The message enters at INPUT and flows along the links. Nodes whose dependencies are met run in parallel; a chain of links runs in series. Nodes with no outgoing links are replies.

Each traced node shows its output, and under "payload sent" the exact system + user text that went to the API after slot substitution — byte-for-byte, no guessing about handoffs.
Empty channel. Post a message and every enabled member replies — in parallel with turns off, or round-robin with turns on. Write @name to address one agent only.
Test blob (session / character — message comes from the chat box)
idle — / 8k

Run

#channel

Trace swimlane

INPUT
OUTPUT

Slots

No {{tokens}} in this prompt. Type {{name}} anywhere in the text (mid-line is fine) to create a slot, then bind it here to a linked node's output, a graph input, or a literal. "Verbatim" keeps the braces as literal prompt text — placeholder-example frames stay untouched. Substitution is raw and byte-for-byte; an unbound slot or an empty source blocks the run loudly instead of inserting empty text.