Skip to content

ECHO

A peer-to-peer graph database for TypeScript, local-first and synced between peers.

ECHO, the Eventually Consistent Hierarchical Object store, is a peer-to-peer graph database for TypeScript.

  • Peers replicate data with CRDTs. There is no central authority: the data lives with the clients.
  • Peers connect to each other over WebRTC.
  • Several writers can change the same data at once, including structured objects and collaborative text.
  • A peer can write while offline. Its changes merge when it rejoins the network.

Data lives in spaces, and each unit of data is an object. Why ECHO? makes the case for this design.

DXOS is an open source framework for real-time, collaborative apps that keep their data on the client and sync it peer to peer. ECHO is one of its parts:

  • ECHO stores and replicates the data.
  • HALO gives each user an identity, links their devices and controls who can join a space.
  • MESH is the networking that ECHO and HALO use to reach peers.
  • EDGE runs web services on Cloudflare Workers for sync, backup and compute.
  • PLEX builds apps from plugins and capabilities. Composer, our local-first workspace, is built on it.

The SDK is under active development, and right now its features follow what Composer needs. Support for other uses is limited, so suggestions and contributions that line up with Composer get priority. Feedback goes to GitHub or Discord.

  • Learn builds one app step by step, from Installation to Sharing a space:
    1. Install @dxos/client and create a client.
    2. Set up an identity with HALO.
    3. Create or join a space.
    4. Add, change and query objects.
  • Core concepts describe one idea each, for a reader who has finished Learn.
  • Guides cover one @dxos/echo namespace per page, such as Filter, then the frameworks, such as React.

Each concept page states what ECHO guarantees, and each claim cites an item in the ECHO spec.