How amplifier-core stays small on purpose
amplifier-core is the ultra-thin coordination layer for modular AI agents. It's where every provider, tool, and orchestrator plugs in — and its whole design bet is to hold no opinions.
Small enough to prove in three numbers.
You run it through one lifecycle: initialize() → execute() → cleanup() — a three-method public API on AmplifierSession.
Tiny on purpose — but staying tiny fights an instinct.
The usual pull is to add: bake one more behavior into the core, then another. amplifier-core's design philosophy inverts it — "Favor deletion over accretion in kernel," and "Small, Stable, Boring Kernel — Kernel changes rarely."
So how does a kernel stay useful while refusing to grow?
Instead of opinions, the kernel's ModuleCoordinator exposes stable mechanisms. Modules mount, register capabilities, and contribute — the kernel just wires them.
Those primitives are only useful if their shape never shifts.
Providers, tools, and hooks build against 6 typing.Protocol contracts and a canonical event surface of 47 stable event names — documented as the "stable surface for hooks and observability."
Small, fixed, and shared — which raises one question about what belongs here.
“Could two teams want different behavior? → If yes, it's policy → Module, not kernel.”
That single test is what keeps opinions out — and the center still.
By favoring deletion over accretion, the kernel changes rarely. That's not a limitation — it's the point. A center that doesn't move is the still point every swappable module can safely build on.
And a boring kernel isn't theory — it's shipped.
Extracted from a monorepo in October 2025, amplifier-core is now versioned 1.0.0 with stability guarantees — a discipline others can adopt, not a prototype.
Do less in the core, and the whole system gets easier to trust.
Subject: amplifier-core (origin git@github.com:ramparte/amplifier-core.git; upstream git@github.com:microsoft/amplifier-core.git)
Feature status: Released / stable — version 1.0.0
Data as of latest commit: 2026-02-17 (HEAD 5249084)
Research performed:
ls amplifier_core/*.py | wc -l (18)grep -n ' async def ' amplifier_core/session.py (initialize / execute / cleanup)grep -vhE '^\s*(#|$)' amplifier_core/{coordinator,loader,session,hooks,interfaces,events,models,cancellation}.py | wc -l (2,304 code / ~2,600 documented)grep -A6 '^dependencies = \[' pyproject.toml (5)grep -n 'class .*Protocol' amplifier_core/interfaces.py (6)grep -cE '^[A-Z_]+ = "' amplifier_core/events.py (47)grep -nE ' def | async def ' amplifier_core/coordinator.py | grep -v 'def _'sed -n '9,26p' docs/DESIGN_PHILOSOPHY.mdgit log --reverse --format='%h %ad %s' --date=short, git shortlog -sne HEAD, git rev-list --count HEAD (134)Gaps / notes: "~2,600 lines" is a documented characterization (README.md line 7, bundle.md line 18); measured = 2,304 code lines in core mechanism files, 4,752 raw lines across all 18 top-level files. "18 files" counts flat top-level amplifier_core/*.py only; including subpackages the total is 40.
Contributors: Brian Krabach (130 commits), plus Diego Colombo, Marc Goodner, Sam Schillace, and Samuel Lee (1 each).