NoLag Documentation

NoLag is open-source realtime messaging. You run a broker, your applications connect to it over WebSocket, and they publish and subscribe to topics organised into apps and rooms, with presence, filters and webhooks on top.

NoLag Cloud, the hosted service, was retired in October 2026. Everything in these docs runs on infrastructure you control.

What NoLag is made of

ComponentWhat it doesLicence
krakenThe broker. Holds the WebSocket connections, checks every subscribe and publish against the connection's grants, and fans messages out. Written in Erlang; runs as one container with no database.Apache-2.0
@nolag/coreOptional. A NestJS library that answers kraken's authorization questions from Postgres: projects, apps, rooms, lobbies, access scopes, actor tokens and signing keys. Ships with an example host and a small admin UI.Apache-2.0
Client SDKs@nolag/js-sdk (browsers and Node.js), @nolag/react-native, nolag for Python and github.com/NoLagApp/go-sdk for Go.MIT
Blueprint SDKsPurpose-built wrappers over the JavaScript SDK for common features: chat, collab, dash, feed, IoT, notify, queue, signal, stream, sync and track. A signal package for Python and an IoT package for Go also exist.MIT (JavaScript packages)

kraken on its own is a complete broker: it reads its tokens from a JSON file. Add @nolag/core, or your own service, when you want tokens and grants to come from a database.

Where to start

  • Quick Start: run kraken with Docker and pass a message between two clients, in about five minutes.
  • Self-Hosting: choose a setup, from the broker alone to the full stack with @nolag/core.
  • Core Concepts: topics, rooms, presence, filters, quality of service and access control.
  • Authentication: tokens, actor types, and how kraken validates and caches them.
  • SDKs and Blueprint SDKs: client APIs.
  • Wire Protocol: the frames on the wire, for writing a client of your own.

Getting help

  • GitHub: source, issues and bug reports for every component.
  • Discord: questions and discussion.