Collaboration¶
Multiple people can work in the same Doable project simultaneously β like Google Docs or Figma.
Inviting collaborators¶
Three options:
- Add to the workspace β Workspace Settings β Members β Invite. They join your workspace and see all workspace-visible projects.
- Share a single project β Editor β Share β Invite by email. Adds them to the workspace as a Viewer (or Member, your choice) and grants project access.
- Anyone-with-the-link β Editor β Share β Toggle. Generates a link with read or edit scope. Useful for client previews.
What you see during collaboration¶
- Cursor pills β each user gets a colored cursor in the code editor with their name.
- Selection highlights β see what your teammate is selecting.
- Active-now badges β the workspace dashboard shows which projects have someone in them.
- Chat is shared β every member of the chat sees streaming AI responses live. Useful for "look at this" moments.
Conflict resolution¶
Doable uses Yjs CRDTs for collaborative editing β every operation is conflict-free by construction. Two users typing at the same position get a deterministic, well-defined merge. No locks, no "someone else is editing" modal.
The AI counts as a third collaborator. If you and the AI both touch the same lines simultaneously, the merge is well-defined (you'll see your characters interleaved) β extremely rare in practice.
Live AI updates¶
When the agent edits a file, every collaborator sees the change immediately. This works because:
- The AI writes the file via the API.
- The API broadcasts the new content into the project's Yjs room.
- Every connected editor receives it and updates Monaco.
So when you ask the agent to βrename Foo to Barβ, your teammates watch the rename happen across files in real time.
Presence-aware features¶
- The chat shows a "Sara is typingβ¦" indicator.
- The history view shows who made which commit.
- The audit log records who triggered which AI action.
Disconnecting & reconnecting¶
Network drops are seamless:
- The editor switches to offline mode (a discrete pill at the top).
- You keep editing locally.
- When the connection comes back, your edits sync and the room state catches up.
Privacy considerations¶
If your project has visibility = public, anyone with the URL can view the live preview, but the editor is still gated by workspace membership unless you've explicitly shared the link.
Disabling collaboration¶
If you only ever expect single-user use of your Doable instance:
- Skip running the
services/wsserver. - Set
NEXT_PUBLIC_WS_URL=to empty. - The editor falls back to single-player mode.
For multi-user instances, services/ws is required.