finds.dev← search

// the find

anyproto/any-sync

★ 1,650 · Go · MIT · updated Jul 2026

An open-source protocol enabling high-performance, local-first, peer-to-peer, end-to-end encrypted collaborative apps.

any-sync is the core protocol library behind Anytype — a Go implementation of CRDT-based, E2E encrypted space synchronization over P2P. It handles the hard parts: DAG-structured change history with cryptographic signing on every node, ACL management, head reconciliation via ldiff, and multiplexed sync over drpc. This is a protocol library, not a standalone tool; you wire it together with four separate node types to run a network.

- Production-proven: this actually runs Anytype at scale, so the CRDT and DAG conflict resolution aren't theoretical — they've been stress-tested with real collaborative workloads across many devices.

- Performance choices are deliberate: vtproto for faster protobuf serialization, drpc instead of gRPC, and an ldiff/headsync reconciliation approach that avoids full state transfer when peers reconnect.

- The ACL design is genuinely good — permissions are stored as a cryptographically-signed log inside the same DAG structure as data, so access control can't be silently tampered with by a sync provider.

- Test coverage is thorough and structured — mock generation per package, integration test harnesses in synctest/, and dedicated test suites for the ACL state machine.

- Running your own network means operating four separate node services (sync, file, consensus, coordinator), each in its own repo with its own deployment story. The README doesn't acknowledge this complexity at all.

- The coordinator node is a quiet centralization point — it manages network configuration, which means 'permissionless' only applies once you're in; someone still controls the coordinator.

- Documentation for using this as a library is nearly absent. The README points to sync.any.org for the protocol overview and that's basically it — no API guide, no worked example of wiring up a custom app.

- The consensus node exists specifically for ACL change ordering, which introduces a hard dependency on a separate service for something as basic as adding a member to a space — offline ACL changes can't be finalized without it.

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 →