Swap any provider in one config line. Run fully offline or mix cloud services. Streaming sentence-by-sentence — first word spoken in under a second.
Designed for developers who want a self-hostable voice stack without the cloud lock-in.
Audio never leaves your device by default. Fully local STT and TTS with faster-whisper and Kokoro. No telemetry, no analytics.
Sentence-boundary buffering means TTS starts speaking the first sentence while LLM generates the second. Under 1s perceived latency.
Swap STT, LLM, or TTS by changing one line in your config. Mix local and cloud freely. Free options available for every stage.
One API key unlocks 100+ models — GPT-4o, Claude, Gemini, Llama, Mistral. Free tier models available with no credit card.
One-command setup with Docker Compose. CPU and GPU images available. Multi-arch: amd64 and arm64.
Use as a library in your own project. Event bus, async generators, typed providers — built to be extended.
Every tier covered — from fully offline to ultra-low latency cloud.
Start fully local or plug in your favourite cloud providers.
Install Murmur with local providers — no API keys needed for STT and TTS.
OpenRouter gives you 100+ models through one key. Free models available — no credit card needed.
Push-to-talk mode by default. Press Enter to speak, Enter again to stop.
Create a config file and swap any provider in a single line.
# Swap any provider in one line [stt] provider = "faster-whisper" # or: groq | deepgram | openai [llm] provider = "openrouter" model = "mistralai/mistral-7b-instruct:free" # model = "anthropic/claude-3-haiku" # model = "openai/gpt-4o-mini" # model = "meta-llama/llama-3.1-70b-instruct" [tts] provider = "kokoro" # or: elevenlabs | edge-tts | openai | cartesia voice = "af_sarah"
$ docker run -it --rm \
-e OPENROUTER_API_KEY=sk-or-... \
--device /dev/snd \
ghcr.io/suryanandx/murmur:latest