A b r a c a d a b r a
Ten years of CRDTs. Six months all-in.
I have been building on Yjs for about ten years. The last six months I have done almost nothing else — Abracadabra and CouShell, every single day, on my own.
One server. Every document, live.
The backend that makes the multiplayer real. It speaks documents, not rows — self-host the binary or let us run it for you.
Bring Your Own AI
Any Model Context Protocol client -- your AI coding agent, your terminal, an AI agent -- joins your workspace as a first-class participant. It reads your docs, writes content, and chats with your team.
Build Your Own Shell
Framework-agnostic TypeScript SDK. First-class Nuxt module. MCP server for AI agent integration.
Framework-agnostic. Works with React, Vue, Svelte, or vanilla JS.
100% compatible with CouShell. Build your own Shell.
MCP server for AI agents. Your AI coding agent, your terminal, and any MCP client.
More tricks up the sleeve.
The headline pieces each have a section above. These are the powers you discover later — the ones that make it hard to leave.
Spaces & federation
Workspaces that span servers. Pull a single doc — or a whole space — from any peer you trust.
Extensions & hooks
34 hook points and Wasm extensions. Reshape the server to your workflow without forking it.
Encryption & roles
Per-recipient encryption and six roles, Observer to Owner — enforced server-side, not in the client.
Offline-first
Edits land on-device first. Reconnect and the CRDTs converge — no conflicts, no lockouts.
No lock-in
Self-host the binary, or leave entirely. Your data exports clean, any time you want it.
Files, deduped
Every upload is content-addressed by SHA-256. Store a byte once, reference it everywhere.