Show HN: Hey Spark – open-source voice assistant for your laptop, any LLM brain ContextuAI released Hey Spark, an open-source always-listening voice assistant for macOS 14+ on Apple Silicon and Windows 11 that runs wake-word detection (openWakeWord), speech-to-text (faster-whisper) and text-to-speech (Piper or Kokoro) locally on the CPU while routing requests to Claude via the Claude Agent SDK, Hermes Agent, or any OpenAI-compatible model including local ones through Ollama. Hey Spark connects to tools such as GitHub, Gmail and Calendar through MCP servers with per-server allowlists, requiring a spoken "yes" before any tool that sends, creates or updates, and blocking destructive tools by default. The release requires about 1 GB of disk for models, and audio leaves the machine only if a user selects a cloud STT backend such as Deepgram or ElevenLabs. by ContextuAI https://contextuai.com An always-listening voice assistant for your laptop. Say "Hey Spark" , ask a question or give a command, and hear the answer. The wake word, speech recognition and voice all run locally on your CPU. The brain is Claude, Hermes Agent https://github.com/NousResearch/hermes-agent , or any OpenAI-compatible model, including a local one through Ollama. Spark reaches your tools GitHub, Gmail, Calendar, your own systems through MCP https://modelcontextprotocol.io servers, and it asks out loud before doing anything that changes something. "Hey Spark, what's on my calendar tomorrow?" "Set a pasta timer for ten minutes." "Summarize the open pull requests on hey-spark." "Let's start a new project called weather-bot." → "I'll create a folder, a git repo and a private GitHub repo called weather-bot. Should I go ahead?" - Local wake word. A bundled openWakeWord https://github.com/dscripka/openWakeWord model for "Hey Spark". Train your own wake word https://github.com/contextuai/hey-spark/blob/main/docs/wakeword.md for free in Google Colab, or use Picovoice Porcupine. - Local speech. faster-whisper https://github.com/SYSTRAN/faster-whisper speech-to-text and Piper https://github.com/rhasspy/piper or Kokoro https://github.com/thewh1teagle/kokoro-onnx text-to-speech, all CPU-only. Deepgram and ElevenLabs are optional cloud backends. - Your choice of brain. Claude through the Claude Agent SDK https://pypi.org/project/claude-agent-sdk/ , your own Hermes Agent https://github.com/NousResearch/hermes-agent , or any OpenAI-compatible API: OpenAI, Azure OpenAI, OpenRouter, Groq, Together, Ollama, LM Studio or vLLM. - Connectors over MCP , with per-server allowlists. Read-only tools run freely; anything that sends, creates or updates needs a spoken "yes" , and destructive tools are blocked by default. - Conversation that feels natural. Spark streams its answer sentence by sentence, stays awake for follow-ups without the wake word, ignores speech that isn't meant for it, and can be interrupted by saying the wake word barge-in . - A personality of your choice. Plain and brief by default, or a composed British butler with a dry wit who calls you "sir", answers the wake word with "Yes, sir?" and speaks in a British voice. See Personality and voice https://github.com/contextuai/hey-spark/blob/main/docs/persona.md . - Memory and shortcuts. It keeps editable Markdown notes about each connected system, and you can map a short phrase "good morning" to a detailed prompt. - Desktop app for macOS and Windows: a single Start/Stop button, a light that shows what Spark is doing, and windows for Connectors, Shortcuts, the Brain, and Personality & Voice. - Everything is swappable from config.yaml : wake word, VAD, STT, TTS and brain backends, with no code changes. php flowchart LR mic Mic 16 kHz -- wake Wake word