Collaboration server
Seance
Seance is an open source real-time collaboration server for browser-based creative tools. Clients share live edits, cursors, and state over one WebSocket.
- Free
- MIT license
- WebSocket
- Self-hostable
Overview
Seance runs the online sessions in the Noise Factor apps. Clients join a session over a WebSocket and see each other's edits, cursors, state changes, and moderation events as they happen. The server owns all session state.
Frequent parameter changes travel on a last-write-wins lane. Text and tree edits travel on a server-serialized document lane with acknowledgements, stale-edit recovery, and snapshots. A zero-dependency browser SDK connects Handfish-based DSL editors.
Features
-
Shared sessions
Clients join ad hoc sessions and share document edits, cursors, and state in real time.
-
Two lanes
A last-write-wins lane for parameter changes and a server-serialized document lane for text and tree edits.
-
Server-authoritative
The server holds the session state, so every client converges on the same document.
-
Moderation
Session owners can kick, ban, lock, allow or refuse guests, and make users read-only. Moderation state persists.
-
Freeze and thaw
Empty sessions freeze to SQLite after a grace period and restore on the next connect.
-
Browser SDK
A zero-dependency ES module SDK connects DSL editors built with Handfish.
-
Documented protocol
Protocol v1 uses one JSON object per WebSocket text frame, with published size and rate limits.
-
Security controls
Exact-origin allowlist, per-IP join limits, an audit table, and a published threat model.
Specifications
| Type | Server with a browser SDK |
|---|---|
| Used by | Noisedeck, Polymorphic, Visualize, Layers, and Noodles (Go Online) |
| Server | Python 3.14 or later, aiohttp; Docker image |
| Storage | SQLite (WAL); optional Postgres or SQLite member directory |
| Protocol | WebSocket, one JSON object per text frame; HTTP API under /v1 |
| Limits | Frames up to 64 KiB, snapshots up to 1 MiB, per-lane rate limits, 20-second heartbeat |
| Source | github.com/noisefactorllc/seance |
| License | MIT |
| Price | Free |
Get started
- Open a supported app, such as Noisedeck, and select Go Online to start a session.
- Share the session link with collaborators.
- To run your own server, clone the Seance repository and follow the operations guide.
Resources
Questions
- Which apps use Seance?
- Noisedeck, Polymorphic, Visualize, Layers, and Noodles use Seance for online sessions.
- Can I run my own Seance server?
- Yes. Seance is open source under the MIT license and runs as a Python service or Docker container.
- How does Seance handle conflicting edits?
- Parameter changes use last-write-wins. Document edits are serialized by the server, which acknowledges each edit and recovers clients that sent stale edits.