Microphone Satellite
The thinnest HiveMind satellite. Runs microphone capture and Voice Activity Detection (VAD) on-device; everything else — wakeword detection, STT, intent handling, TTS synthesis — runs on the hub.
What runs locally: Microphone + VAD
What the hub provides: Wakeword, STT, intent processing, TTS (requires hivemind-audio-binary-protocol on the hub)
When to use it
- Devices with very limited CPU/RAM (Raspberry Pi Zero, recycled phones)
- Scenarios where you want zero local model downloads
- Personal homelab with a handful of devices on a fast LAN
When not to use it
mic-satellite streams every detected voice segment to the hub continuously (VAD-gated but not wakeword-gated). This is bandwidth-intensive and puts the full STT load on the server for all speech activity. It is appropriate for a small homelab. For a deployment serving multiple users, prefer voice-relay — local wakeword means audio only leaves the device after activation.
Install
pip install hivemind-mic-satellite
Requires Python ≥ 3.10.
Hub requirements
The hub must have hivemind-audio-binary-protocol installed and configured. Plain hivemind-core does not handle audio.
Quickstart
1. On the hub — register a client:
hivemind-core add-client --name my-mic-sat
# note the access_key and password printed
2. On the satellite — write the identity file:
hivemind-client set-identity \
--key <access_key> \
--password <password> \
--host <hub_host_or_ip>
3. Run:
hivemind-mic-sat
Or pass credentials directly without storing them:
hivemind-mic-sat --key <key> --password <password> --host <host> --port 5678
Configuration
mic-satellite reads the standard OVOS configuration at ~/.config/mycroft/mycroft.conf.
| Plugin type | Config key | Notes |
|---|---|---|
| Microphone | listener.microphone.module |
Required |
| VAD | listener.VAD.module |
Required |
| PHAL | PHAL.ovos-phal-... |
Optional, platform support |
Example mycroft.conf excerpt:
{
"listener": {
"microphone": {
"module": "ovos-microphone-plugin-alsa"
},
"VAD": {
"module": "ovos-vad-plugin-silero"
}
}
}
How audio flows
[Microphone] → [VAD] → raw audio chunks → [HiveMind Hub]
↓
[hivemind-audio-binary-protocol]
↓
WakeWord → STT → IntentService
↓
TTS synthesis → audio back to satellite
↓
[Satellite plays TTS audio]
Audio is sent as BINARY messages with payload type RAW_AUDIO (type 1). The hub's AudioBinaryProtocol.handle_microphone_input() processes the stream.