hoziron workflow

Manage multi-agent workflows — define pipelines, run them, and track execution.

Synopsis

hoziron workflow <subcommand> [options]

Subcommands

SubcommandDescription
listList all registered workflows
create <file>Create a workflow from a JSON definition
get <id>Get workflow details by ID
update <id> <file>Update a workflow definition
delete <id>Delete a workflow
run <id> <input>Run a workflow with input text
runs <id>List runs for a workflow
status <run-id>Show status of a specific run

Workflow Definition Format (JSON)

{
  "name": "claims-pipeline",
  "description": "End-to-end claims processing pipeline",
  "steps": [
    {
      "name": "intake",
      "agent": { "ByName": "claims-intake-agent" },
      "prompt_template": "Process this claim: {{input}}",
      "mode": "Sequential",
      "timeout_secs": 120,
      "error_mode": "Fail",
      "output_var": "claim_data"
    },
    {
      "name": "validation",
      "agent": { "ByName": "policy-validator" },
      "prompt_template": "Validate coverage for: {{claim_data}}",
      "mode": "Sequential",
      "timeout_secs": 60,
      "error_mode": { "Retry": { "max_retries": 2 } },
      "output_var": "validation_result"
    },
    {
      "name": "routing",
      "agent": { "ByName": "claims-router" },
      "prompt_template": "Route this claim based on validation: {{validation_result}}",
      "mode": "Sequential",
      "timeout_secs": 30,
      "error_mode": "Skip"
    }
  ]
}

Step Modes

ModeDescription
SequentialExecute after previous step completes
FanOutExecute in parallel with other FanOut steps
CollectWait for all preceding FanOut steps to complete
ConditionalExecute only if condition evaluates to true
LoopRepeat until condition or max iterations

Error Modes

ModeDescription
FailAbort the entire workflow on step failure
SkipSkip this step on failure, continue with next
RetryRetry the step up to max_retries times before failing

Agent References

Steps reference agents by name or ID:

{ "ByName": "claims-intake-agent" }
{ "ById": "550e8400-e29b-41d4-a716-446655440000" }

Template Variables

  • {{input}} — the workflow's initial input (first step) or previous step's output (subsequent steps)
  • {{var_name}} — any variable stored via output_var in a previous step

hoziron workflow list

$ hoziron workflow list
ID                                    NAME              STEPS  CREATED
a1b2c3d4-e5f6-7890-abcd-ef1234567890  claims-pipeline   3      2026-06-01
b2c3d4e5-f6a7-8901-bcde-f12345678901  onboarding-flow   5      2026-05-28

hoziron workflow create

hoziron workflow create <file>

Example

$ hoziron workflow create ./workflows/claims-pipeline.json
✓ Workflow 'claims-pipeline' created (id: a1b2c3d4-e5f6-7890-abcd-ef1234567890)

hoziron workflow get

$ hoziron workflow get a1b2c3d4-e5f6-7890-abcd-ef1234567890
Workflow: claims-pipeline
ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Description: End-to-end claims processing pipeline
Created: 2026-06-01T10:00:00Z

Steps:
  1. intake (→ claims-intake-agent) [Sequential, timeout: 120s]
  2. validation (→ policy-validator) [Sequential, timeout: 60s, retry: 2]
  3. routing (→ claims-router) [Sequential, timeout: 30s, skip on error]

hoziron workflow update

hoziron workflow update <id> <file>

Example

$ hoziron workflow update a1b2c3d4 ./workflows/claims-pipeline-v2.json
✓ Workflow updated

hoziron workflow delete

$ hoziron workflow delete a1b2c3d4-e5f6-7890-abcd-ef1234567890
✓ Workflow deleted

hoziron workflow run

Execute a workflow with input text.

hoziron workflow run <id> <input>

Example

$ hoziron workflow run a1b2c3d4 "New auto claim: rear-end collision on I-95, policy POL-2024-200"
Run started: run-id c3d4e5f6-a7b8-9012-cdef-123456789012

Step 1/3: intake ... ✓ (2.3s)
Step 2/3: validation ... ✓ (1.1s)
Step 3/3: routing ... ✓ (0.8s)

Workflow completed in 4.2s
Output: Claim #CLM-2026-042 created. Routed to adjuster queue: auto-collision-moderate.

hoziron workflow runs

List all runs for a workflow.

$ hoziron workflow runs a1b2c3d4
RUN ID                                STATE      STARTED              DURATION
c3d4e5f6-a7b8-9012-cdef-123456789012  Completed  2026-06-04T10:15:00  4.2s
d4e5f6a7-b8c9-0123-def0-234567890123  Failed     2026-06-04T09:30:00  62.1s

hoziron workflow status

Show detailed status of a specific run.

$ hoziron workflow status c3d4e5f6-a7b8-9012-cdef-123456789012
Run: c3d4e5f6-a7b8-9012-cdef-123456789012
Workflow: claims-pipeline
State: Completed
Input: "New auto claim: rear-end collision on I-95..."

Steps:
  1. intake      ✓  2.3s  output_var: claim_data
  2. validation  ✓  1.1s  output_var: validation_result
  3. routing     ✓  0.8s

Output: Claim #CLM-2026-042 created. Routed to adjuster queue: auto-collision-moderate.
Started: 2026-06-04T10:15:00Z
Completed: 2026-06-04T10:15:04Z

Failed run

$ hoziron workflow status d4e5f6a7-b8c9-0123-def0-234567890123
Run: d4e5f6a7-b8c9-0123-def0-234567890123
Workflow: claims-pipeline
State: Failed
Input: "Process claim for expired policy..."

Steps:
  1. intake      ✓  2.1s
  2. validation  ✗  60.0s  ERROR: Step timed out

Error: Step 'validation' timed out after 60 seconds

Key Concepts

PII Boundary

Data flowing between workflow steps passes through PII tokenization. Each agent only sees tokenized versions of sensitive data from other agents. This is automatic and transparent.

Memory Isolation

Each agent in a workflow maintains its own separate memory scope. Agent A cannot read Agent B's memory, even within the same workflow. Data passes between agents only through step outputs.

Default Timeout

Steps default to 30 seconds if timeout_secs is not specified. For LLM operations, 60–300 seconds is typical.

See Also

  • agent.md — Agents referenced by workflows
  • trigger.md — Triggering workflows via events