Skip to main content

Async store-and-forward dead-drop rendezvous service for HiveMind nodes

Project description

hivemind-rendezvous

An async store-and-forward dead-drop for HiveMind nodes that are never online at the same time. A sender deposits an encrypted message addressed to a recipient's public key; the recipient later proves ownership of that key and collects the message. No simultaneous connection, no shared IP, no persistent HiveMind session.

Where it sits

Normal HiveMind links are live encrypted WebSocket connections between a satellite and a hivemind-core hub. That requires both ends to be reachable at once. hivemind-rendezvous fills the gap for nodes that are only intermittently online: it is a small neutral HTTP relay that holds INTERCOM messages until the recipient comes back to fetch them.

The relay never sees plaintext — messages are end-to-end encrypted to the recipient's public key before deposit. The relay only stores opaque blobs keyed by recipient pubkey and enforces ownership on retrieval.

How it works

Node A (sender)    Rendezvous node     Node B (recipient)
     │                   │                    │
     │-- POST /deposit -->│                    │
     │   INTERCOM msg     │                    │
     │   target=B.pubkey  │  (stored, TTL ≤7d) │
     │                   │                    │
     │           (time passes)                │
     │                   │<-- POST /retrieve --│
     │                   │    sign(B.privkey)  │
     │                   │-- messages -------->│
     │                   │   (deleted)         │

Authentication is proof of RSA pubkey ownership: to retrieve, a node signs a fresh timestamp with its private key. The relay verifies the signature against the claimed pubkey and the timestamp freshness (replay window), then returns and deletes the pending messages.

Prerequisites

  • Python 3.10+
  • An RSA identity for each node (handled by HiveMind / poorman-handshake).
  • A reachable host to run the relay (a small VPS, a Pi, or any always-on box the intermittent nodes can reach over HTTP).

Install

pip install hivemind-rendezvous

From source:

git clone https://github.com/JarbasHiveMind/hivemind-rendezvous
cd hivemind-rendezvous
pip install -e .

Quickstart

Run the relay on an always-on host:

hivemind-rendezvous
# Rendezvous server listening on 0.0.0.0:6789

That is the whole relay. Senders POST /deposit an INTERCOM message addressed to a recipient pubkey; recipients POST /retrieve with an ownership proof to collect them. See HTTP API for the request bodies and examples for deposit/retrieve snippets.

Configuration

run_server() arguments (and their defaults):

Argument Default Description
host 0.0.0.0 Bind address.
port 6789 Listen port.
node_pubkey "" This relay's own RSA pubkey (PEM), served at /pubkey.
deposit_rate_limit 60 Max deposits per client IP per window.
deposit_rate_window 60 Rate-limit window in seconds.
require_depositor_proof False Require a valid depositor ownership proof on every deposit.

Message TTL is set per deposit (ttl field, default and hard cap 7 days).

Documentation

See docs/:

  • How it works — deposit/retrieve flow and authentication.
  • HTTP API — endpoints, request/response bodies, error codes.
  • Deploy — running and configuring the relay.
  • Examples — deposit and retrieve from a client.

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_rendezvous-0.1.1a1.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

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

hivemind_rendezvous-0.1.1a1-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file hivemind_rendezvous-0.1.1a1.tar.gz.

File metadata

  • Download URL: hivemind_rendezvous-0.1.1a1.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hivemind_rendezvous-0.1.1a1.tar.gz
Algorithm Hash digest
SHA256 7db41bd12153c8c009420be843ded7d6203c051e5ac1f346aadd3f9902f42469
MD5 5acf6c1b79b8e988729d5ea8276f6fbb
BLAKE2b-256 9a46d89979127af8f71c3de55d6c56afaf66c31f85c042a508fe37ba7cf9622e

See more details on using hashes here.

File details

Details for the file hivemind_rendezvous-0.1.1a1-py3-none-any.whl.

File metadata

File hashes

Hashes for hivemind_rendezvous-0.1.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 e12ed05c76207e5d464bdb6d880c8c3ad6b3ee9c4f23357895105a6d255a7ea7
MD5 90b30f192626507874589dc95b75acab
BLAKE2b-256 ba25c25a7986c9e40bb4a334d800d9e38150845cb46b2a566336fa6367a8348b

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