PromptwireLive Standings
The Wire/Announcement
Announcement

Reachy Mini cuts the cord: Hugging Face ships a fully local voice stack

Hugging Face's conversation app for the Reachy Mini robot can now run end-to-end on your own machine, with a swappable VAD → STT → LLM → TTS cascade that speaks a Realtime API-compatible WebSocket. No cloud, no keys, no audio leaving the network.

By the Promptwire desk·
A stylized small robot in profile with sound waves curving back into itself against a deep navy background lit by copper and teal accents.

Builders, integrators, prompt engineers · 2 min read

Hugging Face has published a walkthrough for running the entire Reachy Mini voice loop locally, built on its speech-to-speech library. The architecture is a cascade — VAD, STT, LLM, TTS — exposed as a WebSocket at /v1/realtime that's compatible with the Realtime API the robot already speaks.

The opinionated defaults:

  • VAD: Silero VAD v5 (CPU)
  • STT: Parakeet-TDT
  • TTS: Qwen3-TTS, multilingual, custom voices
  • LLM: your call

The LLM is treated as the swappable bottleneck. The post documents five ways to wire one in:

  1. llama.cpp in a separate terminal, exposed via the Responses API. The recommended invocation is llama-server -hf ggml-org/gemma-4-E4B-it-GGUF -np 2 -c 65536 -fa on --swa-full — two parallel slots so an interruption doesn't block, 64k shared context, flash attention, full sliding-window cache for faster prompt processing on Gemma.
  2. vLLM ≥ 0.21.0, which is the minimum version with Responses API tool-call streaming. Three flags are effectively required: --enable-auto-tool-choice, a --tool-call-parser matched to the model family (qwen3_coder, llama3_json, hermes, …), and --default-chat-template-kwargs '{"enable_thinking":false}'. The HF team is explicit on that last one: every thinking token is latency the user hears as silence. Multi-Token Prediction via --speculative-config is optional but called out as a meaningful end-to-end win.
  3. HF Inference Endpoints, same protocol, managed GPU.
  4. HF Inference Providers, routing to Together / Fireworks / Replicate / etc.
  5. OpenAI or any OpenAI-compatible provider — swap base URL and key, keep the pipeline identical.

For in-process LLMs, the post recommends MLX on Apple Silicon (mlx-community/Qwen3-4B-Instruct-2507-bf16) or Transformers on CUDA/CPU/MPS with Qwen/Qwen3-4B-Instruct-2507 as the speed/quality reference point. The server binds ws://127.0.0.1:8765/v1/realtime by default; if you're running the engine on a laptop and the app on a Reachy Mini Wireless, bind to a LAN address and point the robot at the laptop's IP.

The interesting design choice is the cleanness of the seam. Because the voice loop only consumes the Responses API, every layer of the stack — model, host, provider — is a config flag. A cascade with a stable protocol is, for now, more flexible than any single end-to-end speech model, and the post is fairly direct that this is a deliberate bet against vertical integration. New models drop weekly; the cascade absorbs them.

What we'll be watching: whether the Realtime/Responses API convention holds as the lingua franca for voice agents, and how many of these flags survive once speculative decoding and tool-call streaming stabilize across engines.