Soketi is a free, open source messaging & event streaming project written in TypeScript and released under AGPL-3.0. It has 5,634 GitHub stars, 363 forks and 142 open issues, and was last pushed 1.5 years ago. On this registry it ranks #2 of 8 tracked projects in Messaging & Event Streaming, with 5 head-to-head comparisons available.

What is Soketi?

Soketi is an open-source, Pusher-compatible WebSockets server written in TypeScript that lets developers run their own real-time channels infrastructure instead of paying for a hosted Pusher plan.

What it is

Soketi is a next-gen, Pusher-compatible, open-source WebSockets server distributed under the AGPL-3.0 licence. It lives in the Node.js and TypeScript ecosystem and is built on top of uWebSockets.js, a C application ported to Node.js. It implements the Pusher Protocol v7, and exposes app-based access in which the API and WebSockets are reached through apps defined by the operator.

The problem it solves is the cost and ceiling of hosted Pusher. Existing projects that already connect to Pusher need minimal code change to work with Soketi: the host and port are added and the credentials are swapped. It is intended for local development and benchmarking where no connection or message limits are wanted, and it is also positioned for production use, whether the socket endpoint is public for frontend applications or internal to a team.

Key capabilities

  • Implements the Pusher Protocol v7, so existing Pusher clients reconnect after swapping host, port, and credentials.
  • Runs on uWebSockets.js, a C application ported to Node.js, rather than on a JavaScript WebSocket stack.
  • Provides app-based access, with API and WebSocket credentials scoped to apps the operator defines.
  • Stores app data through static arrays, DynamoDB, or SQL-based servers such as Postgres.
  • Scales horizontally with Redis across multiple active instances.
  • Exposes Prometheus metrics for scraping, giving built-in monitoring without extra agents.
  • Ships as the @soketi/soketi npm package and as Docker images listed on Artifact Hub.

Who uses it and how

  • Developers testing against Pusher-compatible clients locally, where the hosted plan's connection and message caps would otherwise apply.
  • Teams benchmarking real-time throughput without paying per-connection, using Soketi as a drop-in local or staging endpoint.
  • Production deployments serving a public frontend, or internal-only deployments serving a team's own applications.
  • Operators running it in containers or in monoliths, from a single instance for development up to tens of active instances at scale with hundreds or thousands of active users.
  • Cost-sensitive deployments on a $5 to $10 Vultr or DigitalOcean instance, where thousands of active connections at high traffic fit inside less than 1 GB of memory and 1 CPU.

Getting started

Install the @soketi/soketi package from npm, or run the published Docker image. The installation and environment variable documentation at docs.soketi.app covers both paths.

How it compares

Pusher's $49 plan caps at 500 connections and 30 million messages, whereas Soketi on a $5 to $10 cloud instance is presented as offering virtually unlimited connections and messages. Soketi is AGPL-3.0 open source and self-hosted, so the operator holds the app data and the socket infrastructure rather than renting both. The trade is that Soketi's cost model is an instance bill plus operational time, while Pusher's is a subscription with a vendor handling uptime, support, and scaling.

When to use it — and when not to

A self-hoster must run Redis when scaling beyond one instance, and must provision either static arrays, DynamoDB, or a SQL server such as Postgres for app data, plus a Prometheus scraper for monitoring. Teams that need guaranteed release cadence, vendor support, or an SLA should not pick it: maintenance and support are described as infrequent because available time is tight, which is visible in the 142 open issues and the last push on 2025-03-03. The AGPL-3.0 licence is also a strong copyleft, which some closed-source deployments will not accept.

project readme (upstream, from github) — read inline

soketi

CI codecov Latest Stable Version Total Downloads License

Artifact Hub

Discord

Next-gen, Pusher-compatible, open-source WebSockets server. Simple, fast, and resilient. 📣

🤝 Supporting

Soketi is meant to be open source, forever and ever. It solves issues that many developers face - the one of wanting to be limitless while testing locally or performing benchmarks. More than that, itt is also suited for production usage, either it is public for your frontend applications or internal to your team.

The frequency of releases and maintenance is based on the available time, which is tight as hell. Recently, there were issues with the maintenance and this caused infrequent updates, as well as infrequent support.

To cover some of the expenses of handling new features or having to maintain the project, we would be more than happy if you can donate towards the goal. This will ensure that Soketi will be taken care of at its full extent.

💰 Sponsor the development via Github Sponsors

Logos from Sponsors

Soketi

Blazing fast speed ⚡

The server is built on top of uWebSockets.js - a C application ported to Node.js. uWebSockets.js is demonstrated to perform at levels 8.5x that of Fastify and at least 10x that of Socket.IO. (source)

Cheaper than most competitors 🤑

For a $49 plan on Pusher, you get a limited amount of connections (500) and messages (30M).

With Soketi, for the price of an instance on Vultr or DigitalOcean ($5-$10), you get virtually unlimited connections, messages, and some more!

Soketi is capable to hold thousands of active connections with high traffic on less than 1 GB and 1 CPU in the cloud. You can also get free $100 on Vultr to try out soketi →

Easy to use 👶

Whether you run your infrastructure in containers or monoliths, soketi is portable. There are multiple ways to install and configure soketi, from single instances for development, to tens of active instances at scale with hundreds or thousands of active users.

Pusher Protocol 📡

soketi implements the Pusher Protocol v7. Your existing projects that connect to Pusher requires minimal code change to make it work with Soketi - you just add the host and port and swap the credentials.

App-based access 🔐

Just like Pusher, you can access the API and WebSockets through the apps you define. Store the data with the built-in support for static arrays, DynamoDB and SQL-based servers like Postgres.

Production-ready! 🤖

In addition to being a good companion during local development, soketi comes with the resiliency and speed required for demanding production applications. At scale with Redis, you get the breeze of scaling as you grow.

Built-in monitoring 📈

You just have to scrape the Prometheus metrics. Soketi offers a lot of metrics to monitor the deployment and

See it in action

Deployments

Community projects

📃 Documentation

The entire documentation is available on Gitbook 🌍

🌟 Stargazers

We really appreciate how this project turned to be such a great success. It will always remain open-source, free, and maintained. This is the real-time as it should be.

Stargazers over time

🤝 Contributing

Please see CONTRIBUTING for details.

⁉ Ideas or Discussions?

Have any ideas that can make into the project? Perhaps you have questions? Jump into the discussions board or join the Discord channel

🔒 Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

🎉 Credits

Frequently asked questions

Is Soketi free to use?

Soketi is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Soketi do?

Next-gen WebSockets server for real-time apps

What is Soketi written in?

Soketi is primarily written in TypeScript. Its source is publicly available at https://github.com/soketi/soketi, and it has 5,634 GitHub stars.