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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hivemind_rendezvous-0.1.1a2.tar.gz.
File metadata
- Download URL: hivemind_rendezvous-0.1.1a2.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
146f3c8e8d5652efe79fc49c859cb489943a51a5a3f0b354f29db2d0da4471ee
|
|
| MD5 |
b05ea62363e36fa3f54f1cf48be47d27
|
|
| BLAKE2b-256 |
2032d6d3e96953dfdb75d512758de63cf75002fa3791c01360f7a9cc72d21c09
|
File details
Details for the file hivemind_rendezvous-0.1.1a2-py3-none-any.whl.
File metadata
- Download URL: hivemind_rendezvous-0.1.1a2-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
327972ab59d5889ebff175da2bb6eb9a1a688b11d34808a4e57a87e765929707
|
|
| MD5 |
67114fcddc4160b954d51ed566fcfd91
|
|
| BLAKE2b-256 |
a952b34c56f4cf85a02320338b7997505d80e3512a7278387b1ebd6ad9b72e2b
|