See OpenOT in Action
Type below to see actual OT operations generated in real-time using OpenOT's TextType
Cursor position: 11
Operations will appear here...
This demo uses @open-ot/core TextType to generate and apply operations locally
Get Started in Minutes
Choose your framework and start building collaborative applications
Install
npm install @open-ot/core @open-ot/client @open-ot/transport-websocketUsage
1import { OTClient } from "@open-ot/client";
2import { TextType } from "@open-ot/core";
3import { WebSocketTransport } from "@open-ot/transport-websocket";
4
5const transport = new WebSocketTransport("ws://localhost:3000");
6
7const client = new OTClient({
8 type: TextType,
9 initialSnapshot: "Hello World",
10 initialRevision: 0,
11 transport: transport,
12});
13
14// Apply local changes
15client.applyLocal([{ r: 5 }, { i: " Alice" }]);Modular Architecture
Composable packages that work together seamlessly. Mix and match to fit your stack.
coreclient/serveradapters/transportsCore
Foundation packages for OT functionality
Core OT type system with TextType and JSON transformation
Client & Server
Synchronization and state management
coreClient-side synchronization state machine with offline support
coreAuthoritative server for operation history and concurrency control
Storage Adapters
Persistence layer implementations
serverRedis adapter for operation logs and real-time presence
serverS3 adapter for snapshot storage and archival
Network Transports
Communication layer adapters
clientWebSocket transport for bidirectional real-time communication
clientServer-Sent Events transport for serverless environments