Pairing protocol
June 5, 2026 · View on GitHub
The pairing exchange is a sequence of short text payloads transmitted as GGWave audio. Each payload is an opcode prefix followed by its argument.
Opcodes
| Opcode | Direction | Payload | Meaning |
|---|---|---|---|
HMPSWD: | Hub → Satellite | pairing password | "Pair with me using this password." |
HMKEY: | Satellite → Hub | access key | "Here is the key I generated; register me." |
HMHOST: | Hub → Satellite | hub IP / address | "I registered you; connect here." |
Handshake
Hub (GGWaveMaster) Satellite (GGWaveSlave)
│ │
│ HMPSWD:<password> │ hub shows / broadcasts the code
│─────────────────────────────────▶│
│ │ satellite decodes password,
│ │ generates an access key
│ HMKEY:<key> │
│◀─────────────────────────────────│
│ hub registers client │
│ (key + password) │
│ HMHOST:<ip> │
│─────────────────────────────────▶│
│ │ satellite saves NodeIdentity
│ │ (password, key, host) and connects
Notes
- The password is a short random token shown by the hub; treat it as a one-time pairing secret.
- The access key is generated by the satellite and becomes its HiveMind client identity once the hub registers it.
- After
HMHOST:is received and the identity is saved, GGWave stops; the satellite connects over the standard encrypted HiveMind WebSocket link. - All payloads are plain ASCII so they can also be entered/emitted by the browser tool by hand.