The Still Center

How a tiny kernel lets everything else move

Most frameworks grow until the framework becomes the app. This one shrinks.

microsoft/amplifier-core is documented as "the ultra-thin kernel of the Amplifier modular AI agent system" — a tiny, stable center that rarely changes.

And "tiny" here isn't a slogan. It's a number.

~2,600
lines: the documented size of the kernel — "a tiny, stable center that rarely changes" (README.md)

The "tiny center" is a verifiable measurement, not a marketing line.

The "~2,600 lines" text entered README.md at commit c9b24f0 (2025-11-09). Measured at that exact commit, amplifier_core totalled 2,664 lines — the claim was accurate.

That restraint isn't an accident. It's written down as policy.

2,664
.py lines in amplifier_core at commit c9b24f0
~2,600
documented figure introduced in that same commit
5
runtime dependencies: click, pydantic, pyyaml, tomli, typing-extensions

The smallness is prescribed by name in the design docs.

DESIGN_PHILOSOPHY.md's principle "Small, Stable, Boring Kernel" tells the project to favor deletion over accretion in the kernel, and to keep innovation at the edges (modules).

So if the kernel keeps deleting itself — what is it actually FOR?

The Tension

A kernel that keeps deleting itself refuses to decide the things every framework decides.

Which provider to call. How to orchestrate. What to log. The Amplifier kernel deliberately makes none of these decisions — and a center that holds no opinions can sound like a center that does nothing.

One rule resolves the paradox.

One litmus test sorts every capability into kernel or module.

The principle is "Mechanism, Not Policy": the kernel provides capabilities and stable contracts, modules decide behavior. The README states the test outright.

Run that test on real features and the opinions fall out of the center.

# README.md litmus test "Could two teams want different behavior?" If yes → it's policy → Module, not kernel

Every opinion fails the test — so every opinion leaves the center.

Provider choice, orchestration strategy, and logging are all things two teams could do differently. So they live outside the kernel — in separate module repos like amplifier-module-provider-anthropic and amplifier-module-tool-bash.

Which means the center itself is… empty.

Zero provider, tool, or orchestrator implementations live inside the kernel — on purpose.

Listing amplifier_core for provider, tool, or orchestrator files returns no matches. It holds only mechanism files — coordinator, loader, session, hooks, events, interfaces, models. The emptiness is the whole point.

bundle.md says it plainly: the center stays still so the edges can move fast.

0
provider / tool / orchestrator implementation files inside amplifier_core — every opinion pushed out to swappable modules
The Takeaway

Keep the center tiny and boring; put every decision at the edges.

When the kernel ships mechanisms only and pushes every policy out to swappable modules, stability and change stop competing — the center can stay still precisely because the edges are free to move fast.

Mechanism, not policy. That's the pattern worth keeping.

Sources

Research Methodology

Source repo: microsoft/amplifier-core, verified via local fork ramparte/amplifier-core (upstream git@github.com:microsoft/amplifier-core.git). License: MIT, Copyright (c) Microsoft Corporation.

Active, in production — core intentionally stable / slow-changing

Verified at HEAD: 5249084 on branch fix/preserve-append-to-last-tool-result-in-merge; 134 total commits.

Commands run:

Gaps & qualifiers: "~2,600" is the as-documented / design-intent size (2,664 measured at commit c9b24f0). The package has since grown to 8,134 total lines at HEAD, mostly validation/testing scaffolding. README lists 4 dependencies; pyproject.toml declares 5 (adds click) — 5 used as authoritative.

Primary contributor: Brian Krabach (130 of 134 commits, ~97%).

More Amplifier Stories