Files
modules/state-crdts/hyper-p2p-crdt-grow-only-set
..
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>