Purpose-built SDKs.
Install and ship.
Blueprints are high-level SDKs for common real-time patterns. Each one wraps the NoLag core client with a domain-specific API and a ready-made topic layout. MIT licensed, and they run against your own broker. No wiring, no boilerplate.
From zero to real-time in three steps.
Pick a Blueprint
Choose the SDK that matches your use case. Chat, notifications, tracking, dashboards, or build your own.
Connect with one token
Grant the Blueprint's topics to your actors, then attach the SDK to a NoLag client with your App Slug.
const chat = new NoLagChat({ client, appName });
await client.connect();
await chat.ready();
Use the domain API
Call methods that make sense for your domain. No topics, no subscriptions, no low-level wiring.
room.startTyping();
Every Blueprint. Every API.
Select a Blueprint to see its full API surface, events, and topic layout.
Chat
availableA complete chat SDK built on the NoLag core. Handles room management, user presence, typing indicators, streamed (token-by-token) messages, unread counts, and online user tracking. Works with any framework.
What's included
Topic layout
import { NoLag } from "@nolag/js-sdk";
import { NoLagChat } from "@nolag/chat";
const client = NoLag(ACTOR_TOKEN, { url: KRAKEN_URL });
const chat = new NoLagChat({
client,
appName: APP_SLUG, // the App Slug from your auth config
username: "Alice",
rooms: ["general", "random"],
});
chat.on("connected", () => console.log("Ready!"));
chat.on("userOnline", (u) => console.log(u.username, "online"));
await client.connect();
await chat.ready();API Methods
| new NoLagChat({ client, appName, ... }) | Create a chat instance on an injected NoLag client |
| chat.ready() | Resolves once the wrapper has set up on the connected client |
| chat.joinRoom(name) | Join a chat room (returns ChatRoom) |
| chat.leaveRoom(name) | Leave a chat room |
| chat.getOnlineUsers() | All users online across rooms |
| chat.setStatus(status) | Set online/away/busy/offline |
| room.sendMessage(text) | Send a message (optimistic) |
| room.startTyping() | Signal typing (auto-stops) |
| room.getMessages() | All messages in the room |
| room.getUsers() | All users in the room |
Events
| connected | chat | Connection established |
| userOnline | chat | A user came online |
| userOffline | chat | A user went offline |
| message | room | New message received |
| typing | room | Typing state changed |
| userJoined | room | User joined this room |
| userLeft | room | User left this room |
| streamStart | room | A streamed message began |
| streamEnd | room | A streamed message finished |
What you don't have to build.
Every Blueprint handles the plumbing so you can focus on your product.
WITHOUT BLUEPRINTS
WITH BLUEPRINTS
Built for every real-time use case.
From chat apps to IoT platforms, NoLag powers real-time experiences across industries.
Chat & Messaging
Team chat, customer support, in-app DMs, and social messaging with rooms, presence, and typing indicators.
IoT & Telemetry
Fleet management, smart home, energy monitoring, and industrial sensor data streaming.
Collaborative Apps
Figma, Linear, Notion-style apps with cursor tracking, live document sync, and conflict resolution.
Live Dashboards
Trading platforms, ops centers, observability tools with filtered real-time data.
Live Notifications
Real-time notifications with channels, read/unread tracking, and badge counts.
Vehicle Tracking
Live GPS tracking for vehicles and assets with client-side geofencing.
Pick a Blueprint.
Ship today.
Every Blueprint is MIT licensed and runs against your own broker. Install the package, connect with your token, and start building.