Collaboration
Multiplayer & Presence
Every entity in River is a CRDT (specifically, a Y.js document). Two people editing the same doc don't conflict. An agent writing to a doc you have open doesn't break your work. A teammate on a different continent and a background Job running on a GPU machine merge their changes automatically.
This is not collaboration "added to" the system. It is the data model.
What you actually see#
When more than one person is in the same entity at the same time:
- Cursor presence — colored cursors with each person's name
- Live typing — characters appear as they're typed by others
- Selection presence — see where teammates are highlighting or working
- Avatars — small headshots in the top-right of any open entity, showing who's there
In a Doc with you, your colleague, and an Agent all working at once, you see three colored cursors. The Agent's cursor moves like everyone else's.
What's local-first#
Every entity in your Dataspace is stored locally on your device first (in IndexedDB on the web, or on disk in the desktop app). Changes you make:
- Write to the local copy immediately (no network round-trip)
- Sync to the server in the background
- Merge with anyone else's changes via CRDT semantics
- Are durable even if the network drops mid-edit
This is what makes River fast in normal use, and what makes it work at all on a flaky connection.
Offline mode#
Disconnect entirely and you can keep working. Your edits queue up locally. When you reconnect, the system reconciles your local state with the server's — no conflicts, because CRDTs merge.
A common scenario: edit on the train, land in the office, watch your changes appear in your colleague's browser the moment you reconnect.
AI on the same stream#
The most distinctive thing about River's multiplayer is that AI agents are first-class participants. When an Agent writes to an entity:
- It uses the same Y.js CRDT layer humans do
- Its edits show up live in any Window that has the entity open
- Its cursor moves through the document like a human's would
- Its actions appear in Activity and the Event Stream on equal footing with human edits
This is what makes "AI as a peer" feel real instead of marketed.
What it works on#
Real-time multiplayer is on by default for:
- Pages, Notes, Docs (rich text)
- Sheets (with cell-level cursor presence)
- WorkflowCanvas (the visual graph editor)
- AppBuilder code editor
- Mail composer (multi-author drafts)
- Any Custom App that uses the v3 local-first architecture
Performance#
Hundreds of concurrent editors on the same doc work. Thousands of concurrent editors on different docs in the same Dataspace work. The system scales horizontally.
Tips#
- Multiplayer only feels powerful when it's multiplayer — invite a teammate to the same Doc and watch.
- For meetings and async work alike, drop the AI into the Doc with you. Type in one paragraph, ask the AI to write the next.
- If you ever see two people show up but their edits don't appear, reload the Window — websocket sync occasionally needs a kick.