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 address, and no persistent HiveMind session.

Where it sits

Normal HiveMind links are live encrypted WebSocket connections between a satellite and a hivemind-core hub. That setup needs both ends 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 messages, a node signs a fresh timestamp with its private key. The relay verifies the signature against the claimed pubkey and checks 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() takes these arguments (defaults shown):

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: the 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.

Related projects

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.2a2.tar.gz (16.8 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.2a2-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hivemind_rendezvous-0.1.2a2.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hivemind_rendezvous-0.1.2a2.tar.gz
Algorithm Hash digest
SHA256 ebf9ade74a0583682e8562402ab9773f36a7d492fbe2f39fa32d050513c61c48
MD5 4bf7012c68831b8eecd1c6cf9040d271
BLAKE2b-256 a4485ac8edeb7af967965f33aebf9cc7b4008386ed60b5c6f202c65c82a23fc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hivemind_rendezvous-0.1.2a2-py3-none-any.whl
Algorithm Hash digest
SHA256 116d6bfbc26160ca7d1ef7e205e7cf57565c03d7872f48aa5e580c2b15d243ea
MD5 fe924159d80bbfa8329c379d5eed089d
BLAKE2b-256 e11a1cdceebf8318770678776b1e74d353b0b95c715da054697b6d52e3c03962

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