Self-host TogetherJS
v0.5.6Real-time website collaboration you embed and host yourself
- Stars
- 6 997
What is TogetherJS?
TogetherJS is an open-source JavaScript library you paste into your own website so that two or more visitors can work on the same page at the same time: they see each other's cursors and clicks, chat over text or WebRTC audio, follow one another across pages of the same domain and watch form fields and page content change live. Sessions are created by sharing a unique TogetherJS URL, and rooms can be assigned per site section with an occupancy limit. Mozilla built it, and the project now lives in the jsfiddle GitHub organisation under the Mozilla Public License 2.0. As a site owner you configure behaviour through TogetherJSConfig_* variables (tool name, hub address, click cloning, auto-start, YouTube sync, language, hooks), and you can wire your own application state through its broadcast message channel. The officially hosted hub no longer exists, so you run the relay yourself: the recommended route is the hub-worker/ Cloudflare Workers + Durable Objects port (free plan, deployed with wrangler), while the legacy Node.js hub/server.js stays in the repo for anyone who prefers a container. Limits: sessions are bound to one origin, it targets recent Firefox and Chrome (little testing on Internet Explorer or mobile browsers), and there are no tagged releases or published container images.
Should you self-host TogetherJS?
TogetherJS scores 57/100 on selfhost.directory (how scoring works) and ranks #10 of 30 in Collaboration. It has 6 997 GitHub stars.
There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.
Setup is moderate: expect some configuration beyond a single command. It is MPL-2.0-licensed and written mostly in JavaScript.
Its closest alternative on selfhost.directory is penpot (84/100, 61 785 stars). It scores higher overall, so compare the two before you pick. See TogetherJS vs penpot side by side.
Features
- Application hooks and custom messages
- Audio chat (WebRTC)Needs recent browsers; TogetherJSConfig_disableWebRTC removes the button.
- Host-supplied user identity
- Keyboard shortcut activation
- Localised interface
- Real-time co-browsing
- Real-time content sync
- Room assignment
- Self-hosted relay hubCloudflare Workers port (hub-worker/) recommended; legacy Node hub/server.js also kept.
- Shareable session links
- Shared cursors and clicks
- Text Chat
- User presence
- YouTube video synchronisation
TogetherJS README
FAQ
Does TogetherJS work on Internet Explorer?
Not really; the project asks for help on open Internet Explorer bugs in the GitHub tracker.
If I'm using TogetherJS with people, can they see the current webpage I'm on?
Yes, other participants see the content on your screen, so sensitive information should be avoided.
What is TogetherJS?
It is a JavaScript library that adds collaboration features and tools to a website or app.
More in Real-time
zen-relayZen Relay is an open-source, self-hosted WebSocket relay server for Zen Client and Bridge, written in Node.js with Express and Socket.IO.
CentrifugoOpen-source, self-hosted real-time messaging server with PUB/SUB over WebSocket, SSE and gRPC, scaling via Redis, PostgreSQL or NATS, plus an embedded admin UI.
DruidSelf-hosted open-source OLAP database delivering millisecond analytics on high-cardinality event data, with SQL, JDBC, a web console and native Kafka/Kinesis ingestion.
EZ-WifiBroadcastOpen-source, self-hosted FPV video link that streams low-latency 1080p video, MAVLink telemetry and RC control between a drone camera and its ground station.
FlowcatFlowcat is an open-source, self-hosted Rust runtime for real-time voice agents — single binary, no hosted control plane, native SIP/RTP/WebRTC, 80+ provider connectors.
Global Threat MapSelf-hosted, open-source OSINT command center: a Next.js Mapbox app plotting real-time global events, wars, conflicts and military bases, with AI intel dossiers.
GraphitiGraphiti is a self-hosted, open-source scene graph engine for interactive 3D data visualization with real-time peer-to-peer sync via WebRTC and CRDTs — no cloud required.
gunOpen-source P2P graph database with realtime sync and offline-first storage; run a self-hosted relay peer via Docker or npm in browsers, Node.js and mobile apps.
instantSelf-hosted, open-source backend-as-a-service: relational queries, realtime sync, offline caching, auth, storage and permission rules on PostgreSQL.
JuggleIMSelf-hosted instant messaging backend for adding chat to your app. Multi-tenant design, WebSocket protocol, REST APIs, SDKs for Android, iOS, Web, Flutter.
kuzzleKuzzle is a self-hosted, open-source backend platform with real-time APIs, data storage, advanced search, user authentication, and pub/sub for web, mobile, and IoT apps.
nsqOpen-source self-hosted distributed messaging platform: push-based pub-sub over topics and channels, in-memory queues that spill to disk, plus the nsqadmin web UI.
0 comments