A chat server built on uWebSockets.js that offers an alternative to XMPP, with a Node.js backend, MongoDB and Redis.
- Stars
- 10,954
- Forks
- 754
- Open issues
- 25
- Last commit
- 6 hours ago
What is it?
Centrifugo is an open-source real-time messaging server that delivers messages instantly to users connected over WebSocket, HTTP-streaming, Server-Sent Events, GRPC and WebTransport. It works as a user-facing PUB/SUB server: clients subscribe to channels, and the application backend publishes into them through a simple HTTP or GRPC API.
Because Centrifugo is independent of the backend language, it separates real-time delivery from business logic. Official client SDKs cover JavaScript, Dart/Flutter, Swift, Java, Python, Go and .NET, and simple cases can use any standard client for the chosen transport without an SDK.
Scaling is handled through Redis (including Redis Cluster and compatible storage), PostgreSQL or NATS. The project also offers channel history with message recovery on reconnect, presence with join/leave events, JWT or proxy-based authentication, delta compression, Prometheus metrics, and an embedded admin web UI.
Key features
- 01Delivers messages over WebSocket, SSE, HTTP-streaming, GRPC and WebTransport (experimental).
- 02Scales with Redis, Redis Cluster, PostgreSQL or NATS as the broker.
- 03Publishes to channels through a simple HTTP or GRPC server API.
- 04Supports channel history with automatic recovery after reconnect.
- 05Provides online presence and join/leave notifications per channel.
- 06Offers JWT and proxy-based connection authentication.
- 07Exposes Prometheus metrics and includes an embedded admin web UI.
Use cases
- Building chat or messenger features in a web or mobile app.
- Pushing live comments, notifications or data updates to browsers.
- Streaming AI model responses to users in real time.
- Powering multiplayer games or collaborative tools that need low-latency sync.
Quick start
- 1
Run Centrifugo with the embedded admin UI using Docker
docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure - 2
Open http://localhost:8000 to reach the admin UI
- 3
Follow the installation instructions for native binaries, Homebrew, packages and production configuration
Things to know
- The quick start uses insecure flags that remove authentication, which must not be used in production.
- WebTransport support is experimental.
In collections
Topics
FAQ
- What is centrifugo?
- Self-hosted, language-agnostic real-time PUB/SUB messaging server that pushes messages to users over WebSocket, SSE, HTTP-streaming, GRPC and WebTransport. Centrifugo is an open-source real-time messaging server that delivers messages instantly to users connected over WebSocket, HTTP-streaming, Server-Sent Events, GRPC and WebTransport. It works as a user-facing PUB/SUB server: clients subscribe to channels, and the application backend publishes into them through a simple HTTP or GRPC API.
- Is centrifugo free to use? What license does it have?
- centrifugo is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is centrifugo still maintained?
- Actively maintained. The last commit to centrifugo was on Nov 7, 2026.
- What can I use centrifugo for?
- Building chat or messenger features in a web or mobile app. Pushing live comments, notifications or data updates to browsers. Streaming AI model responses to users in real time. Powering multiplayer games or collaborative tools that need low-latency sync.
- How do I install centrifugo?
- Run Centrifugo with the embedded admin UI using Docker: docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure Open http://localhost:8000 to reach the admin UI Follow the installation instructions for native binaries, Homebrew, packages and production configuration
- Where can I get centrifugo?
- The source code and installation instructions are on GitHub: https://github.com/centrifugal/centrifugo
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A real-time chat package for Laravel that adds direct messages, groups, attachments, and a bundled messenger UI to a Laravel app.
PHP library for sending events, authenticating users and querying channels through the Pusher Channels HTTP API.
Self-hosted real-time speech-to-text server with streaming ASR, speaker diarization, live translation and OpenAI/Deepgram-compatible APIs.
A curated list of public and paid data sources that stream or update in real time, spanning finance, transport, weather, news, cybersecurity and more.
Open-source realtime server that adds reliable two-way WebSocket and SSE communication to existing backends.