orchestration.yaml Reference
Complete reference for orchestration.yaml — the Low Code configuration file for multi-agent pipelines in AgentBreeder.
orchestration.yaml Reference
orchestration.yaml is the Low Code configuration file for multi-agent pipelines. It defines the agent graph, routing strategy, shared state, and deployment target.
All strategies are supported by the Dashboard visual canvas (No Code) and the Python/TypeScript SDK (Full Code). All tiers share the same deploy pipeline and governance.
Minimal Example
name: support-pipeline
version: "1.0.0"
team: customer-success
strategy: router
agents:
triage:
ref: agents/triage-agent
routes:
- condition: billing
target: billing
- condition: default
target: general
billing:
ref: agents/billing-agent
fallback: general
general:
ref: agents/general-agentFull Spec
# ── Identity ───────────────────────────────────────────────────────────────
name: support-pipeline # Required. Lowercase alphanumeric + hyphens.
version: "1.0.0" # Required. SemVer.
description: "Multi-agent support routing" # Optional.
team: customer-success # Optional. Must match a registered team.
owner: alice@company.com # Optional. Email of responsible engineer.
tags: [support, production] # Optional. Used for registry discovery.
# ── Strategy ───────────────────────────────────────────────────────────────
strategy: router # Required. One of:
# router — keyword/intent routing
# sequential — chain (output feeds next)
# parallel — all agents run concurrently
# hierarchical — supervisor delegates
# supervisor — supervisor plans + delegates
# fan_out_fan_in — parallel + merge agent
# ── Agents ─────────────────────────────────────────────────────────────────
agents:
triage: # Agent name (used in routes and supervisor_config)
ref: agents/triage-agent # Registry reference (see Agent References below)
routes: # Optional. Only for router strategy.
- condition: billing # Keyword or intent label that triggers this route
target: billing # Name of agent to route to
- condition: default # "default" catches unmatched messages
target: general
fallback: general # Optional. Agent to use if this agent errors.
billing:
ref: agents/billing-agent
fallback: general
general:
ref: agents/general-agent
# ── Shared State ───────────────────────────────────────────────────────────
shared_state: # Optional. Defaults: type=session_context, backend=redis
type: session_context # session_context | dict | custom
backend: redis # redis | in_memory | postgresql
# ── Supervisor Config ──────────────────────────────────────────────────────
# Required for strategy: supervisor, hierarchical, fan_out_fan_in
supervisor_config:
supervisor_agent: triage # Agent that plans and delegates (supervisor/hierarchical)
merge_agent: aggregator # Agent that combines results (fan_out_fan_in)
max_iterations: 3 # Max supervisor/worker loops (default: 3)
# ── Deploy ─────────────────────────────────────────────────────────────────
deploy:
target: local # local | cloud-run | ecs-fargate | kubernetes
resources:
cpu: "1"
memory: "2Gi"Strategies
router
Routes each incoming message to one agent based on keyword or intent matching. The first matching condition wins; default is the catch-all.
strategy: router
agents:
triage:
ref: agents/triage
routes:
- condition: billing
target: billing
- condition: refund
target: billing
- condition: default
target: general
billing:
ref: agents/billing
general:
ref: agents/generalsequential
Agents run in definition order. The output of each agent becomes the input to the next.
strategy: sequential
agents:
researcher:
ref: agents/researcher
summarizer:
ref: agents/summarizer
reviewer:
ref: agents/reviewer
fallback: summarizerparallel
All agents receive the same input and run concurrently. Results are returned as a list.
strategy: parallel
agents:
sentiment:
ref: agents/sentiment
topics:
ref: agents/topics
summary:
ref: agents/summarizerfan_out_fan_in
Workers run in parallel; a merge agent combines their outputs into a single response.
strategy: fan_out_fan_in
agents:
sentiment:
ref: agents/sentiment
topics:
ref: agents/topics
aggregator:
ref: agents/aggregator
supervisor_config:
merge_agent: aggregatorsupervisor
A supervisor agent receives the task, delegates sub-tasks to workers (one at a time or concurrently), and synthesizes the final response.
strategy: supervisor
agents:
coordinator:
ref: agents/coordinator
researcher:
ref: agents/researcher
writer:
ref: agents/writer
reviewer:
ref: agents/reviewer
supervisor_config:
supervisor_agent: coordinator
max_iterations: 5hierarchical
Like supervisor but with a fixed hierarchy: the supervisor always delegates in a structured pattern rather than deciding dynamically.
Agent References
Agents can reference any deployed agent in four ways:
agents:
billing:
# Versioned registry reference (recommended — audited, rollback-safe)
ref: registry://agents/billing-agent@v2.1
# Short form (resolves to latest stable in the registry)
ref: agents/billing-agent
# Direct A2A endpoint (for cross-cluster or external agents)
ref: https://billing.internal.company.com
# Local agent in the same workspace (dev/monorepo use)
ref: ../../agents/billing-agent/agent.yamlThe registry://agents/billing-agent@v2.1 form pins to a specific version. If that version is deprecated, the orchestration validation step will fail with a clear error — protecting you from silent breakage.
All four reference forms are resolved during the dependency resolution step of the deploy pipeline, before any container is built. If a reference cannot be resolved, the deploy rolls back.
Validation
# Validate a single orchestration file
agentbreeder orchestration validate orchestration.yaml
# Validate all orchestrations in a workspace
agentbreeder validateValidation checks:
nameis lowercase alphanumeric with hyphensversionis SemVerstrategyis a known value- At least one agent defined
- All route
targetvalues reference known agents in the same file - All
fallbackvalues reference known agents in the same file supervisor/hierarchicalstrategies havesupervisor_config.supervisor_agentfan_out_fan_inhassupervisor_config.merge_agent
Full Code SDK
The Python and TypeScript SDKs produce orchestration.yaml-compatible output:
from agenthub import Orchestration, Pipeline, FanOut, Supervisor
# Equivalent to the router example above
pipeline = (
Orchestration("support-pipeline", strategy="router", team="customer-success")
.add_agent("triage", ref="agents/triage")
.add_agent("billing", ref="agents/billing")
.add_agent("general", ref="agents/general")
.with_route("triage", condition="billing", target="billing")
.with_route("triage", condition="default", target="general")
)
pipeline.save("orchestration.yaml") # identical to hand-written YAMLThe saved file is valid orchestration.yaml — open it in the Dashboard editor, check it into git, or pass it to agentbreeder orchestration deploy.
See also: Full Code Orchestration SDK · CLI reference · agent.yaml reference