Multi-agent workflows as durable YAML
A Recipe is declarative YAML that orchestrates a multi-step AI agent workflow — it defines what should happen, not how to implement it. The engine that runs them is Amplifier's tool-recipes module.
Doing that coordination by hand is fragile. Here's the machinery that replaces it.
The tool-recipes engine on origin/main is a substantial, well-tested module with a large library of example workflows already in the repo.
Real machinery exists. So why is hand-coordination still the problem?
RECIPES_GUIDE frames recipes as the fix for exactly this: teams that want repeatable multi-step workflows, consistent process enforcement, and resumability on interruption. Without them, there's no repeatable process to lean on.
So the workflow gets encoded — starting with the declaration itself.
Steps come in three mutually-exclusive types — agent (default; spawns an LLM agent), recipe (runs a sub-recipe), and bash (a shell command, no LLM overhead) — making the process an inspectable, repeatable artifact.
Declaring it is half the answer. Durability is the other half.
executor.py: "Executes recipe workflows with checkpointing and resumption." After each step it appends the step id to a persisted completed_steps list and saves state; on resume, completed steps are skipped.
Now layer human control on top of that durable engine.
The dependency-upgrade-staged-recipe stages Assessment → Validation → Phase 1/2/3, using agents like integration-specialist and zen-architect. Every stage after Assessment sets approval: required — the recipe pauses at each gate until a person says go.
Approval pauses and cancellation share one trait: durability.
Cancellation is handled the same durable way as an approval pause. The executor's CancellationRequestedError notes it is "similar to ApprovalGatePausedError … The recipe can be resumed later from the last checkpoint." Completed steps are skipped; no work is lost. The manual dance is now a durable, resumable artifact.
That's the whole pattern — here's how to keep it.
Do those three things and multi-agent work becomes repeatable instead of hand-coordinated — the pattern RECIPES_GUIDE recommends for repeatable multi-step workflows, consistent process enforcement, and an audit trail of executions.
A fragile manual dance becomes a durable, resumable artifact.
Feature status: SHIPPED on origin/main
Primary source: microsoft/amplifier-bundle-recipes, branch of record origin/main, HEAD 9a1d8e0 (2026-03-01), 104 commits, first commit 9919a8d (2025-12-15). All engine claims derived from origin/main blobs, not local off-branch HEAD.
Commands run:
git show origin/main:docs/RECIPES_GUIDE.md | sed -n '18,40p' — "declarative YAML … what should happen, not how"git show origin/main:…/executor.py | sed -n '237p;665,690p' — checkpointing/resumption + "# Checkpoint after each step" → save_stategit show origin/main:…/session.py | grep -n 'completed_steps' — completed_steps seeded [] and skipped on resumegit show origin/main:…/models.py | sed -n '220,246p' — Step.type Literal['agent','recipe','bash']git show origin/main:…/models.py | sed -n '119,152p' — ApprovalConfig (timeout 0 = wait forever) + ApprovalGatePausedErrorgit show origin/main:examples/dependency-upgrade-staged-recipe.yaml | grep -n 'stages|approval|agent:' — staged agents + approval gatesgit show origin/main:…/executor.py | wc -l (2425), …/models.py | wc -l (909), git ls-tree -r origin/main | grep -c '^examples/.*\.yaml$' (49), aggregated def test_ across 18 test files (354)git shortlog -sn origin/main — contributor commit countsGaps: pytest was NOT run — 354 is a static grep of def test_, not a passing-test count. On origin/main parallel: true remains unbounded; there is no engine cap-to-3 (that lives only on an off-branch commit that changes no engine code) — no such claim is made in this deck.
Primary contributor: Brian Krabach (92 of the counted commits); also Marc Goodner (3), Diego Colombo (2), Mollie Munoz (2), Salil Das (2).