Own CRDT sync server
FastAPI WebSockets speak the Yjs sync and awareness protocols over pycrdt (Rust Yrs): one room per open document, per-connection send queues, and roles enforced on every update. Edits reach other users in about 110 ms in production.