This release is a pre-release and may not be stable for production use.
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hivemind_mic_satellite-0.9.0a2.tar.gz.
File metadata
- Download URL: hivemind_mic_satellite-0.9.0a2.tar.gz
- Upload date:
- Size: 84.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbf54b8b8697e4924c69fbe39403f05bd0b18465ef545c0916ee9a71ecf26c11
|
|
| MD5 |
875749d33dab00d9e2d76470eee1e27c
|
|
| BLAKE2b-256 |
10a3550dff3d5c153d5b0e06a10414e4d9c7dbd49c52b2cd5bcc5a7534f75298
|
File details
Details for the file hivemind_mic_satellite-0.9.0a2-py3-none-any.whl.
File metadata
- Download URL: hivemind_mic_satellite-0.9.0a2-py3-none-any.whl
- Upload date:
- Size: 79.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b23ecd5de07ed46c173de216b5fc9c151ecdbf9ce773210b069c0474ad08604a
|
|
| MD5 |
e4c3cda805924b743332e299c18a943f
|
|
| BLAKE2b-256 |
e0f44ae4fc58e1e34df52309990e10e271c506d07b9cf29cd006c1159f67facc
|