Skip to content

DAG Nodes

Workflows in the HQ visual editor are built from typed nodes connected by edges. Each node has its own execution semantics and configuration surface.

TypePurpose
StartEntry sentinel. Receives the trigger payload.
EndExit sentinel. Marks where a graph run finishes.
SkillExecutes a skill (LLM task) on a minion.
ReviewHuman or minion approval gate with revision loop.
Fan-outExpands a sub-graph over an input array.
JoinN-input barrier that aggregates upstream outputs.
ConditionalRoutes execution down one branch based on a condition.
TransformLLM-driven contract bridge between two edge contracts.
ScriptRun an inline Python or Node.js script — deterministic, no LLM.
flowchart LR
S(("Start")) --> A["Skill: fetch"]
A --> C{{"Conditional"}}
C -->|ok| T["Transform"]
C -->|error| E(("End"))
T --> F[["Fan-out"]]
F --> J(("Join"))
J --> R{"Review"}
R -->|approved| E
R -. revision .-> A

Start and End are sentinels — the editor inserts them automatically and they do not appear in the node palette. Every other node type is drag-and-drop from the palette on the left of the editor.

Every node has these fields in the property panel (rendered by the common header, not by the type-specific section):

FieldDescription
idStable identifier, unique within the graph (and within each template).
labelHuman-readable display name on the canvas.
assigned_role"pm" or "engineer" — the role responsible for the node (defaults vary by type).

For type-specific configuration, see each node’s page.