Build your release as usual.
Package the app and its manifest into a Hyperdrive. Its key is the stable address your users and peers will keep opening.
app + manifest → release key
Publish once from the peer-to-peer stack you already use. PearBrowser makes the release discoverable; HiveRelay confirms independent replicas so the same app key can stay reachable after you disconnect.
No permanent origin to babysit. The publisher can leave only after a relay accepts and verifies replication, and availability still depends on a reachable replica. Public releases may remain readable; configured sealed or P2P-only paths encrypt client-side and keep the data key away from relays.
If you can package a Hyperdrive release, you already understand the hard part. HiveRelay adds discovery, replication confirmation, and a way to verify the handoff after your local process is gone.
Package the app and its manifest into a Hyperdrive. Its key is the stable address your users and peers will keep opening.
app + manifest → release key
Add the release to a PearBrowser catalogue for discovery and ask independent relays to replicate it. The flow completes only after an accepted relay confirms replication.
catalogue + confirmed pin
Close the laptop. Readers use the same key; reachable verified replicas keep seeding the release over Hyperswarm.
same key → reachable replica
Keep P2P delivery and, when you want it, add an HTTPS bridge for a normal browser URL.
Encrypt client-side and keep it off the public gateway. Relays handle ciphertext; the app retains its data key. Protocol metadata still exists.
Serverless for the publisher does not mean server-free: availability depends on a verified replica remaining reachable. Archive-tier repair is optional, policy-driven, and comes later.
Start with the PearBrowser catalogue and publish flow, then follow the release through confirmed replication, public versus sealed delivery, and the operator dashboard. Optional OutboxLog comes last—because it is an app feature, not a prerequisite for getting online.
The flow: package a Hyperdrive, add it to a catalogue, request a pin, and wait for an accepted relay to confirm replication. Then choose normal public delivery with an optional HTTPS bridge or a sealed P2P-only posture. Experimental OutboxLog is a later, opt-in service for namespaced signed updates and catch-up.
Once the flow is familiar, the tagline stops being four new ideas at once. Each word describes a property you can inspect in the protocol, exercise in code, or observe in a running relay.
After a verified handoff, the publisher can go offline while reachable independent replicas continue seeding the release.
Run the handoff →Signed intents, receipts, commits, anchor proofs, and witness observations form a trail a client can verify rather than merely trust.
Inspect the guarantees →In configured blind mode, app data is encrypted before replication. Protocol and routing metadata remain visible, but the app keeps the key needed to read the body.
Read the threat model →Relays store, seed, and serve published Hyperdrives over Hyperswarm while they remain reachable; services are optional extras, not part of the basic delivery path.
See what runs →Precise boundaries: “serverless” removes the publisher-operated origin; it does not make computers disappear or promise perpetual uptime. “Blind” describes configured blind or P2P-only custody paths, not public apps that intentionally publish readable data.
The protocol turns “the relay has it” into signed state transitions, then gives clients and witnesses the material to challenge that claim.
For configured blind custody, the publisher signs an intent over ciphertext identifiers, a retention window, and the required replica policy. Known plaintext fields are rejected before the protocol can proceed.
Relays accept the encrypted material and sign receipts. Custody commits only after the requested quorum is present, so logical source-retired state follows evidence instead of hope.
Fresh anchor proofs and custody possession proofs test current blind-custody state; witness tombstones record observed post-expiry behavior. They provide evidence of non-serving state, not proof that bytes were erased.
The always-on outcome comes from a compact delivery path. Stronger custody, archive repair, witnesses, and app services remain explicit additions—not hidden requirements.
The release key remains the app's stable P2P address.
A discovery record helps readers find that same key.
Independent relays copy and seed the release over Hyperswarm.
The handoff completes only after accepted replication verifies.
Optional by design: configured blind custody adds signed ciphertext handoff; archive tier can add policy-driven repair; app services load only when selected. None changes the basic catalogue-and-pin path.
The basic publish-and-pin flow does not require these. Everything below is an opt-in service your app can call over RPC, grouped by readiness so a first release does not have to absorb the whole catalog.
identity, storage, and schema are core built-ins. vrf provides production-ready verifiable randomness when its input is bound to immutable or external state.
The publish-and-pin path remains useful even when no app service is enabled.
storage-proof samples retrievable metadata blocks for non-blind drives; it does not cover blobs or prove sealed replication. Blind or redacted drives return NOT_SEEDED so the proof cannot become a possession oracle.
shard-store is an optional content-addressed path for custody shards.
ai, zk, sla, arbitration, notify, outboxlog, and poker are experimental—not production-ready defaults.
OutboxLog change events prompt catch-up; they are not app truth, and an append acknowledgement is not a custody receipt.
Services are opt-in and secure by default. Relay-only profiles run the availability and custody kernel without loading app plugins. Turn on only what an app needs, per relay:
// config.json — or the dashboard Services tab { "enableServices": true, "plugins": ["storage", "identity", "schema", "vrf"] }
Anonymous swarm peers receive the anonymous role and cannot reach admin routes unless explicitly allowlisted. Experimental bundles may pull declared dependencies; review the immutable source-tag documentation before enabling them.
These are concrete protocol patterns documented in the current v0.24.3 release, published as an immutable GitHub source tag with zero attached assets—not generic “could be used for” categories.
Release boundary: HiveRelay's current product and source release is v0.24.3, with v0.25 in development. v0.24.3 is not published as npm/latest or a downloadable appliance; the app-agnostic blind-substrate replacement remains unreleased and is not described here as shipped.
Send an encrypted blob to a quorum of relays and get signed receipts back. Recipients can verify custody before they unseal. The TTL is signed protocol state; after it passes, witnesses record whether a relay is observed serving or non-serving. That evidence does not prove forensic deletion.
Encrypt content with a random key, store the ciphertext anywhere, then disperse the key as k-of-n self-verifying blind shards across independent relays. No single operator — and no k-1 colluding — can produce the plaintext; any k shards rebuild it at the reader's edge.
Explicitly mark a drive archive tier (durability: 1) and AutoHeal can recruit replicas according to configured operator, region, and buffer thresholds. For a non-blind drive, proveSeeded can show that randomly sampled metadata blocks were retrievable from a named relay at a pinned head and nonce. It does not cover blobs or prove sealed replication.
Given a fixed input, RFC 9381 ECVRF output and its selection result can be verified independently. Bind that input to immutable or external multi-party state to prevent key-holder grinding. The optional chained beacon publishes rounds the operator cannot grind or skip once the chain begins.
Apps declare privacyTier: 'p2p-only' and the relay handles only opaque ciphertext—catalogs are redacted, the gateway returns 403, and peers receive the data key out of band. Signed custody possession proofs attest to the opaque commitment; public storage-proof is deliberately disabled for blind/redacted drives.
The experimental pattern behind Peerit: an operator registers the app namespace and caps, each writer signs updates with its own app key, and outboxlog exposes current app-defined rows plus change markers that prompt catch-up. In a blind namespace, only client-sealed bodies pass; key exchange and recipient trust stay with the app.
Both models run on real computers. The difference is what the publisher must operate, what the host can see, and which claims a client can verify independently.
Source example: this API shape is pinned to the current immutable v0.24.3 release. It is not published to npm; the unqualified client package resolved to npm latest 0.20.2 at evidence capture. HiveRelay v0.25 is in development.
import { HiveRelayClient } from 'p2p-hiverelay-client' const app = new HiveRelayClient('./storage') await app.start() const drive = await app.publish('./my-app', { seed: false }) const accepted = await app.seed(drive.key, { replicas: 3 }) if (accepted.length < 3) throw new Error('Replica target was not accepted') for (const { pubkey } of app.getSeedStatus(drive.key).relays) { const check = await app.verifySeeded(drive.key, { relay: pubkey }) if (!check.complete) throw new Error(`Relay ${pubkey} did not verify`) } await app.destroy() // reachable, verified replicas can keep seeding
const intent = await app.publishCustodyIntent(relayUrl, { blindContentId: hashHex(payload), ciphertextRoot: yourCiphertextRoot, requiredReplicas: 3, retainUntil: Date.now() + 24 * 60 * 60_000 }, { apiKey }) // Wait for quorum, sign commit, retire authority. // Recipients can verify the chain later, without trusting you.
Three roles, mix and match. Run all three, run one, or run a witness-only node.
| Role | What you do | What you need |
|---|---|---|
| Custody Relay | Store encrypted ciphertext, sign receipts and proofs. | Storage |
| Witness | Probe other relays at expiry, sign tombstones. | A small VPS — no storage |
| Persistent Seeder | Host archive replicas; policy-driven repair manages diversity. | Storage + uptime |
npm install -g p2p-hiverelay p2p-hiverelay setup
The trust stack includes unit and end-to-end integration suites, including a multi-relay Hyperswarm testnet that exercises the custody pipeline with real relay processes.
An analytic model explores failure scenarios while a behavioral simulator drives the availability-repair scheduler against a deterministic in-memory network. Both are designed to rerun when behavior changes.
The protocol, SDK, and reference implementation are open. Alternative implementations are welcome — the protocol is independent of any specific implementation.
The whitepaper is explicit: on commodity hardware, cryptography cannot prove a relay erased bytes. The protocol delivers logical source retirement and observed non-serving state, not forensic erasure. That boundary is documented, not hidden.
Illustrative dashboard view. The operator interface surfaces replica policy, custody receipts, anchor proofs, and witness events from the relay's own state feed. Cryptographic artifacts remain the evidence of record.
Everything is open and specified — every claim on this page traces back to a doc. Apache 2.0, all on GitHub.
The whitepaper—the protocol for custody handoff, quorum receipts, retention state, and observed non-serving evidence.
docs/ATOMIC-BLIND-CUSTODY.mdA component-by-component tour of everything a relay runs once it's live.
docs/WHATS-IN-THE-RELAY.mdWire formats, message types, and the Protomux channel encodings.
docs/PROTOCOL-SPEC.mdWhat's cryptographically proven — and, honestly, what isn't.
docs/CRYPTO-GUARANTEES.mdAttacker assumptions and the mitigations that answer each one.
docs/THREAT-MODEL.mdThe services layer and every opt-in builtin capability.
docs/SERVICES.mdThe SDK, publishing, and wiring HiveRelay into your app.
docs/DEVELOPER.mdA working custody handoff, start to finish, in about ten minutes.
docs/TUTORIAL-CUSTODY-QUICKSTART.mdWiring HiveRelay into Pear and Bare runtimes.
docs/PEAR-INTEGRATION.md