This release is a pre-release and may not be stable for production use.
HiveMind GGWave
Zero-configuration satellite enrollment for HiveMind via data-over-sound. Devices pair by playing and listening to short audio tones ("audio QR codes") using the GGWave protocol — no typing IP addresses, scanning QR codes, or sharing a keyboard.
It defines the HiveMind pairing opcodes and provides the master/slave primitives. Orchestration — when to start, how to show the code, how to register a client — is the caller's job (typically hivemind-core on the hub).
Where it sits
A new satellite has no credentials and does not know the hub's address. HiveMind GGWave bootstraps that first contact over sound:
- The hub (running
hivemind-core) shows a pairing password. - The password is transmitted as audio — emitted by the hub's speaker, or from the browser tool at https://jarbashivemind.github.io/hivemind-ggwave.
- The satellite hears it, generates an access key, and sends it back over sound.
- The hub registers the satellite as a client and emits its host address.
- The satellite saves the credentials and connects to the hub over the normal encrypted HiveMind link.
After enrollment, GGWave is no longer involved — it only establishes the initial trust.
How it works
Hub (GGWaveMaster) Satellite (GGWaveSlave)
│ │
│ HMPSWD:<password> │
│─────────────────────────────────▶│ (audio)
│ │
│ HMKEY:<key> │
│◀─────────────────────────────────│ (audio)
│ │
│ HMHOST:<ip> │
│─────────────────────────────────▶│ (audio)
│ │
│ saves identity, connects
Prerequisites
- Python 3.10+
- The
ggwaveaudio codec (see Installation). - Devices within audible range of each other, each with a microphone and speaker. The browser tool can stand in for a hub speaker, or for a satellite when pairing from a phone.
Installation
pip install hivemind-ggwave
From source:
git clone https://github.com/JarbasHiveMind/hivemind-ggwave
cd hivemind-ggwave
pip install -e .
GGWave audio I/O is provided by the ggwave package and the system audio stack;
see docs/microphone.md for audio capture details.
Quickstart
The smallest path is pairing one satellite to a running hub.
-
Start the hub.
hivemind-corerunsGGWaveMasterand prints a pairing code, e.g.HMPSWD:ce357a6b59f6b1f9. -
Emit the password. Either let the hub broadcast it from its speaker, or open https://jarbashivemind.github.io/hivemind-ggwave on a phone, enter the code, and play it.
-
Let the satellite pair. The unpaired satellite (running
GGWaveSlave) decodes the password, generates an access key, sends it back over sound, and receives the hub address. -
Done. The satellite saves its
NodeIdentityand connects to the hub.
Silent mode
By default the master broadcasts the password periodically. In silent_mode it
does not — the caller shows the code in a UI and triggers transmission on user
demand (e.g. a button press), so the password is emitted once instead of looping.
This is the recommended production flow and the one hivemind-core uses.
Configuration
GGWave transmission parameters are passed via a config dict (TX volume, GGWave
protocol id, sample rate). The master accepts the pairing password, hub host, and
the silent-mode flag. See docs/configuration.md for the
full reference.
Documentation
See docs/:
- Pairing protocol — the opcodes and handshake.
- Master and slave — the enrollment primitives.
- Configuration — parameters and silent mode.
- Microphone / audio — audio capture requirements.
License
Apache-2.0
Metadata
Release files for hivemind-ggwave 0.0.3a3
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_ggwave-0.0.3a3.tar.gz | 10.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hivemind_ggwave-0.0.3a3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.7 kB
Release files / hivemind_ggwave-0.0.3a3.tar.gz
| Download URL | hivemind_ggwave-0.0.3a3.tar.gz |
|---|---|
| Size | 10.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c327fa6d2d48c07723a15d29f3fd4a336375c96088e9602710fc06e4955b93ba
|
|
BLAKE2b-256 checksum How to use checksums |
f046494765f70b91314eff42068bf096a3dd86341f6eaff05a318a60cb9f1f0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / hivemind_ggwave-0.0.3a3-py3-none-any.whl
| Download URL | hivemind_ggwave-0.0.3a3-py3-none-any.whl |
|---|---|
| Size | 10.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec6e8e64def888c9e735256b84fb7ad0c30b88c33aaaf55734f6d51987122aa7
|
|
BLAKE2b-256 checksum How to use checksums |
b362894e6469e06626def3751be3abe04ad5dcf26ce8ae95090002a6b6003e50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|