Skip to main content

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:

  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

Project details


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.3a1.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.3a1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

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

Hashes for hivemind_ggwave-0.0.3a1.tar.gz
Algorithm Hash digest
SHA256 93a467f496a62bf4d1c79950a5cb8538ff100a218e3f30d1d69e8ae040b0b658
MD5 a26b0b5014f81c5247008f12a0fb35f2
BLAKE2b-256 36e308ffc9638095f00babe16cfa0c38f8b49dbcbd3077e967c422964de467b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hivemind_ggwave-0.0.3a1-py3-none-any.whl
Algorithm Hash digest
SHA256 f856b13e8765e060b404f6c2e1ec3e3bdac4b2df2bb282d08c0bb13ce5d9c5ab
MD5 e11eee120f4ab87cbd2f74d44143e586
BLAKE2b-256 3e8ba7445aaa4265a06503d314bf7a1d61c1fc83e72436f829b6d3da101619a5

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 Pingdom Monitoring Sentry Error logging StatusPage Status page