Skip to main content
Pre-release

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:

  1. The hub (running hivemind-core) shows a pairing password.
  2. The password is transmitted as audio — emitted by the hub's speaker, or from the browser tool at https://jarbashivemind.github.io/hivemind-ggwave.
  3. The satellite hears it, generates an access key, and sends it back over sound.
  4. The hub registers the satellite as a client and emits its host address.
  5. 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 ggwave audio 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.

  1. Start the hub. hivemind-core runs GGWaveMaster and prints a pairing code, e.g. HMPSWD:ce357a6b59f6b1f9.

  2. 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.

  3. 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.

  4. Done. The satellite saves its NodeIdentity and 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/:

License

Apache-2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hivemind_ggwave-0.0.3a2.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hivemind_ggwave-0.0.3a2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file hivemind_ggwave-0.0.3a2.tar.gz.

File metadata

  • Download URL: hivemind_ggwave-0.0.3a2.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hivemind_ggwave-0.0.3a2.tar.gz
Algorithm Hash digest
SHA256 fb93e7eee0bd49eb4a5eb95fe60eace71538f872c51d9c9a39311ebd05f60ddf
MD5 7bac9a891aa3ba3c0a818c5968868935
BLAKE2b-256 066878c12d116064e0fe9ca642f9f46706f44190ee2b5f8fb1c2d548bfbaf855

See more details on using hashes here.

File details

Details for the file hivemind_ggwave-0.0.3a2-py3-none-any.whl.

File metadata

File hashes

Hashes for hivemind_ggwave-0.0.3a2-py3-none-any.whl
Algorithm Hash digest
SHA256 902bda7e7d37d338e675fd11ecf9eb87a7992067b6d847058cc882688d8e14f7
MD5 a5cb2c18018947cc1d3cc186b4f98e9a
BLAKE2b-256 38e08d701e5ecaa14bf4b7f5d1db611b195f0f7be054ad9924e37f581cdb25fc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page