Composition, not configuration
Amplifier lets you declare a complete, production-ready AI assistant in a bundle.md whose declarative block is just 14 lines. The question this deck answers: how does so little do so much?
Start with the proof that those 14 lines are real.
The canonical amplifier-bundle-recipes bundle is exactly that thin bundle. Its declarative block is lines 1–14 — of which just 8 are pure YAML frontmatter config. The full file is 49 lines; the rest is human-readable docs.
But 14 lines can't actually build a runtime.
includesLook at what a real assistant needs — and what those lines declare. There is no orchestrator, no context module, no tools, and no agents written anywhere in them.
So where does the runtime come from?
The lines don't configure a runtime — they inherit one. Two includes pull in the foundation bundle, which brings everything the thin bundle never redeclares.
And inheritance isn't magic — it's a real engine.
Bundle.compose() merges bundles together; to_mount_plan() compiles the result for AmplifierSession. It's a code path, not hand-configuration.
Which means adding a capability is just adding one more piece to merge.
The first include inherits everything; the second adds only the recipes bundle's unique capability. That single self-contained unit is a "brick" in Amplifier's documented bricks-and-studs design.
And that same one-brick move repeats at every scale.
One brick added on top of an inherited runtime. Foundation itself is 20 includes. Dozens of composable bundles and modules make up the ecosystem — and amplifier-stories, the bundle that generated this very deck, is the identical thin, 9-line shape.
So the pattern to keep is simple.
Don't configure an assistant from scratch — compose from thin bundles. Declare only what's new, and let the includes carry the runtime. That's why 14 lines reaches infinity.
Composition, not configuration.
Data as of: amplifier-foundation local HEAD 0965a34 (2026-04-09); recipes read from origin/main.
Feature status: Shipped and in active use (latest recipes commit b6ee26d, 2026-05-20).
Repos: microsoft/amplifier-foundation, microsoft/amplifier-bundle-recipes, amplifier-stories.
Research performed:
git -C amplifier-bundle-recipes show origin/main:bundle.md | cat -n — 49 lines total, declarative block lines 1–14, frontmatter awk count = 8.grep -rn '14 line' amplifier-foundation/docs/BUNDLE_GUIDE.md (:94, :1371) and foundation-expert.md:160.cat amplifier-foundation/bundle.md; grep -cE '^\s+- bundle:' = 20 includes; tools grep = 4; agents list = 11; context-simple max_tokens 300000, compact_threshold 0.8.sed -n '93,237p' amplifier-foundation/amplifier_foundation/bundle/_dataclass.py (compose() :93, to_mount_plan() :210); helpers in dicts/merge.py.git -C amplifier-bundle-recipes show origin/main:behaviors/recipes.yaml | cat -n — 1 tool, 2 agents, 1 context file.ls -d amplifier-bundle-* | wc -l = 29; ls -d amplifier-module-* | wc -l = 12 (11 distinct working; one is a .broken duplicate).awk frontmatter count on amplifier-stories/bundle.md = 9 lines.Gaps: "to infinity" is rhetorical — there is no measured upper bound on ecosystem size. The 29/11 counts are local checkout counts (a lower bound), not the full GitHub total.
Primary contributors: Brian Krabach (739 commits on amplifier-foundation; author of the compose engine, BUNDLE_GUIDE, foundation-expert, and the recipes bundle.md commits). Salil Das (22), Paul Payne (19), Diego Colombo (13).