Voice keeps turning up at the edges of agent tooling — as an input method, as the product itself, and as the thing you have to test. These four launches cover all three, plus the unglamorous operational question of where MCP servers actually run.
Planning by voice, grounded in your code
Luke is a macOS app for planning with a coding agent out loud. You talk through a feature, it reads your code while you speak, and it writes a plan formatted to paste into Claude Code or Codex. The grounding is the point: a plan generated from the repository you are actually working in beats one generated from a description of it. It needs macOS 14 or later on Apple silicon and is Apache-2.0.
A coach that reads the game while you play
Sensii is an open-source voice coach for League of Legends. It reads your live match from the Riot Live Client API — champion, items, gold, KDA and levels for everyone in the game — and answers out loud while you are still in lane, with builds that adapt to what the enemy team is actually buying. It keeps the session context so follow-ups do not need repeating, and the coaching agent is Apache-2.0 with champion knowledge covering 172 champions.
As an example of a voice agent grounded in live state it is a good one, because the grounding is measurable: either the advice fits the scoreboard or it does not. League of Legends only, and it needs the client running locally, but the shape — a voice layer over a live data feed with an open-source agent underneath — generalises further than the game does.
CI that dials the number
VoiceGremlin tests AI voice agents the way they are actually used: it calls your agent's number from a real carrier line and runs functional tests over REST. That means an end-to-end test covers the SIP integration, the speech-to-text and text-to-speech stack and the agent's behaviour, rather than a text prompt standing in for all three. Each test comes back with a pass or fail and a stated reason, and runs are started and polled over the API so it drops into a pipeline.
The reason this needs to exist is that a voice agent has four or five ways to fail that a text test cannot see: the call drops, the transcription garbles a name, the synthesis clips a sentence, the agent talks over the caller. A real phone line is the only thing that exercises all of them at once. There are free minutes to start, and beyond that it costs money — testing a phone agent costs real calls, which is a fair thing to be told up front rather than discovered on an invoice.
Where MCP servers go to production
Ramen is a self-hosted platform for running MCP servers on GKE, EKS and AKS. A git repository of Python tools becomes canary-deployed, autoscaled Rust and Python workers, with NeMo guardrails per tool, Entra ID or Google Workspace SSO, custom roles, OAuth 2.1, secrets, IP rules and audit, all managed from one console. Clients on macOS, Windows and Linux connect to it.
It is one of the few launches that treats guardrails, identity and audit as deployment concerns rather than library features. An MCP server you run for yourself needs none of that; one a team depends on needs all of it, and retrofitting it after the fact is the usual disaster — the tools are already in production, the permissions were never modelled, and nobody can say who called what. BSD-3-Clause, three stars, and it needs a Kubernetes cluster to be worth running, which is exactly the situation it is for.
The common thread
Two of these are products, one is a test harness, and one is infrastructure. What they share is that the interesting work happens at a boundary — a microphone, a phone line, a cluster — where the failure mode is not a wrong answer but a dropped call or a missing zone. That is a different kind of hard, and it is the part of the stack that gets least attention.
It is also the part where the demos stop working. A voice agent in a screenshot is a waveform; a voice agent in production is a SIP trunk, a transcription budget and a test that dials a real number. If you are building on any of these layers, budget for the boundary rather than the model, because that is where the time goes.