Skip to content

Guide: Multi-agent pipelines

A pipeline is an ordered list of steps, each running an agent over a templated input. It’s the division-of-labour primitive: a cheap agent routes, specialists do the deep work, and each step is bounded by a budget. Pipelines run non-interactively — no approval prompts — so tool access resolves by policy.

muaz ships three: triage, research-write, and parallel-review. Run one from the UI Pipelines page (live per-step timeline with tokens, cost, and duration), or the CLI:

Terminal window
muaz pipeline run triage "our checkout page 500s intermittently under load"

triage is the flagship demo: a cheap router step classifies the input, then a when: gate sends it to the matching specialist. You watch the cheap step hand off to the expensive one.

name: triage
steps:
- name: route
agent: triage-router
output_schema: # structured output → typed variables
type: object
properties:
route: { type: string, enum: [bug, feature, question] }
required: [route]
- name: handle-bug
agent: analyst
when: { value: "${steps.route.route}", equals: bug }
input: "Diagnose: ${input}"
budget: { max_seconds: 120, max_cost_usd: 0.50 }

Key pieces:

  • Templated input over ${input}, ${vars.*}, ${steps.<name>.output}, and ${steps.<name>.<field>} (unknown placeholders are hard errors).
  • Routing is structured output, not free-text scanning: give a router a route field and gate later steps with when: (equals / not_equals / contains).
  • Recovery per step: retry, on_error: fail|continue|fallback.
  • Budgets (max_cost_usd / max_tokens / max_seconds) on each step and the pipeline — time budgets hard-timeout an in-flight step.
  • parallel: groups run several agents concurrently.

Create and edit pipelines on the UI Pipelines page (a form-based step-card editor), or drop a YAML file in ~/.muaz/plugins/local/pipelines/. Plugins can ship pipelines too — they appear namespaced as @<plugin>/<name>. Full reference: Pipelines.