Real-time collaboration
Edit a page together, live — presence, shared cursors of change, and a lightweight collaboration service that keeps Git byte-exact.
Edit a page together, live — presence, shared cursors of change, and a lightweight collaboration service that keeps Git byte-exact.
The editor is collaborative: two people (or two of your own tabs) can open the same page and edit it at once, in either Visual or Source mode, and see each other’s changes as they happen. A small presence indicator in the editor toolbar shows who else is on the page, and in both Visual and Source mode you see each collaborator’s live cursor — coloured and labelled with their name — moving as they type.
Collaboration is a strict enhancement: two of your own tabs always stay in sync, and if live multiplayer is unavailable on a deployment, editing behaves exactly as it does solo. Nothing about it can break editing or lose work.
The shared value for a page is its raw MDX text — the whole file, character for character. Both editor modes are views onto that one text:
{expressions}, imports — is carried verbatim, so a collaborator typing next to it can’t corrupt
it.Two tabs or windows in the same browser sync instantly with zero setup, over a built-in channel. Useful for editing a page while previewing it beside itself.
Two people on different devices edit the same page together, with presence and live cursors. This runs over a small always-on service; where it’s available the editor connects to it by itself, and where it isn’t the editor quietly falls back to same-browser sync.
Either way, your edits still autosave to the page’s draft on your branch, and nothing is live until you publish — the same draft-and-publish flow as solo editing. The shared document is just live coordination; the draft (and Git) remains the record.
Being on the same page isn’t enough to edit it together. Before connecting anyone, the app runs the same permission check as every other editor action — are you allowed to edit this site? — and then scopes the connection to exactly that page, on that branch, for a few minutes at a time. One editor can never join another site’s document, and a link to a live document is not a way in.
The service that relays your keystrokes never sees your login, your account, or your content: it passes changes between the people already authorized and holds nothing. Drafts are persisted by Papervine, not by it, so there’s no second copy of your docs anywhere.
Self-hosting? Multiplayer needs one small always-on service, because a serverless function can’t hold a WebSocket open. It’s a single container with no database — see Background services for running it. Leave it out and you keep same-browser sync.