Introduction
Introduction
DXOS provides developers with everything they need to build real-time, collaborative apps which run entirely on the client, and communicate peer-to-peer, without servers.
DXOS applications work offline, share state instantly when online, and leave end-users in control of their data and privacy.
Read more motivation.
Note
DXOS is under development and will continue to change frequently.
Your feedback is most welcome on GitHub and Discord.
See our Contribution Guide about contributing code.
DXOS is a group of technologies that work together:
- ECHO - Database and reactive state container for offline-first, real-time, collaborative apps.
- HALO - Identity for decentralized apps.
- KUBE - Self-contained infrastructure for hosting and operating decentralized apps.
Compare DXOS applications to client-server web applications:
Client-Server Web Apps | DXOS Apps | |
---|---|---|
How code is served | served by web servers | served by web servers |
How data is stored | on the server | on the client |
How data is exchanged | client to server via HTTP or Web Sockets | peer to peer via WebRTC |
How identity is established | servers issue session tokens after validating credentials with methods like OAuth | clients generate their own private/public key pairs and use them to sign messages in the database. |
ECHO
ECHO (The Eventually Consistent Hierarhical Object store) is a peer-to-peer graph database written in TypeScript. ECHO connects to other peers directly via WebRTC, and continuously replicates data with those peers using the Automerge CRDT. ECHO supports multiple concurrent writers collaborating on arbitrary objects and text. Clients may perform writes while offline, reconciling with the swarm when returning online.
Learn more about ECHO.
HALO
Establishing user identity in a non-authoritative internet is hard. Every peer has to decide how to trust each other. HALO is a set of components and protocols for decentralized identity and access control designed around privacy, security, and collaboration requirements.
Learn more about HALO.
KUBE
Running an application requires a lot of supporting technology: process monitoring, observability, deployment management, DNS, SSL, ..., etc. KUBE is a compact, self-contained binary that runs anywhere and provides essential hosting services for applications.
Learn more about KUBE.