Real-time collaborative coding, powered by CRDTs

Code together,
conflict-free

Open a room, share the link, and start coding together with live cursors, dependable sync, and offline resilience.

Free and open source. No account required.

Immediate
Shared edits appear in real time through a collaboration loop built for active coding.
Conflict-free
Yjs CRDTs keep concurrent edits convergent without manual resolution.
Visible presence
Live cursors, user labels, and simple room sharing keep every collaborator in context.

Two cursors,
one editor

Watch Alice and Bob edit the same file with live presence, real-time sync, and conflict-free convergence.

A
Alice
B
Bob
+ share link
Room info
roomabc-123-xyz
languageTypeScript
connected2 live
sync modelCRDT + WS
code duo — collab.ts
collab.ts
room.ts
types.ts
1
2
3
4
5
6
7
8
9
10
11
import { Doc } from "yjs";
import { WebsocketProvider } from "y-websocket";
 
const doc = new Doc();
const provider = new WebsocketProvider(
"wss://code-duo.dev", "room-1", doc);
 
// Real-time, conflict-free
const text = doc.getText("editor");
text.observe(() => {
console.log(text.toString());
});
Connected2 users
TypeScriptUTF-8LF
CRDT
Conflict-free model
15+
Supported languages
SQLite
Persistent snapshots
IndexedDB
Offline local cache

Built for serious
collaboration

Real-Time Sync
Shared edits propagate in real time, so collaborators stay in flow without refreshes or manual saves.
Room-based collaboration
Live Cursors
See where collaborators are working with color-coded cursors, labels, and shared presence.
Per-user colors
Offline-First
Keep working when the network drops. Local changes persist and sync back when the connection returns.
IndexedDB-backed
Zero Conflicts
Yjs CRDTs keep concurrent edits convergent, so the room stays consistent under real collaboration.
Deterministic merge
Open by Default
Open source and self-hostable, built on collaboration primitives developers can inspect and extend.
Open source
Monaco Editor
The VS Code editing engine in the browser, with familiar shortcuts and language tooling.
15+ languages

Open a room in three steps

01
02
03
Create a room
Open a room in one click. Choose a language, name it if you want, and start in seconds.
$ curl -X POST /api/rooms
→ { "id": "a1b2c3d4" }
Share the link
Share the room URL with a collaborator. No account required for the first session.
code-duo.dev/room/a1b2c3d4
✓ Link copied to clipboard
Code together
Live cursors appear immediately. Edits converge via CRDTs, so everyone stays in sync.
// 2 users connected
Alice: line 14...
Bob: line 27...

Ready to open
a room?

Open a room in seconds, share the link, and start collaborating in a browser-based editor built for serious technical work.

View on GitHub

Free and open source. No account required.