Select Page

Live Coding Without a Server: Real-Time Collaborative Editing on Swarm

Our new open-source library lets people edit the same document at the same time, cursors and all, with no collaboration server in the middle. It is on npm today, and its first integration, a working proposal for Remix IDE, is open for review.

Real-time collaboration has become the default way we work. Several people edit documents, notes, specs and code at once, and each of them sees the others’ changes and cursors as they happen. But the tools that make this feel effortless usually route every keystroke through someone else’s server, one that sees your content, decides who gets in, and can go down or be switched off.

At Solar Punk, we asked a simple question: can people co-edit live, with each other’s cursors on screen, using Swarm instead of a central server?

It can. Today we’re introducing swarm-collaborative-docs, an open-source library for real-time collaborative editing over Swarm, published on npm as @solarpunkltd/swarm-collaborative-docs. It works with any shared text, and its first home is Remix IDE, the browser-based IDE where many Ethereum developers write their first contract. We’ve opened a working proposal to bring live, multi-user smart contract editing into Remix.

Why Collaboration Belongs on Swarm

This work is part of our ongoing collaboration with the Remix team on bringing Swarm into the IDE. The first phase was about public data: using Swarm as a censorship-resistant place to publish and host. The second phase is about working together: several people editing the same files in real time, seeing who is where, without their edits clashing.

Most collaborative editors rely on a central server to put everyone’s edits in order. That is exactly the dependency we wanted to remove. Instead, the library uses a CRDT (a conflict-free replicated data type): each copy of the document merges everyone’s edits by itself, and all copies end up the same. No referee is needed, and that is what makes a peer-to-peer design possible.

How It Works, in Plain Terms

The library splits the job between a memory and a fast lane:

  • One shared document. Everyone in a session edits the same document. The library builds it on Yjs, a widely used open-source CRDT library, so edits made at the same moment merge cleanly.
  • Swarm as the memory. Each participant saves the document to their own Swarm feed, a signed, updatable pointer that only its owner can write to. Anyone who joins late or comes back online catches up from there.
  • WebRTC as the fast lane. While people are online, edits and cursor movements flow straight between their browsers over WebRTC, the browser’s built-in peer-to-peer connection.
swarm collaborative editing architecture

Only people with the invite link can find a room. The link carries a secret key in the part that browsers never send to a server, so there is no room name to guess and no central registry to look it up in. And because every participant writes only to feeds signed with their own key, nobody can alter what someone else has published.

Two Ways to Connect

Before two browsers can talk directly, they have to find each other. The library offers two ways to do that. In both, the document itself lives in Swarm feeds.

  • Via a signaling server. A lightweight relay introduces the peers, and connecting is fast. Gateway operators could run the relay next to their Bee nodes. The library encrypts the introductions with a key derived from the room’s secret, so the relay can’t read them.
  • Over Swarm, with no server at all. The introductions also travel through Swarm feeds. There is nothing extra to run, at the cost of speed: the first join to a brand-new room can take a minute or two.
swarm collaborative editing

Live Collaboration Inside Remix

The Remix integration is open for review as PR #7780. Remix’s editor is built on Monaco, the editor that powers VS Code, and Yjs plugs straight into it. Every keystroke becomes a shared update, and each collaborator’s cursor and selection appear live in your editor.

Getting started takes two settings in Remix’s Collaborate window: the address of your Bee node and the ID of a postage stamp, which pays for storage on Swarm. The person who creates a room shares their workspace. Everyone who joins gets a separate workspace for that room, so their own projects are never touched.

Where It Stands Today

This is a working proposal. We have tested it end to end with two peers, and the Remix team is now reviewing it. It is not merged yet, and it may change along the way. A few limits are worth knowing up front:

  • Built for small groups. Think pair programming and small teams, not large rooms.
  • The room wins over offline edits. If you change shared files outside a session, the room’s version replaces your changes when you rejoin.
  • Content is not encrypted yet. Only the introductions through a signaling server are. Anyone holding the invite link can read the document, as can the Bee node or gateway serving it, so treat the link like a key.

Next on our list are Swarm-native answers to these limits: encrypted content, per-person access through Swarm’s Access Control Trie, and wallet-based identity. And Remix is the first integration, not the only one: any editor with a Yjs binding can use the same engine, from shared notes and documents to collaborative dapps.

See It Live at Devcon 8

We’ll demo live collaborative editing on Swarm at Devcon 8 in Mumbai, 3–6 November 2026. Come find the Solar Punk team, open a room with us, and watch your cursor appear on our screen.

Get Involved

  • Try the library: install it from npm and explore the repository and demo app.
  • Review the Remix proposal: test and comment on PR #7780.
  • Share feedback: open an issue or pull request on GitHub, or join the conversation on the Swarm Discord.
  • Building something collaborative? Get in touch. We’d love to help you bring it to Swarm.

Real-time collaboration, without the middleman. We’re building it right now, on Swarm.