Files
modules/state-crdts/hyper-p2p-crdt-grow-only-set
Raven ScottandCursor 38e30b63a1 Expand network, encoding, observability, routing, supercomputer, and CRDT APIs.
Adds snapshot() and batch helpers across network discovery/stack/transport, encoding-wire, observability, routing-advanced, supercomputer, state-crdts, scheduling-queues, and session-bridge modules.

Co-authored-by: Cursor <[email protected]>
2026-05-21 04:03:45 -04:00
..
2026-05-20 23:36:32 -04:00
2026-05-20 23:36:32 -04:00
2026-05-21 02:00:00 -04:00
2026-05-21 00:07:44 -04:00
2026-05-20 21:57:50 -04:00
2026-05-21 02:00:00 -04:00
2026-05-20 23:36:32 -04:00

hyper-p2p-crdt-grow-only-set

State CRDT module: a grow-only set replicated over Hyperswarm + Protomux gossip.

Category: State CRDTs

Composes with: hyper-p2p-crdt-version-vector, hyper-p2p-reactive-state, hyper-p2p-presence

Protocol: crdt-grow-only-set/v1

When to use

  • Tag lists, membership rosters, or allowlists that only grow (no removals).
  • Eventual consistency across peers on a shared topic without a central server.
  • Building blocks for 2P-set or higher-level CRDTs.

When not to use

  • Sets that must support removal (use hyper-p2p-crdt-two-phase-set).
  • Strong ordering or numeric aggregation (use counters or RGA text).
  • Single-process state with no P2P (skip topic / ready()).

Quick start

const { HyperP2PCrdtGrowOnlySet } = require('hyper-p2p-crdt-grow-only-set')
const topic = process.argv[2] // 64-char hex or string hashed to topic
const set = new HyperP2PCrdtGrowOnlySet({ topic })
await set.ready()
set.add('peer-1')
console.log(set.values(), set.has('peer-1'))
await set.close()

Docs

Test

cd modules/state-crdts/hyper-p2p-crdt-grow-only-set
npm install && npm test
bare examples/basic.js
bare examples/basic.js <topic>