Sonia - Local Voice Assistant in less than 13Gb RAM, NO Dedicated GPU, Skills/Tool-calling supported Sonia is an open-source local LLM voice assistant that runs entirely on-device in under 15 GB of RAM without a dedicated GPU, according to its project documentation. The system keeps the microphone open during speech for full-duplex interruption handling, uses layered turn detection (32 ms audio frames, in-process Silero VAD, a Smart Turn classifier, and a 4-token LISTEN/REPLY LLM prompt), and gates tool calls from its 4B quantized main model through a cheap judge model. Sonia reads existing SKILL.md packages from a configurable SKILLS_DIR, including directories used by the pi coding agent and opencode, with skills activated per session from the UI settings drawer. Sonia - Local Voice Assistant in less than 13Gb RAM, NO Dedicated GPU, Skills/Tool-calling supported Most voice assistants still feel like talking to a vending machine. You press a button, speak into the void, wait, then get a monologue you did not ask for. Sonia tries something different. It is an LLM voice assistant that runs entirely on your machine, keeps the microphone open while it talks, and lets you cut it off mid-sentence. The whole thing works without a dedicated GPU and stays under 15 GB of RAM. I spent some time reading through the project docs, and a few design decisions stood out as genuinely interesting choices rather than the usual feature checklist. Full duplex is the real headline The headline feature is simple to state and hard to build: the mic never closes. While Sonia is speaking, it is still listening. Interrupt it and it reacts. Say something that sounds like echo or a backchannel an "mhm", a faint repeat of its own words and it keeps going. Say something real and it stops, cancels the rest of the reply, and still keeps what it already said in the conversation history. That distinction between echo and real interruption is one of those details you only notice when it is missing. The system tightens its voice activity detection while speaking, then needs roughly three real words before it treats the interruption as intentional. It is a small rule, but it is what keeps the assistant from constantly derailing itself on room noise. How it decides when you are done talking Turn detection is where most conversational systems quietly fall apart, and Sonia uses a layered approach worth appreciating. Microphone audio arrives in 32 ms frames. In-process Silero VAD does the cheap first pass. When speech stops, the harness waits a short pause and then asks a Smart Turn classifier whether the utterance really ended. If the pause is longer and the classifier says the speaker might still be thinking, a tiny 4-token LLM prompt LISTEN or REPLY gets the final word. Four mechanisms stacked on top of each other sounds like overkill until you have used a system that either cuts you off mid-thought or sits there awkwardly after you have clearly finished. Ambiguous pauses are exactly where single-method systems fail, and Sonia treats that ambiguity as a first-class problem. A tool gate that keeps a small model honest Sonia supports function-calling tools: timers, watches, notes, time queries, skills, and shell commands. The interesting part is not the tool list itself, but the tool gate sitting in front of it. Each round of proposed tool calls is re-checked by a cheap judge model against what the user actually said. The main model here is a 4B quant, and small models are exactly the ones that invent plausible-looking calls on vague follow-ups. "Do you know what time it is?" should not turn into a surprise shell command. The gate catches that. It is a modest architectural addition with a real payoff: you get the latency and memory benefits of a small local model without inheriting every hallucinated tool call it produces. Skills you already own Sonia does not ship its own skill ecosystem. Instead, it points SKILLS DIR at a directory of SKILL.md packages and reads whatever is there. That directory can be the one used by the pi coding agent, the one used by opencode, or any other layout with