finds.dev← search

// the find

amark/gun

★ 19,054 · JavaScript · NOASSERTION · updated Mar 2026

An open source cybersecurity protocol for syncing decentralized graph data.

GUN is a JavaScript graph database with built-in CRDT conflict resolution, P2P sync, and end-to-end encryption via its SEA module. It targets offline-first applications where data needs to sync across browsers, nodes, and relay peers without a central server. Been in production since 2014 with real usage, not vaporware.

Real CRDT implementation that handles concurrent writes across disconnected peers — the conflict resolution actually works and the distributed systems theory behind it is sound. Ships at ~9KB gzipped and runs identically in browser and Node.js with no code changes. SEA module bakes public-key cryptography directly into the graph model, so encrypted user data and auth are first-class rather than bolted on. The relay peer design means you can deploy a sync node without managing a database — your data lives in the graph, the relay just passes messages.

The README literally warns that tests write persistent state and subsequent runs will fail until you manually delete the DB — that's not a testing setup, that's a liability. No range queries, no secondary indexes, no conventional filtering; querying requires traversing the graph manually or pulling everything into memory and filtering client-side. Deletes are tombstones that keep syncing forever — data you remove is not actually gone, which makes GDPR compliance or any 'right to be forgotten' requirement genuinely painful. The topic tags include 'blockchain', 'metaverse', 'machine-learning', and 'big-data', none of which have anything to do with what this library does — that kind of keyword stuffing makes it harder to trust the project's claims about the things it actually does.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →