data over sound for hivemind
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hivemind_ggwave-0.0.3a1.tar.gz.
File metadata
- Download URL: hivemind_ggwave-0.0.3a1.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93a467f496a62bf4d1c79950a5cb8538ff100a218e3f30d1d69e8ae040b0b658
|
|
| MD5 |
a26b0b5014f81c5247008f12a0fb35f2
|
|
| BLAKE2b-256 |
36e308ffc9638095f00babe16cfa0c38f8b49dbcbd3077e967c422964de467b9
|
File details
Details for the file hivemind_ggwave-0.0.3a1-py3-none-any.whl.
File metadata
- Download URL: hivemind_ggwave-0.0.3a1-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f856b13e8765e060b404f6c2e1ec3e3bdac4b2df2bb282d08c0bb13ce5d9c5ab
|
|
| MD5 |
e11eee120f4ab87cbd2f74d44143e586
|
|
| BLAKE2b-256 |
3e8ba7445aaa4265a06503d314bf7a1d61c1fc83e72436f829b6d3da101619a5
|