HiveMind Microphone Satellite
July 31, 2026 ยท View on GitHub
HiveMind Microphone Satellite
hivemind-mic-satellite is the smallest HiveMind satellite. It runs only a microphone plugin and a VAD (voice activity detection) plugin on the device.
Audio streams from this device to a HiveMind server that runs hivemind-audio-binary-protocol. The server handles wakeword detection, speech-to-text, intent processing, and text-to-speech synthesis. The satellite receives the synthesized speech audio and plays it back locally. No local STT or TTS models are needed, so the satellite can run on cheap, low-power hardware such as a Raspberry Pi Zero.
Satellite spectrum: where does processing happen?
| Satellite | Mic | VAD | Wakeword | STT | TTS | Best for |
|---|---|---|---|---|---|---|
| HiveMind-cli | n/a | n/a | n/a | n/a | n/a | Text-only (keyboard/script) |
| hivemind-mic-satellite (this repo) | local | local | server | server | server | Cheapest hardware / homelab; no local models |
| HiveMind-voice-relay | local | local | local | server | server | Local wakeword; scales as a service |
| HiveMind-voice-sat | local | local | local | local | local | Full local stack, sends text |
Server requirements
The default hivemind-core does not include audio processing. Install hivemind-audio-binary-protocol on the server to enable server-side wakeword, STT, and TTS.
Why mic-satellite, and when not to use it
mic-satellite exists for one reason: device resources. With only a microphone and VAD on-device, it runs on cheap hardware, such as a Raspberry Pi Zero or a recycled phone, with no local models. The hive owns everything else: wakeword, STT, intent, and TTS. It gates them behind the same access-key authentication as the rest of the mesh. The hive operator chooses the engines, models, and voice for every connected satellite. A satellite cannot override them. This is the same ownership model as voice-relay. See its docs for the "HiveMind as a service" framing.
There is a trade-off. Because there is no local wakeword, the satellite streams every detected voice segment upstream (gated by VAD, not by a wakeword). This continuous audio stream uses more bandwidth and puts the full STT load on the server for all speech, not just commands. This works well for a homelab with a handful of personal devices, where on-device resources are the binding constraint. It does not scale for HiveMind-as-a-service across many tenants, because streaming raw audio per client costs too much. For a service-style deployment, prefer voice-relay: a local wakeword means audio leaves the device only after activation.
Install
pip install hivemind-mic-satellite
Requires Python 3.10 or later.
Quickstart
1. On the hive (server): create an access key for this device:
hivemind-core add-client --name my-mic-sat
# note the access_key and password printed
2. On the satellite device: set the identity:
hivemind-client set-identity \
--key <access_key> \
--password <password> \
--host <hive-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
Minimal configuration
The satellite shares the standard OpenVoiceOS config file ~/.config/mycroft/mycroft.conf. At minimum you need a microphone plugin and a VAD plugin:
{
"microphone": {
"module": "ovos-microphone-plugin-alsa"
},
"VAD": {
"module": "ovos-vad-plugin-silero"
}
}
See docs/configuration.md for all options, plugin selection, and audio device tuning.
Supported plugins
| Plugin type | Required | Purpose |
|---|---|---|
| Microphone | Yes | Captures audio from hardware |
| VAD | Yes | Detects voice activity, decides when to stream |
| PHAL | No | Platform/hardware abstraction (for example LEDs, buttons) |
| TTS Transformers | No | Mutate TTS audio before playback |
| G2P | No | Visemes for mouth movement (for example Mycroft Mk1) |
| Media Playback | No | Media commands such as "play Metallica" |
| OCP Plugins | No | URL playback (YouTube and similar) |
Features handled server-side, not on this device
- STT (speech-to-text)
- TTS (text-to-speech) synthesis
- Wakeword detection
- Continuous listening, hybrid listening, sleep mode, recording mode
- Multiple wakewords
- Audio and dialog transformer plugins
Documentation
Full documentation is in docs/:
- Overview and satellite spectrum
- Getting started
- Configuration reference
- Architecture (advanced)
- Deployment (systemd, Raspberry Pi)
- Testing (e2e suite, mocked hardware)
- Troubleshooting
Related
| Project | Role |
|---|---|
| HiveMind-core | The hive, manages connected satellites |
| hivemind-audio-binary-protocol | Server-side audio processing (required) |
| HiveMind-voice-relay | Satellite with local wakeword |
| HiveMind-voice-sat | Full local stack satellite |
| HiveMind-cli | Text-only satellite |
| ovos-plugin-manager | Plugin framework (microphone, VAD, PHAL, and more) |
License
Apache-2.0: see LICENSE.