Frequently Asked Questions¶
This page gives short answers with links to the full pages. New to the vocabulary? Keep the Glossary open in another tab.
In a nutshell
- Quick answers grouped by topic: general concepts, setup, security, satellites, integration, and troubleshooting.
- Each answer links to the page that covers it in depth.
- Start with the Quick Start or Admin Panel to get hivemind-core running.
General¶
What is HiveMind?
HiveMind is an open-source protocol and platform that connects lightweight satellite devices (a microphone, a browser tab, a terminal) to a central AI server — hivemind-core — over an encrypted network. hivemind-core does the heavy lifting — skills, reasoning, speech-to-text — so the satellites can be cheap and simple. See About.
How is it different from a single-device voice assistant?
The work is distributed. One capable hivemind-core server serves many lightweight satellites, each with its own session and permissions. Speech processing can happen on the satellite or on the server, depending on which satellite you choose (comparison).
Which AI backend does it use?
HiveMind is backend-agnostic. By default hivemind-core runs OpenVoiceOS skills, but you can instead point it at an LLM/chatbot (Persona Server) or an external agent (A2A Server). The choice is just which agent plugin hivemind-core loads.
Do satellites talk directly to each other?
No. Satellites connect to hivemind-core, which routes everything. Two clients can exchange end-to-end-encrypted INTERCOM messages, but those are still relayed through hivemind-core — there is no satellite-to-satellite peer link. hivemind-core instances, on the other hand, can connect to other instances to form a mesh.
Setup¶
What's the easiest way to get started?
Two options:
- Web UI: the Admin Panel starts hivemind-core and gives you a browser to manage it — one command.
- Command line: the Quick Start takes you from zero to a working hivemind-core + voice satellite in about ten minutes.
No hardware? Try the WebSpeech browser satellite.
Do I need a dedicated machine for hivemind-core?
No. hivemind-core runs fine on a laptop/desktop (Linux, macOS, Windows via WSL), a Raspberry Pi 4+ (good for several satellites), a cloud VM, or a Docker container.
Can I run it over the internet?
Yes, but secure it properly. On a LAN, use a strong password (and optionally self-signed TLS). Internet-facing, put it behind a reverse proxy (Caddy, nginx, Traefik) that terminates real TLS, and keep a strong password + firewall. See Operations and Security.
Security¶
Is HiveMind secure?
Yes. Connections use authenticated encryption (AES-256-GCM or ChaCha20-Poly1305, negotiated), with a password-based handshake (PBKDF2-HMAC-SHA256, 100 000 iterations). The encryption key is never sent over the wire. Permissions are fail-closed: a new client may do nothing until you grant it specific message types. Full detail in Security & Permissions.
WebSocket vs HTTP — what's the difference?
WebSocket (default, port 5678) is a persistent, low-latency, bidirectional connection — ideal for real-time voice. HTTP is request/response, simpler for polling/REST-style clients. Both carry the exact same encrypted messages. See Transports.
Satellites & devices¶
Which satellite should I choose?
Quick guide (full table in Choosing a Satellite):
- Text only / no audio → HiveMind CLI
- Cheapest mic device → Mic Satellite
- Raspberry Pi voice → Voice Relay or Voice Satellite
- Any browser → WebSpeech
- Microcontroller (ESP32) → Microcontrollers
Can I have multiple satellites?
Yes. Each connects independently with its own access key and permissions. They can share an OVOS session for conversational continuity.
Integration & development¶
Can I run OVOS skills?
Yes — the OVOS skills backend runs the full skill stack; existing OVOS skills work as-is. See OVOS Skills Server.
How do I connect a chat platform or smart home?
Use a bridge: Home Assistant, Matrix, Twitch, Mattermost, DeltaChat, HackChat. Or write your own with the Client Library.
How do I write a custom satellite?
Use the Client Library (HiveMessageBusClient in
Python) or HiveMind-js for the browser. To implement the
protocol from scratch, follow the Protocol Specification.
Troubleshooting¶
A satellite can't connect to hivemind-core
- Confirm hivemind-core is running and reachable (
ping <server-ip>). - From the satellite, test the credentials:
hivemind-client test-identity. - Check the firewall allows port 5678 (WebSocket) or 5679 (HTTP).
- Make sure the client is allowed — a brand-new client is denied every message type
until you run
hivemind-core allow-msg ...(see Security).
INTERCOM messages stopped arriving after an upgrade
A node now drops an INTERCOM it cannot attribute to a sender. Check three things.
First, the payload must be a signed, encrypted envelope. A stock server requires crypto
and drops a plaintext INTERCOM. Second, the receiver must hold the sender's public key,
either added out of band or pinned from the sender's first HELLO. Third, the signature
must verify against that key. To keep sending plaintext INTERCOM, construct the listener
protocol with require_crypto=False. See
Bootstrapping satellite-to-satellite trust.
A satellite stopped seeing answers to other satellites' queries
That was never intended and a node no longer does it. When a node could not work out
which downstream node a QUERY or CASCADE answer belonged to, it used to send that
answer to every downstream node as a last resort. One satellite could therefore see
another satellite's reply. A node now logs the unroutable answer and drops it.
Nothing legitimate is lost. A node still delivers to the originator when it is directly connected, and still walks the recorded route back when it is not, so an answer that has a return path still arrives. Only the fan-out is gone. If answers stop arriving after an upgrade, the return path is genuinely broken, and the node log names the query id and the originator it could not reach.
Cascade answers arrive split into several entries
Fixed. A gatherer used to append a fresh entry for every chunk that arrived, so one
responder's answer became several unrelated entries and two responders answering at once
interleaved. Chunks now accumulate into one entry per responder, and the entries stay in
order of first arrival. Code that reads responses sees the same list, with one item per
responder instead of one per chunk.
How do I find the server's address automatically?
Run hivemind-presence scan on the same network (hivemind-core announces itself when auto
discovery is enabled). Most satellites also auto-scan when you start them without a
--host. See Auto Discovery.
Audio is choppy or delayed
Prefer wired Ethernet or 5 GHz Wi-Fi; move wakeword/VAD onto the satellite (Voice Relay or Voice Satellite rather than Mic Satellite); and check hivemind-core isn't CPU-bound.
Documentation¶
How do I build these docs locally?
Then open http://localhost:8000. Contributions welcome — everything is Markdown underdocs/, published automatically to
GitHub Pages.