HiveMind is an extension of the OpenVoiceOS (OVOS) voice assistant platform that allows you to connect multiple devices into a shared ecosystem, even those with limited hardware. By acting as a central hub, HiveMind enables seamless collaboration between devices across your network.
New HiveMind Documentation
The docs recently got a huge update! They’re packed with everything you need to start building with HiveMind, including step-by-step guides, command overviews, and advanced use cases.
Check out the docs here: HiveMind Documentation
Quick Start Guide
New to HiveMind? Here is the quick start guide taken directly from the updated documentation.
This guide will help you get started quickly with the HiveMind platform, allowing you to extend your OpenVoiceOS (OVOS) ecosystem across multiple devices, even with low-resource hardware. HiveMind lets you connect lightweight devices as satellites to a central OVOS hub, offering centralized control and fine-grained permissions.
Installation
To begin using HiveMind Core, you need to install the hivemind-core
package in your OVOS device. This can be done via pip:
pip install hivemind-core
Adding a Satellite Device
Once the server is running, you’ll need to add client credentials for each satellite device you want to connect.
Run the following command to add a satellite device:
hivemind-core add-client
The output wi*ll show you important details like:
- Node ID
- Friendly Name
- Access Key
- Password
- Encryption Key (deprecated, only used for legacy clients)
Provide these credentials on the client devices to enable the connection.
Running the HiveMind Server
Start the HiveMind server to accept client connections on a specified port:
hivemind-core listen --port 5678
The server will now listen for incoming satellite connections.
hivemind-core
needs to be running in the same device as OVOS
Permissions
HiveMind Core uses a flexible permissions system, where each client’s permissions are customizable. By default:
-
Only essential bus messages are allowed.
-
Skills and intents are accessible but can be blacklisted or restricted.
You can manage permissions for clients by using commands like allow-msg
, blacklist-msg
, allow-skill
, and blacklist-skill
.
HiveMind Core Commands Overview
Here are the basic commands for managing clients and their permissions:
- Add a new client:
hivemind-core add-client --name "satellite_1" --access-key "mykey123" --password "mypass"
- List all registered clients:
hivemind-core list-clients
- Start listening for client connections:
hivemind-core listen --port 5678
For detailed help on each command, use --help
(e.g., hivemind-core add-client --help
).
đź–§ Hivemind Server Comparison
When building your HiveMind servers there are many ways to go about it, with many optional components
Common setups:
- OVOS Device, a full OVOS install without hivemind (for reference only)
- Hivemind Device, a OVOS device also running hivemind, eg. a Mark2 with it’s own satellites.
- Hivemind Skills Server, a minimal HiveMind server that satellites can connect to, supports text utterances
only - Hivemind Sound Server, a HiveMind server that supports text utterances and streaming audio
- Hivemind Persona Server, exposes a
ovos-persona
(eg. an LLM) that satellites can connect to, without
runningovos-core
.
The table below illustrates the most common setups for a OVOS based Mind, each column represents a running OVOS/HiveMind
service on your server
hivemind-core | hivemind-listener | ovos-core | ovos-audio | ovos-listener | hivemind-persona | |
---|---|---|---|---|---|---|
OVOS Device | ||||||
Hivemind Device | ||||||
Hivemind Skills Server | ||||||
Hivemind Sound Server | ||||||
Hivemind Persona Server |
The table below indicates compatibility for each of the setups described above with the most common voice satellites,
each column corresponds to a different satellite
voice satellite | voice relay | mic satellite | |
---|---|---|---|
OVOS Device | |||
Hivemind Device | |||
Hivemind Skills Server | |||
Hivemind Sound Server | |||
Hivemind Persona Server |