Release history
Centrifugo releases
Language-agnostic real-time messaging (Websocket or SockJS) server.
All releases
7 shown
Minor fixes and improvements.
Full changelog
Centrifugo is an open-source scalable real-time messaging server. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, Server-Sent Events (SSE/EventSource), GRPC, WebTransport). Centrifugo has the concept of a channel – so it's a user-facing PUB/SUB server.
Centrifugo is language-agnostic and can be used to build chat apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. in combination with any backend. It is well suited for modern architectures and allows decoupling the business logic from the real-time transport layer.
Several official client SDKs for browser and mobile development wrap the bidirectional protocol. In addition, Centrifugo supports a unidirectional approach for simple use cases with no SDK dependency.
For details, go to the Centrifugo documentation site.
What's changed
Miscellaneous
- This release is built with Go 1.26.3
- Dependency updates
- See also the corresponding Centrifugo PRO release.
- Added `consumers[].kafka.assume_role_arn` option to enable AWS STS AssumeRole for MSK IAM authentication
Full changelog
Centrifugo is an open-source scalable real-time messaging server. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, Server-Sent Events (SSE/EventSource), GRPC, WebTransport). Centrifugo has the concept of a channel – so it's a user-facing PUB/SUB server.
Centrifugo is language-agnostic and can be used to build chat apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. in combination with any backend. It is well suited for modern architectures and allows decoupling the business logic from the real-time transport layer.
Several official client SDKs for browser and mobile development wrap the bidirectional protocol. In addition, Centrifugo supports a unidirectional approach for simple use cases with no SDK dependency.
For details, go to the Centrifugo documentation site.
What's changed
Improvements
- Kafka consumer now supports AWS STS AssumeRole for MSK IAM authentication via the new
consumers[].kafka.assume_role_arnoption, #1129 by @samir-is-here. When set together withsasl_mechanism: "aws-msk-iam", Centrifugo loads base credentials via the AWS SDK default credential chain and assumes the specified IAM role to obtain temporary credentials with automatically refreshed session tokens. This is useful for cross-account MSK access or when running Centrifugo with an EC2/EKS/ECS instance profile. Staticsasl_user/sasl_passwordkeys remain the default whenassume_role_arnis empty. See documentation.
Fixes
- CI fix: set LocalStack image version to 4.14 in development setup, #1119.
Miscellaneous
- This release is built with Go 1.26.2
- Dependency updates
- See also the corresponding Centrifugo PRO release.
- CVE-2026-32301 — Fixed SSRF vulnerability in Dynamic JWKS endpoint; update issuer_regex/audience_regex patterns to whitelist allowed values.
- Built with Go 1.26 featuring the Green Tea garbage collector
- Alpine Docker image updated to version 3.22
Full changelog
Centrifugo is an open-source scalable real-time messaging server. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, Server-Sent Events (SSE/EventSource), GRPC, WebTransport). Centrifugo has the concept of a channel – so it's a user-facing PUB/SUB server.
Centrifugo is language-agnostic and can be used to build chat apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. in combination with any backend. It is well suited for modern architectures and allows decoupling the business logic from the real-time transport layer.
Several official client SDKs for browser and mobile development wrap the bidirectional protocol. In addition, Centrifugo supports a unidirectional approach for simple use cases with no SDK dependency.
For details, go to the Centrifugo documentation site.
What's changed
This release contains breaking change to address CVE discovered in Dynamic JWKs endpoint feature. If you use that feature you need to update Centrifugo configuration. See fixes section for the details.
Improvements
- This release is the first built with Go 1.26. This version of the Go language includes a new garbage collector called the Green Tea garbage collector. This may affect the performance of your Centrifugo installation; in most cases, we expect the impact to be positive. If you notice any performance changes in Centrifugo after upgrading to this release, please let us know in the community rooms. More information about the new GC can be found here.
- Updated the Alpine image to 3.22 in the Dockerfile.
- Improve lint layout to improve local DX
Fixes
- CVE-2026-32301 Fixed SSRF vulnerability in Dynamic JWKS endpoint feature. When using JWKS endpoint URL templates with placeholders extracted from JWT claims via
issuer_regexoraudience_regex, an attacker could craft a JWT with malicious claim values to redirect JWKS key fetches to an attacker-controlled server, enabling token forgery. Action required: if you use dynamic JWKS endpoints, update yourissuer_regex/audience_regexpatterns so that named capture groups used in the JWKS URL template contain only an explicit list of allowed literal values (e.g.,(?P<tenant>tenant1|tenant2|tenant3)instead of(?P<tenant>.+)). Centrifugo will now reject configurations where these groups allow arbitrary input. A temporary escape hatchclient.token.insecure_skip_jwks_endpoint_safety_checkoption is available but will be removed in future releases. This security issue was reported by @VarshankNaik - The Go version update (1.25.7 to 1.26.1) and update of Go x/net library allow inheriting fixes for several recently discovered CVE.
Miscellaneous
- This release is built with Go 1.26.1
- See also the corresponding Centrifugo PRO release.
Fixed transport write regression causing broken data in HTTP Stream and SSE connections.
Full changelog
Centrifugo is an open-source scalable real-time messaging server. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, Server-Sent Events (SSE/EventSource), GRPC, WebTransport). Centrifugo has the concept of a channel – so it's a user-facing PUB/SUB server.
Centrifugo is language-agnostic and can be used to build chat apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. in combination with any backend. It is well suited for modern architectures and allows decoupling the business logic from the real-time transport layer.
Several official client SDKs for browser and mobile development wrap the bidirectional protocol. In addition, Centrifugo supports a unidirectional approach for simple use cases with no SDK dependency.
For details, go to the Centrifugo documentation site.
What's changed
Fixes
- Transport write must return after data written #1106. This was noticed in CI after a pull request made by @phront3nd3r. This is a regression from v6.6.0 due to malformed buffer reuse in WriteManyFn callback of client writer. This resulted into broken data written into connection – thus connection issues. The problem was reproducing in HTTP Stream and SSE transports (bidirectional and unidirectional). WebSocket, Webtransport, uni GRPC were not affected because they already return once data is written into connection.
Miscellaneous
- This release is built with Go 1.25.7
- See also the corresponding Centrifugo PRO release.
- Improved `configdoc` UI with navigation, search, JSON/YAML snippets and theme support
- HMAC token rotation options (`hmac_previous_secret_key`, `hmac_previous_secret_key_valid_until`) added
- New strict `json_object` publication data format for channels
Full changelog
Centrifugo is an open-source scalable real-time messaging server. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, Server-Sent Events (SSE/EventSource), GRPC, WebTransport). Centrifugo has the concept of a channel – so it's a user-facing PUB/SUB server.
Centrifugo is language-agnostic and can be used to build chat apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. in combination with any backend. It is well suited for modern architectures and allows decoupling the business logic from the real-time transport layer.
Several official client SDKs for browser and mobile development wrap the bidirectional protocol. In addition, Centrifugo supports a unidirectional approach for simple use cases with no SDK dependency.
For details, go to the Centrifugo documentation site.
What's changed
Improvements
- Better configdoc UI #1092. Redesigned
centrifugo configdocinterface with top-level navigation, search, JSON/YAML snippets (🔥), and dark/light themes. - Add
hmac_previous_secret_keyandhmac_previous_secret_key_valid_untiloptions to provide a possibility to rotate HMAC token #1103, docs - Adding
json_objectpublication data format – more strict format to ensure a JSON object in channels #1091 - Centrifugo Helm chart v13 was released - comes with many improvements, documentation and examples.
- Adopt latest
quic-goandwebtransport-gochanges, WebTransport test #1101 - Refactor metrics – makes metrics configurable on server start and discoverable from one place #1093
- Kafka consumer: avoid using static instance id by default, add logging, eliminate one extra goroutine per partition, more reliable shutdown #1105
Fixes
- Redis broker: avoid offset incrementing on publication suppress by version centrifugal/centrifuge#549
- Add missing mutex Unlock() by @palkan in centrifugal/centrifuge#552
Miscellaneous
- This release is built with Go 1.25.7
- Updated dependencies
- See also the corresponding Centrifugo PRO release.