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:

  1. Write to the local copy immediately (no network round-trip)
  2. Sync to the server in the background
  3. Merge with anyone else's changes via CRDT semantics
  4. 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.