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.
Metadata
Release files for hivemind-mic-satellite 0.9.0a3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hivemind_mic_satellite-0.9.0a3.tar.gz | 84.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hivemind_mic_satellite-0.9.0a3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.6 kB
Release files / hivemind_mic_satellite-0.9.0a3.tar.gz
| Download URL | hivemind_mic_satellite-0.9.0a3.tar.gz |
|---|---|
| Size | 84.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14126405130a6bf1445cdb5e65de9eed02080c3992caf0fa28d7c175c05a0265
|
|
BLAKE2b-256 checksum How to use checksums |
c4fdce5779f2993c305a835a789be6a7c224bd8fe25fdbae9841fd4c0c983e58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / hivemind_mic_satellite-0.9.0a3-py3-none-any.whl
| Download URL | hivemind_mic_satellite-0.9.0a3-py3-none-any.whl |
|---|---|
| Size | 79.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
40914da384346152358adbc21d174c0f38525cc73dbc94e7e5ed5f470f63c2dc
|
|
BLAKE2b-256 checksum How to use checksums |
b3d8e53a9541870fca968ad1ba70af50eaeacd846210664ab650989a9ed81c70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|