Repo of the Day
soketi/soketi
Published: Jan 26, 2022
Open repository ↗Just another simple, fast, and resilient open-source WebSockets server.
Summary
Soketi is an open-source WebSocket server written in TypeScript that implements the Pusher Channels protocol (v7), letting teams self-host real-time messaging instead of paying for a managed service. It is built on top of uWebSockets.js (a Node.js binding around a C-based socket implementation) and is distributed under the AGPL-3.0 license.
What it is useful for
Soketi is useful when an application needs real-time push — chat, presence indicators, live notifications, dashboards, collaborative editing — and the team wants to avoid Pusher's per-connection and per-message limits, or wants an offline-friendly development server. Because it speaks Pusher Protocol v7, code written against Pusher's client SDKs can be pointed at Soketi by changing only the host, port, and credentials. The repository's topics (websockets, pusher, broadcasting, real-time, docker, nodejs) reflect the main deployment shapes.
Beyond protocol compatibility, Soketi supports app-based access control so a single server can host multiple applications, with app metadata stored in one of several backends: in-memory arrays, DynamoDB, or SQL servers like Postgres. For multi-instance deployments, Redis can be wired in for horizontal scaling, and a Prometheus metrics endpoint is exposed for scraping.
How engineers can use it
The README defers setup details to the external documentation site (docs.soketi.app), so the first concrete step is reading the Installation and Environment Variables pages there rather than this repo. From what is referenced, the supported paths are a containerized run (the docker topic plus the Railway and Cleavr deployment templates in the README confirm container-based installs), a local binary for development, and one-click deployments on Railway or Cleavr.
Once the server is running, you create an "app" to obtain an app ID and secret (persisted via the configured backend), then point your Pusher client SDK at ws://your-host:your-port with those credentials. Public channels work immediately; private and presence channels reuse the same server-side signing flow Pusher expects, so existing auth code continues to work unchanged. The Prometheus endpoint then gives you connection counts and message rates for dashboards.
Limitations worth noting
Soketi is licensed under AGPL-3.0, which has copyleft implications for any forks or networked use inside a proprietary product — review the terms before adopting. The maintainers also state in the README that release cadence has been affected by limited maintainer time, so upstream updates may be infrequent and production users should plan for self-driven patching where critical.