Features
Collaborative sessions
Share a live editing session with a teammate over WebRTC — no media uploads, only operation descriptions stream peer-to-peer.
The editor includes a peer-to-peer collaborative session — share an ID with a teammate and edits stream directly between your browsers over WebRTC. Pixel data never touches a server. Useful for live design review, paired editing, or sending a quick "watch what I do" demo.
Starting a session (host)
- Open the Properties sidebar and expand 👥 Collaborative Session.
- Click 🟢 Start a new session.
- A session ID is generated (e.g.
nss-ab12cd-3xy7). - Click Copy and share the ID with your collaborator.
- The status pill goes from
idle→connecting→connectedas soon as the other browser joins.
Joining a session (guest)
- Open the Collaborative Session panel in your own editor.
- Paste the session ID into the input field.
- Click Join.
- The status pill goes from
idle→connecting→connected.
What syncs
Every editor operation broadcast over the WebRTC DataChannel:
- Background panel changes
- Filter preset + intensity
- Brightness / contrast / saturation / temperature
- Lifestyle scene selection
- Layer add / delete / reorder / opacity / visibility
- Brush mode + size
What does not sync: raw pixel data, source images, mask buffers. Only the description of each operation travels over the wire ("set filter to cinematic at 70 %", "place product on marble background", "add text layer 'Sale'"). Each peer's editor re-applies the operation locally on its own canvas.
This means the bandwidth cost is tiny — a few hundred bytes per edit — and private images stay on each device.
Activity log
The panel shows the last 20 events: incoming peer operations, connection state changes, errors. Useful for debugging if something looks out of sync.
Disconnecting
Click Disconnect in the active session panel. The DataChannel closes
cleanly; both peers go back to idle.
Privacy details
- Signaling: a tiny Vercel Serverless endpoint at
/api/collab-signalexchanges WebRTC offer / answer / ICE candidate messages so the two peers can find each other. It does not see or proxy any media. - STUN:
stun.l.google.com:19302(Google's public STUN) is used to discover each peer's public IP for the connection setup. - Data: every byte after connection setup is direct peer-to-peer over WebRTC, encrypted by DTLS.
Browser support
Requires a browser with WebRTC support (every modern desktop + mobile browser). Tested in Chrome / Edge / Firefox / Safari.
Limits
V1 is turn-based with last-write-wins conflict resolution. Two peers editing the same property simultaneously will see whichever message arrives last. Full operational-transform / CRDT is V2.
Pixel data still doesn't sync — if you want your teammate to see the same
input image, send them the file first (or share a .nss-project file).