Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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

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.2a1.tar.gz (16.6 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.2a1-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hivemind_rendezvous-0.1.2a1.tar.gz
  • Upload date:
  • Size: 16.6 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.2a1.tar.gz
Algorithm Hash digest
SHA256 4798694c3dd2c392b6fb8ee5835c4e8c9d9e19c324769ad775eafa168d98689f
MD5 42e0426926a607339c8eb67eee4df118
BLAKE2b-256 1dc2cd6d84e41eb57742e0c57392c2bc3ca18194bb60703a2dcea6c58b0af8cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hivemind_rendezvous-0.1.2a1-py3-none-any.whl
Algorithm Hash digest
SHA256 dc18c9d406ce29ffb1a5db386253ef2297ea03b0980e1497380e7bb461483145
MD5 63f3dbcac10f70666d2621298f480048
BLAKE2b-256 fa216fa8e17bac067af3c8bbe9906ae031c5334e211b3ed5293c9c624d6c6c3e

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