Skip to content
noisefactorllcPublic

About

Real-time collaboration server and browser SDK for creative DSL clients

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Seance Real-time collaboration server and browser SDK

Open source from Noise Factor · more projects

Seance

Seance is a session-scoped real-time collaboration backend for browser-based creative tools. Clients join shared ad-hoc sessions over a WebSocket transport and see each other's live document edits, cursor positions, state changes, and moderation events.

The server is authoritative for all session state. A last-write-wins lane carries high-frequency parameter changes, and a server-serialized document lane carries text/tree edits with acknowledgements, stale-edit recovery, and snapshots. Sessions are owned, so the creator or current owner can kick, ban, lock, toggle guest access, and mark users read-only. Moderation state persists across freeze/thaw.

Seance also includes a zero-dependency browser ESM SDK for Handfish-backed DSL editors. The SDK is optional. Direct clients can use the documented wire protocol.

Documentation

Local run

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

SEANCE_SECRET=$(.venv/bin/python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())") \
SEANCE_DB=./seance.db \
SEANCE_ALLOWED_ORIGINS=http://localhost:3000 \
.venv/bin/python bin/app.py

Then curl -s http://127.0.0.1:8000/up should return {"status": "ok", "service": "seance", "version": "0.2.1"}.

Configuration uses only environment variables. docs/operations.md documents every variable.

SDK

The SDK is not published to npm. Use the checked-out source directly:

import { createOnlineDslLayer } from './sdk/index.js'

Build the standalone browser bundle:

npm run build:sdk

The build writes the generated bundle to dist/index.js.

Tests

.venv/bin/pip install -r requirements-dev.txt
.venv/bin/python -m pytest -q            # full suite (slow tests excluded)
.venv/bin/python -m pytest -m slow -q    # load/perf smoke
.venv/bin/python -m ruff check .         # lint
npm run test:sdk                        # SDK bundle + node tests
.venv/bin/python scripts/test-sdk-ci.py # all SDK tests, including live and perf

The CI runner creates and stops its own local server with a temporary database and fresh credentials. It enables the live tests and performance checks, which the plain test:sdk command skips unless configured explicitly.

Deployment pipelines can stamp public/deployment-meta.json at image build time. Local runs synthesize a {"git_hash": "dev"} placeholder.

Contributing

Please read CONTRIBUTING.md and the Noise Factor Code of Conduct before opening changes.

License

Seance is released under the MIT License. Use of the Seance and Noise Factor names in derivative products is subject to the Trademark Policy.

Copyright (c) 2026 Noise Factor LLC

About

Real-time collaboration server and browser SDK for creative DSL clients

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages