Skip to main content

Overview

A human node pauses execution to collect a response from a human operator. It consumes no LLM tokens: it renders an optional prompt, blocks until a response arrives (or a timeout expires), and writes the collected text to the workflow context exactly like an agent’s output. Downstream nodes and when: edges then gate on that response.

Node fields


Timeout behaviour

HumanInputError is exported from the top-level package:

Supplying responses programmatically

By default the node reads a single line from stdin. When driving SirenSpec from Python — tests, web backends, chat bridges — pass a human_input_fn coroutine to execute or execute_streaming to supply responses without a terminal:
The callable receives the rendered prompt string and returns the operator’s response.

Gating downstream nodes

Because the response is written to the context, you can branch on it with when: edges:
If the operator answers anything other than "yes", the publish node is never activated.

When to use a human node

Use a human node when:
  • A draft, plan, or destructive action needs explicit sign-off before proceeding.
  • A human must supply a value the workflow cannot derive (a decision, a correction, a missing fact).
  • You want a reviewable checkpoint inside an otherwise automated pipeline.
Use something else when:
  • The decision can be expressed as a deterministic rule — use a when: edge on an upstream agent’s output instead.

Cookbook recipe

See the YAML Reference for the full field-by-field listing.