Real-time editing.

Two people in one notebook, no merge conflicts. Presence in the header, cursors per cell, soft locks while someone's mid-edit.

Presence

Anyone with access who has the notebook open shows up in the presence stack at the top of the editor. Each collaborator gets a color and an avatar. Hover for their name; click to jump to wherever their cursor is.

Presence updates within a second over WebSocket. When someone closes the notebook, they fade from the stack after a short heartbeat timeout — useful for spotting a stale session.

The notebook header with a stack of three avatars, each colored, one with a green dot indicating activity./docs-images/collaboration/presence.png
The presence stack lives in the notebook header.

Cursors & selections

  • Cursors — colored caret matching the collaborator's presence color, labeled with their initials, updates in real time per line and per character.
  • Selections — a translucent highlight in their color shows the range they've picked. Useful for "look at this" without screen sharing.
  • Focus — a soft outline around the cell they're actively editing.

Soft locks per cell

When someone starts editing a cell, Orchid puts a soft lock on it for everyone else. The cell turns read-only for other editors with a small "[name] is editing" banner. The lock releases on blur — they click somewhere else, the cell unlocks within a second.

Two consequences worth knowing:

  • No character-level CRDT inside a cell. By design — cell sources stay readable in git diffs and easy to merge by hand.
  • Different cells are independent. You can edit cell 1 while a collaborator edits cell 2, no contention, no waiting.
Two cells side by side: one being edited by 'AS' (locked for others), one editable by the viewer./docs-images/collaboration/soft-lock.png
Soft lock is per cell — other cells stay editable.
Note

The lock is cooperative — if someone's offline mid-edit, the lock times out after 30 seconds and the cell reopens. Their pending edits show as a proposal banner when they reconnect, like an agent proposal.

Running cells together

Cell runs are scoped to each person's kernel — when a collaborator runs a cell, their kernel runs it, not yours. The output you see in the notebook is the last saved output (the one in the YAML). Anyone running a cell broadcasts a small "running" badge so you can spot conflicts.

For shared, deterministic runs — "refresh the dashboard" — use auto-refresh schedules instead of asking teammates to coordinate.

The chat sidebar

Each project has a lightweight chat sidebar — quick messages between collaborators that don't need to be cell comments. Useful for "done with the cleanup, your turn" or "does this look right?"

Network & offline

Orchid sync runs over WebSocket on top of HTTPS. If your connection drops, the app keeps working locally — you edit, you run cells, you see outputs. On reconnect, your changes push and remote changes pull. Conflicting edits (two people editing the same cell while offline) surface as a proposal banner; pick the version you want or merge by hand.

Heads up

Real-time sync requires the project to be published. Local-only projects can still be opened by you on multiple machines, but cross-collaborator sync runs through the cloud.

Up next: Comments, Publishing, and Permissions. Back to the Collaboration overview.