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.1a3.tar.gz (16.7 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.1a3-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hivemind_rendezvous-0.1.1a3.tar.gz
  • Upload date:
  • Size: 16.7 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.1a3.tar.gz
Algorithm Hash digest
SHA256 a0a922ea9b2b9b95b03ccb51aebc62b8bdc80551b99f33dc013c6e2ba2d801d1
MD5 dc6ef5b44551a7d579af53acd7325368
BLAKE2b-256 f03c722159702f263ae83b8d4fa4cbd3b13d6291eb106cbff6eb5c897371c4e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hivemind_rendezvous-0.1.1a3-py3-none-any.whl
Algorithm Hash digest
SHA256 e12317eb8225813dd6e57bb950768c4a76775e7da50a902aefc8e3d7268f7fc4
MD5 c70793f65c0018a829362f0cb1cf5e97
BLAKE2b-256 1c222e0d7c10d526256d50bd55258040b5eb5d9689ec8f45815cd4c96c6eaaea

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