What lies ahead

The detector is at its ceiling for this model. The leverage is above it: who is talking, when a pause is a pause, and letting every language and every agent harness use the same listener. The full plan with phases and targets is in docs/ROADMAP.md.

Field truth

Real sessions on laptop speakers, headphones, Bluetooth and phones, exported from this page and replayed through the native harness. Stop latency on real interruptions, false barge-ins per ten agent turns, cut-offs. Firefox and mobile in the browser matrix.

Echo you own

A reference-aware echo filter in the capture worklet, fed by the playback worklet's own signal, so iOS Safari and laptop speakers stop depending on the browser's canceller. Echo ratio becomes evidence the arbiter can weigh.

Whose voice counts

Background speech is the one thing a plain detector cannot fix. Foreground VAD, trained with competing-speaker mixing and no enrollment, behind the same trait as Silero; and a lazy speaker gate that learns your voice from your first turn and never blocks on it.

When a pause is a pause

A learned time-to-next-onset head instead of a fixed hangover, fused with the text cues that already ship, with the timer kept as the fallback. An audio end-of-turn model under the same rule as everything else: under 3 ms per decision or it does not ship.

One core, every language

The Rust crates already run natively. One C ABI, then thin bindings: Python wheel, Node native, Go, Swift and Kotlin, and a auricle listen CLI that prints events and segments for any harness to consume. The same fixtures and the same scores in every binding.

Agents that listen

An MCP server exposing listen, speak and interrupts, so a coding agent or a desktop assistant can take voice tasks with no audio code of its own. A streaming speech-to-text adapter where the endpoint offers one. A realtime adapter behind the same backend interface.

How to help

Run bench/latency.mjs against your endpoint and send the output. Export a session from the demo on a device we have not measured. Both go straight into the next comparison table.