// the find
earthstar-project/earthstar
Storage for private, distributed, offline-first applications.
Earthstar is a protocol and TypeScript library for building private, offline-first distributed apps where small groups sync data without a central server. It handles document storage, binary attachments, and peer discovery across browser, Deno, and Node. Think of it as a self-hosted, encrypted alternative to Firebase for apps where users own their data.
The sync protocol is genuinely well-thought-out — plum tree gossip, range-based set reconciliation, and thumbnail trees are real distributed systems techniques, not naive diffing. The driver abstraction is clean: swap IndexedDB for SQLite or memory without touching application code. Ephemeral documents with TTLs are a nice primitive that most storage libraries ignore. LAN peer discovery is built in and works without a server, which is rare.
v11/Willow is in beta on a separate branch with the main branch effectively in maintenance mode — you're either adopting an unstable rewrite or building on a protocol that's being superseded. The Node support is clearly second-class: polyfills required, crypto drivers need manual wiring, and the npm build is generated rather than native. The document model stores only text (8KB limit) with attachments as a bolted-on afterthought, which makes rich data structures awkward. At 914 stars and 26 forks, the community is tiny — real-world production deployments are essentially undocumented.