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) |
| Audio Transformers | No | Mutate microphone audio per chunk before it is streamed |
| 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
- 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.
Transformer pipelines
The satellite can run OVOS transformer plugins client-side, configured in
this device's mycroft.conf:
audio_transformers— applied per chunk to microphone audio before it is streamed to the server (e.g. denoise).tts_transformers— applied to received TTS audio before playback (e.g. per-device sound effects).
{
"tts_transformers": {
"ovos-tts-transformer-sox-plugin": {"pitch": 300}
}
}
Loading is opt-in: a plugin only runs if named in its section. Avoid double-processing: if the HiveMind server also enables the same pipeline (hivemind-audio-binary-protocol runs audio transformers server-side), the audio gets processed twice — enable each plugin on exactly one side.
Metadata
Release files for hivemind-mic-satellite 0.10.0a4
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.10.0a4.tar.gz | 85.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hivemind_mic_satellite-0.10.0a4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 166.3 kB
Release files / hivemind_mic_satellite-0.10.0a4.tar.gz
| Download URL | hivemind_mic_satellite-0.10.0a4.tar.gz |
|---|---|
| Size | 85.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa51b9136ae5b531050832e373e123e13c875ea1a40ecabf74bf989759f77009
|
|
BLAKE2b-256 checksum How to use checksums |
745460015fde4647d34b31d579e90186c70db0d5f5c498010e4b34e5ee7cc4e5
|
| 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.10.0a4-py3-none-any.whl
| Download URL | hivemind_mic_satellite-0.10.0a4-py3-none-any.whl |
|---|---|
| Size | 80.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e2b7c611ed32b409bb0b52fce6d0989b5509c1e321979c12749518913bcd1230
|
|
BLAKE2b-256 checksum How to use checksums |
774656a2b435696cf4563cfa3cf1dc36c70ada00fac67c74b984a785578321eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|