v1 public beta

A workspace you actually own.
Real-time. Offline-first. Open source.
Docs, kanbans, calendars — one shape.
A
B
Chat
Message…
Backing the build

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.

Open by design — the TypeScript SDK is MIT today; the Rust server source and provider open up next. No open-core trap.
CouShell is the optional app on top. Buying it funds full-time work on the open core.
Nothing essential is paywalled. The platform stands on its own — free, and built to stay that way.
The build≈ 6 months · every day
JanFebMarAprMayJun
Abracadabra and CouShell — every single day
LessMore
Realtime database

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.

One Rust binary, ~14 MB — Raspberry Pi, Fly.io, or beside your Postgres
Live cursors, presence and CRDT merges in under a millisecond
SQLite for a small team, Postgres for a company — same protocol
MCP clients join as real users, under the same permissions you have
Passkey login, six roles, every upload deduped by SHA-256
REST + WebSocket built in, 34 hook points. MIT, no open-core trap
0documents
0users
0msp99 latency
0ops/s
Model Context Protocol

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.

Model Context Protocol -- open standard by Anthropic
Full document tree: read, write, create, move, organize
Chat integration: agents respond in document channels
Same permission model: agents get a role like any user
Works with your AI coding agent, your terminal, or any MCP client
Developer Tools

Build Your Own Shell

Framework-agnostic TypeScript SDK. First-class Nuxt module. MCP server for AI agent integration.

@abraca/dabra

Framework-agnostic. Works with React, Vue, Svelte, or vanilla JS.

import { createClient } from '@abraca/dabra'
const client = createClient({ url: 'wss://...' })
const doc = client.getDoc('my-doc')
doc.on('update', (update) => { ... })
@abraca/nuxt

100% compatible with CouShell. Build your own Shell.

// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@abraca/nuxt'],
abracadabra: {
url: 'wss://...'
}
})
@abraca/mcp

MCP server for AI agents. Your AI coding agent, your terminal, and any MCP client.

// .mcp.json
{
"mcpServers": {
"abracadabra": {
"command": "npx",
"args": ["@abraca/mcp"]
}
}
}
The rest of the platform

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.

Ready to own your workspace?

Free. Open source. No account required to try.
Download for your OS