A Home Assistant custom integration (domain: hivemind) that connects Home
Assistant to an OpenVoiceOS instance over the
HiveMind protocol and exposes
OVOS as Home Assistant entities. You can install it through HACS (as a custom
repository) or by hand.
The integration does more than send voice commands. It controls the OVOS device at a system level: audio playback, volume, microphone, sleep and wake, and system power. It does this by injecting low-level bus messages over the HiveMind link.
Home Assistant connects to a HiveMind hub (hivemind-core) that runs alongside an OVOS instance, using a HiveMind client key. Because the integration injects low-level bus messages instead of only utterances, that client must have admin privileges and the message-type allowlist described under Permissions Required.
- A running HiveMind hub (
hivemind-core) reachable from Home Assistant. - An admin-privileged HiveMind client key and password registered on the hub for Home Assistant (see Permissions Required).
- Home Assistant with access to its
config/custom_components/directory. - The integration declares the runtime requirement
hivemind_bus_client>=0.4.3, which Home Assistant installs on first load.
- Add
https://github.com/JarbasHiveMind/hivemind-homeassistantas a custom repository (category Integration). - Install HiveMind.
- Restart Home Assistant.
-
Copy the
hivemindfolder into your Home Assistantcustom_componentsdirectory:mkdir -p /config/custom_components cp -r custom_components/hivemind /config/custom_components/
-
Restart Home Assistant.
Go to Settings → Devices & Services → Add Integration → HiveMind. The
config flow checks the hub connection before it saves the entry, so a bad host
or credential shows a clear cannot connect or invalid auth error instead of
a silent failure.
The config flow asks for these fields when you add the integration:
| Field | Default | Description |
|---|---|---|
device_type |
voice_assistant |
Which OVOS capabilities to expose (see below). |
name |
n/a | Friendly name for the device in Home Assistant. |
host |
n/a | HiveMind hub host (e.g. ws://192.168.1.10). |
access_key |
n/a | HiveMind client access key. |
password |
n/a | HiveMind client password. |
port |
5678 |
HiveMind WebSocket port. |
legacy_audio |
false |
Use the legacy Audio Service instead of OCP. |
site_id |
unknown |
OVOS site id. |
allow_self_signed |
false |
Accept a self-signed TLS certificate. |
The device_type field controls which platforms Home Assistant sets up:
| Type | Exposes |
|---|---|
agent |
binary sensors, buttons, switches (text input and output only). |
media_player |
the above, plus notify and media_player. |
voice_assistant |
the above, plus select and sensor (full mic, VAD, and STT device). |
See docs/ for the full setup, entity, and permissions guide.
Once you add a HiveMind device, its entities appear in Home Assistant: a
connection sensor, control buttons and switches, and — depending on
device_type — a media player, a notify service, status sensors, and a
listening-mode selector.
Send text to the OVOS instance with the notify service so it speaks the text
through TTS. Control playback with the media_player entity, which maps Home
Assistant MediaType values to OVOS OCP media types (music, video, movie,
episode, TV channel, game, and others). It also works with sources exposed by
ovos-skill-music-assistant.
This integration does more than send voice queries: it injects and controls bus messages directly. The client connecting to HiveMind must have admin privileges and permission to use the following message types.
mycroft.stopmycroft.skills.is_alivemycroft.skills.is_ready
mycroft.voice.is_alivemycroft.voice.is_readymycroft.mic.listenmycroft.mic.mutemycroft.mic.unmutemycroft.mic.get_statusrecognizer_loop:sleeprecognizer_loop:wake_uprecognizer_loop:state.getrecognizer_loop:state.set
mycroft.gui_service.is_alivemycroft.gui_service.is_ready
speakmycroft.audio.is_alivemycroft.audio.is_readymycroft.audio.speak.status
ovos.common_play.player.statusovos.common_play.track_infoovos.common_play.get_track_lengthovos.common_play.get_track_positionovos.common_play.playlist.queueovos.common_play.resumeovos.common_play.pauseovos.common_play.stopovos.common_play.previousovos.common_play.nextovos.common_play.set_track_positionovos.common_play.playlist.clearovos.common_play.shuffle.setovos.common_play.shuffle.unsetovos.common_play.repeat.setovos.common_play.repeat.unsetovos.common_play.repeat.one
(only if you enable it manually, for systems without the OCP Audio Plugin)
mycroft.audio.service.playmycroft.audio.service.resumemycroft.audio.service.pausemycroft.audio.service.stopmycroft.audio.service.prevmycroft.audio.service.nextmycroft.audio.service.set_track_position
mycroft.phal.is_alivemycroft.phal.is_ready
mycroft.volume.getmycroft.volume.increasemycroft.volume.decreasemycroft.volume.mutemycroft.volume.unmute
system.rebootsystem.shutdownsystem.mycroft.service.restartsystem.ssh.status
(work in progress)
ovos.phal.camera.pingovos.phal.camera.getovos.phal.camera.openovos.phal.camera.close
- This integration directly manipulates OpenVoiceOS state.
- Proper permission management is critical for security.
- Only connect trusted Home Assistant instances to your HiveMind hub.
- hivemind-homeassistant (this repo) lets HiveMind show up as a player in Home Assistant.
- hivemind-player-protocol turns any device into a standalone HiveMind OCP player.
- ovos-skill-music-assistant lets OVOS search media in Music Assistant sources.
- ovos-media-plugin-mass lets OVOS control Music Assistant players.

