how Amplifier goes polyglot without touching the engine
Amplifier's polyglot demo runs a real AI agent whose tools are written in four different languages. The usual way to add a language is to edit the core. This deck is about doing it the other way.
First, the evidence the capability is real.
The primary-source demo is a single self-contained HTML file: a Rust (WASM) data_transform tool, TypeScript web_research, Python (Pyodide) code_analysis, and Go (WASM) document_builder — all four in the browser.
And it wasn't a marathon to build it.
Brian Krabach (Microsoft) authored all 22 commits of amplifier-polyglot-demo, from first to last in a 16.83-hour span (Feb 18–19, 2026). That's only cheap if the engine isn't being rewritten for each language.
Which raises the obvious problem.
Normally, every new runtime forces the engine to grow: another special case, another thing the core must know about. An engine that has to understand Rust and TypeScript and Python and Go is precisely the fragile center this demo is trying not to build.
So what stands between the engine and all four runtimes?
The language-neutral mechanism is a gRPC ToolService with two calls, GetSpec and Execute, over a generic ToolSpec{name, description, parameters} — not an LSP, just one uniform interface. Any-language tools become callable from any gRPC client.
And the engine on the other side of that contract knows nothing about languages.
The kernel just iterates over a generic list of ToolSpecs and dispatches each call through a JS bridge to whichever runtime owns that tool — a toolRegistry maps web_research→TypeScript, code_analysis→Python, document_builder→Go, Rust in-process.
Because the kernel only sees generic specs, no language ever forces a core edit.
Because the engine holds no policy — "Mechanism, Not Policy" — a new language means writing a language-native module against the contract and selecting it in YAML behaviors via source: native://…. Modules implement Provider / Orchestrator / ContextManager; policy lives at the edges.
Here's that pattern proven twice in one evening.
source: native://….A Zero-Python Rust-native agent (Provider + Orchestrator + ContextManager + gRPC service) shipped in one day — 13 commits, all Feb 18, 2026. The first Go tool module in the ecosystem landed the same evening as a gRPC ToolService. A TypeScript SDK mirroring the same kernel API followed on Mar 2.
The engine never learned a language — every tool learned to speak the contract.
Data as of: based on repos cloned through Mar 2, 2026. Every metric, date, and name was re-derived from git/gh/grep/wc against the primary repos — no claim retained unless a command reproduced it.
Primary sources: bkrabach/amplifier-polyglot-demo, bkrabach/amplifier-bundle-rust-example, bkrabach/amplifier-module-tool-document-builder-go, bkrabach/amplifier-core-ts, ramparte/amplifier-core.
Commands run:
git log --format='%h %ai %an' --reverse · git rev-list --count HEAD — 22 commits (polyglot-demo), 13 (rust-example), 2 (go-module), 1 (core-ts scaffold)git log --format='%an <%ae>' | sort | uniq -c — all commits: Brian Krabach <brkrabac@microsoft.com>wc -l rust/wasm-agent/src/lib.rs — 556 LOC kernel; sed -n '/struct ToolSpec/,/^}/p'grep 'ToolService|GetSpec|Execute|ToolSpec' server/python-tool/amplifier_module_pb2*.pygrep 'web_research|code_analysis|document_builder' html/bridge.js — toolRegistry runtime mappingcat behaviors/provider-anthropic-rust.yaml · grep 'native://' — YAML module selectionPrimary contributor: Brian Krabach (Microsoft) — sole author across all four repos (22/22, 13/13, 2/2, 1/1 commits).
Gaps & excluded: the "language-agnostic LSP core," "7-days/one-day community" and "M×N" framings were NOT found in any repo (grep returned zero hits) and are excluded. "Mechanism, Not Policy" and "zero core code changes" are design claims from the kernel's own docs, not measured diffs. The demo README's "134 tests" is stale vs. the current tree (168 test functions under html/tests).