Write Together: Real-Time Collaboration on Longform
Disclosure: Claude Opus 4.6 contributed heavily to this document from within my IDE (and writes lots of the code for Longform)
Longform now supports real-time collaborative editing. You can invite anyone on Bluesky to co-write, review, or read your drafts before publishing — all synced live, Google Docs–style.
How It Works
Every draft on Longform is backed by a Yjs document — the same conflict-free replicated data type (CRDT) technology that powers collaborative editors in tools like Notion and Figma. When two people edit the same paragraph at the same time, their changes merge automatically without conflicts.
Here's the flow:
1. Create a draft from your My Work page
2. Click Share in the top-right corner of the editor
3. Enter a Bluesky handle or DID and choose a permission level
4. Share the URL — your collaborator opens it and they're in
Changes sync instantly. You'll see each other's cursors in real time.
Permission Levels
When you share a document, you choose one of two access levels:
- Full read/write access. They can type, delete, restructure — everything you can do except publish.
- Or read-only access. They see the document and live changes, but can't modify anything. Great for reviewers.
Only the document owner can publish. Only the owner can manage who has access.
Public Links
There's also a "Anyone with the link can view" toggle. When enabled, anyone with the document URL can read the draft — no Bluesky account required. Useful for sharing a preview link on social media or in a group chat before you hit publish.
When disabled, only explicitly invited collaborators can access the document.
What Happens When You Publish
When you're ready, hit Publish. The document is serialized into an AT Protocol record (site.standard.document with leaflet blocks as the content) and written to your Personal Data Server. It becomes a permanent, portable part of your data — owned by you, readable by any app that speaks AT Protocol.
Your collaborators' contributions are part of the published document, but the record lives under your DID. It's your post, your data.
After publishing, you can continue editing by clicking Edit on the published article. Updates are written back to your PDS as a new version of the same record.
Under the Hood
For the technically curious:
• Yjs + Hocuspocus handles the real-time sync layer over WebSockets
• Authentication is tied to your Bluesky OAuth session — the collaboration server verifies your identity before granting access
• Access control is stored server-side, checked on every WebSocket connection. So is the draft data.
• Publishing converts the Tiptap/Yjs document tree into Leaflet blocks with byte-indexed rich text facets.
Try It
Next time you're working on a longform piece, consider pulling in a co-author or editor. Create a draft, click Share, and send them the link. It's that simple.
Longform is an open-source publishing platform built on the AT Protocol. All your content is portable and owned by you.
Discussion in the ATmosphere