---
title: SDKs
description: "Client SDKs for a self-hosted NoLag broker: JavaScript and TypeScript, React Native, Python and Go, plus eleven Blueprint SDKs built on the JavaScript client. All MIT licensed."
---

# SDKs

Client libraries for talking to a [kraken](/docs/self-hosting) broker. They all speak the same MessagePack-over-WebSocket [wire protocol](/docs/protocol), so a JavaScript browser client, a Python service and a Go worker can share the same topics.

**Always pass the broker URL.** Every SDK has a built-in default URL, and it points at the retired NoLag Cloud broker, which no longer answers. Pass the address of your own kraken in every client you create, for example `ws://localhost:8080/ws` for the [quickstart](/docs/getting-started).

## Core SDKs

### JavaScript / TypeScript

Package: `@nolag/js-sdk`. One package for browsers and Node.js 18+, with TypeScript definitions included. These docs cover 1.13.0 and 1.14.0; install the latest.

```bash
npm install @nolag/js-sdk
```

[View documentation](/docs/sdks/javascript)

### React Native

Package: `@nolag/react-native`. Bindings for the JavaScript SDK on React Native: AppState lifecycle, NetInfo reachability, token caching and text-codec polyfills.

```bash
npm install @nolag/react-native @nolag/js-sdk
```

[View documentation](/docs/sdks/react-native)

### Python

Package: `nolag` (documented version 2.6.0). An asyncio client for Python 3.10+.

```bash
pip install nolag
```

[View documentation](/docs/sdks/python)

### Go

Module: `github.com/NoLagApp/go-sdk` (documented version v0.5.0). Go 1.21+.

```bash
go get github.com/NoLagApp/go-sdk
```

[View documentation](/docs/sdks/go)

## How the core SDKs differ

The four SDKs share one protocol, but they do not behave identically around reconnects and presence. The details are on each page; this is the short version.

| | JavaScript / React Native | Python | Go |
| --- | --- | --- | --- |
| Token | string, or an async token provider | string | string |
| Client-token refresh | automatic, in place over the live socket | none | none |
| Reconnect schedule | 5 s, growing by 1.5x to 30 s, then gives up after 10 attempts | every 5 s, 10 attempts (both configurable) | every 5 s, 10 attempts (both configurable) |
| Subscriptions after a reconnect | not restored by the SDK: subscribe in the `connect` handler | not restored by the SDK: subscribe in the `connect` handler | re-subscribed by the SDK, without per-subscription options |
| Room presence after a reconnect | not re-sent: set it again in the `connect` handler | re-sent by the SDK | not re-sent: set it again in the `connected` handler |
| Subscribe and publish acknowledgement | optional callback | optional callback | none; broker errors arrive on `OnError` |
| Hydration event | from 1.14.0 | yes | yes |

kraken v0.9.0 also opens an MQTT listener on port 1883, but it accepts no connections in this release, so devices need one of the SDKs above (or the [wire protocol](/docs/protocol)) for now. See [Production checklist](/docs/self-hosting/production).

## Blueprint SDKs

Domain-specific wrappers built on `@nolag/js-sdk`. Each one attaches to a core client you create and own, and adds a purpose-built API on top of a fixed set of topics:

```bash
npm install @nolag/chat @nolag/js-sdk
```

| SDK | Package | What it does |
| --- | --- | --- |
| [Chat](/docs/high-level-sdks/chat) | `@nolag/chat` | Multi-room chat with presence and typing indicators |
| [Collab](/docs/high-level-sdks/collab) | `@nolag/collab` | Collaborative editing: operations, cursors and awareness |
| [Dash](/docs/high-level-sdks/dash) | `@nolag/dash` | Live dashboards: metrics, widgets and data streams |
| [Feed](/docs/high-level-sdks/feed) | `@nolag/feed` | Activity feeds: posts, likes and comments |
| [IoT](/docs/high-level-sdks/iot) | `@nolag/iot` | Device telemetry and command dispatch |
| [Notify](/docs/high-level-sdks/notify) | `@nolag/notify` | Notifications with channels, read state and badge counts |
| [Queue](/docs/high-level-sdks/queue) | `@nolag/queue` | Job queues with lifecycle and progress tracking |
| [Signal](/docs/high-level-sdks/signal) | `@nolag/signal` | WebRTC signalling: peer discovery, offer, answer and ICE exchange |
| [Stream](/docs/high-level-sdks/stream) | `@nolag/stream` | Live-stream engagement: comments, reactions and polls |
| [Sync](/docs/high-level-sdks/sync) | `@nolag/sync` | Document sync with versions and conflict resolution |
| [Track](/docs/high-level-sdks/track) | `@nolag/track` | GPS tracking of vehicles and assets, with geofencing |

Every Blueprint SDK peer-depends on `@nolag/js-sdk` 1.12.0 or later. Each page lists the topics, rooms and lobbies the wrapper expects you to grant. Start at the [Blueprint SDKs overview](/docs/high-level-sdks).

## Licences

The client SDKs and the Blueprint SDKs are MIT licensed. The kraken broker and the optional `@nolag/core` authorization library are Apache-2.0.
