Hermes Switch UI — Workflow Node Types

All 8 DAG node variants defined in schemas/dag-node.ts, grouped by category

AI / LLM nodes command Claude Agent SDK · tool use in: prompt, allowed_tools agent_hint, effort out: text, tool results prompt raw LLM call · no tool loop in: prompt text, model_hint output_format out: text response loop iterates until condition met in: prompt, loop config completion condition out: last iteration output Execution nodes bash inline shell command in: bash string, env vars cwd, timeout out: stdout, exit code script TS / Python file via bun/uv in: script path, args interpreter (bun|uv) out: stdout, exit code Control-flow nodes approval human-in-the-loop gate in: message, capture_response on_reject config pauses: waits for POST /approve out: approved / rejected cancel terminate run with reason in: reason string effect: marks run cancelled skips remaining nodes out: n/a Structural nodes subgraph references another workflow definition — enables nesting and reuse in: ref (workflow id), inputs map, when condition, timeout, max_retries out: all outputs from the referenced workflow's terminal nodes DagNodeBase (shared by all node types) id — unique node identifier (kebab/snake-case) depends_on — array of upstream node IDs trigger_rule — all_success | one_success | none_failed_min_one_success | all_done retry — max_attempts, delay_ms, backoff_factor hooks — on_success / on_failure bash commands when — conditional expression; node skipped when false timeout — max duration in seconds Edge syntax — how nodes connect Edges are declared implicitly via depends_on on the downstream node: - id: fetch-data command: ... - id: process-data depends_on: [fetch-data] # ← this is the edge command: ... trigger_rule controls when a node fires with multiple parents Subgraph nesting concept Outer workflow node-A (command) node-B (subgraph) ref: helper-workflow helper-workflow step-1 step-2 node-C (bash) A subgraph node runs the entire referenced workflow as a single step, passing inputs and collecting outputs.

AI / LLM nodes

  • • command — Claude Agent SDK with tool use
  • • prompt — raw LLM call, no tool loop
  • • loop — iterates with completion condition

Execution nodes

  • • bash — inline shell command string
  • • script — TypeScript or Python file via bun/uv

Control-flow + Structural

  • • approval — pauses for human review
  • • cancel — terminates run with reason
  • • subgraph — nests another workflow definition