Layered, shareable model config
Amplifier already routes each semantic role to a model through curated matrices. The missing piece: sharing that config with a team without leaking API keys.
First, the proof that the routing is real.
A curated matrix ranks candidates per role. Its ordering rule: Anthropic candidates come above OpenAI candidates in every multi-provider role, reflecting current quality leadership in coding and critique workloads.
Routing is real and curated. So what was rigid?
Nor could you change a single value without duplicating the whole config block. The specification says it plainly: without deep merge, PROJECT must duplicate all base values.
The release exists to remove exactly this rigidity.
It's Microsoft's reference config library (source repo colombod/amplifier-config, a fork of microsoft/amplifier-config). A Scope enum defines USER='user', PROJECT='project', LOCAL='local'.
Each scope carries a distinct responsibility.
PROJECT is committed to git for the team; LOCAL is gitignored for credentials; USER holds personal global defaults. The .gitignore excludes .env, *.local, *.local.*, *.user.
Now: how does overriding avoid duplication?
It recurses on nested dicts and lets the overlay replace non-dict values, preserving everything below untouched. Merge order is USER < PROJECT < LOCAL — later overrides earlier.
This is what makes the one-line override possible.
USER defines the base; PROJECT overrides only providers.anthropic.model from claude-sonnet-4-5 to claude-opus-4-1. Deep merge keeps temperature and max_tokens, and keys stay in gitignored LOCAL.
One field shared. Credentials never leave your machine.
The routing-matrix bundle now supports multi-instance providers: the Ollama matrix runs two instances, ollama (local) plus ollama-cloud, routing heavy roles to gpt-oss:120b on cloud with local fallbacks.
Layered config plus multi-instance routing — shareable and personal at once.
Repos: colombod/amplifier-config (fork of microsoft/amplifier-config), microsoft/amplifier-app-cli, ramparte/amplifier-bundle-routing-matrix.
Commands run:
git remote -v — confirmed origin colombod/amplifier-config, upstream microsoft/amplifier-configcat -n src/amplifier_config/models.py — Scope enum (USER/PROJECT/LOCAL), frozen ConfigPathscat -n src/amplifier_config/utils.py — deep_merge recursion + docstring examplesed -n '283,313p' src/amplifier_config/manager.py — get_merged_settings USER<PROJECT<LOCALsed -n '182,200p' docs/SPECIFICATION.md — model-routing override example (sonnet-4-5 → opus-4-1)sed -n '70,105p' README.md + cat .gitignore — precedence diagram; private-settings patternscat routing/balanced.yaml + grep -cE '^ [a-z-]+:$' — 13 roles, Anthropic-above-OpenAI ordering rulegrep -n 'ollama-cloud\|gpt-oss:120b' routing/ollama.yaml — two-instance provider routinggit log --format='%h %ci %s' + git rev-list --count HEAD — 11 commitsPrimary contributors: Brian Krabach (10 commits), Bryce Cutt (1 commit).
Gaps: The pre-change "one instance per provider" limit is inferred (multi-instance is verified as now-supported; no explicit source states the prior limit). Model names in SPECIFICATION.md are documentation examples, not runtime defaults — matrices use class-scoped globs (e.g. claude-sonnet-*). No single release artifact bundles these changes; claims span three repos.