# Centrifugo

Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably, socket.io, Phoenix.PubSub, SignalR. Set up once and forever.

Repository: https://github.com/centrifugal/centrifugo
Canonical: https://ross.abutalabs.com/products/centrifugo
Homepage: https://centrifugal.dev
Language: Go
License: Apache-2.0
License Family: permissive
Topics: websocket, redis, real-time, messaging, scalability, eventsource, streaming, http-streaming, grpc, pubsub, http3, websockets, webtransport, sse, server-sent-events, ably, alternative, pubnub, pusher, socket-io
Last push: 2026-08-26T21:03:50+00:00
Link (homepage): https://centrifugal.dev
Link (site_page): https://centrifugal.dev/docs/getting-started/introduction
Link (site_page): https://centrifugal.dev/docs/server/configuration
Link (site_page): https://centrifugal.dev/docs/transports/overview
Link (site_page): https://centrifugal.dev/docs/faq

## Health v2 (maintenance only)
Score: 99/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 99, longevity 100
- inputs: {"age_days": 4173, "days_push": 7, "days_rel": 10, "gap_med": 15, "n_releases_24m": 36}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 10668, forks 728 (observed 2026-08-28T04:10:43.710404+00:00)

## What it is
Centrifugo is an open-source, language-agnostic real-time messaging (PUB/SUB) server written in Go that delivers messages to online users over WebSocket, SSE, HTTP-streaming, WebTransport, and gRPC transports. It scales horizontally across nodes using Redis, PostgreSQL, or NATS brokers and integrates with any backend via HTTP/gRPC APIs and official client SDKs.

## Use cases
- add real-time chat or messaging to an existing app in any language
- push live comments and notifications to web or mobile users
- stream AI/LLM responses to the browser in real time
- build multiplayer game state sync over WebSockets
- broadcast live metrics and data visualization updates
- replace socket.io, Pusher, Ably, or SignalR with a self-hosted server
- handle millions of persistent WebSocket connections at scale

## When to choose
- your backend (Django, Rails, Laravel, etc.) lacks good persistent-connection support
- you want a standalone, battle-tested PUB/SUB server decoupled from business logic
- you need horizontal scaling with Redis/NATS/PostgreSQL brokers
- you want multiple transports (WebSocket, SSE, WebTransport, gRPC) with SDKs and fallbacks
- you need channel history, recovery, presence, and delta compression out of the box

## When to avoid
- you only need simple request/response APIs without server push
- you prefer building real-time directly inside a framework with native WebSocket support
- you need strict hard real-time latency guarantees
- you want a fully managed hosted service rather than self-hosting

## Facets
- artifact type: service
- maturity: stable
- function: websocket, message-queue, http-server, rpc, middleware, auth
- domain: web-development, backend, self-hosted, microservices
- platform: windows, self-hosted, go, cloud
- tags: pubsub, real-time-messaging, websocket-server, sse, webtransport, grpc, push-notifications, language-agnostic, horizontal-scaling, jwt-authentication, chat, live-updates, messaging, real-time, linux, macos, docker, web-server

## Member repositories
- centrifugal/centrifugo (main) score 99
- centrifugal/centrifuge (backend) score 84

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:10:43.710404+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:18:12.106221+00:00, confidence not recorded.
  - readme: https://github.com/centrifugal/centrifugo (fetched 2026-08-28T04:10:43.710404+00:00, sha 64f4600e2f5b)
  - homepage: https://centrifugal.dev (fetched 2026-08-29T08:17:23.013473+00:00, sha ff62c67d59c0)
  - site_page: https://centrifugal.dev/docs/getting-started/introduction (fetched 2026-08-29T08:17:23.023266+00:00, sha f7beb832f67e)
  - site_page: https://centrifugal.dev/docs/server/configuration (fetched 2026-08-29T08:17:23.025355+00:00, sha 307842b1ad73)
  - site_page: https://centrifugal.dev/docs/transports/overview (fetched 2026-08-29T08:17:23.028561+00:00, sha e016ce63c2c5)
  - site_page: https://centrifugal.dev/docs/faq (fetched 2026-08-29T08:17:23.030515+00:00, sha 3e984ac1e59c)
  - site_page: https://centrifugal.dev/docs/tutorial/intro (fetched 2026-08-29T08:17:23.033028+00:00, sha 7838fd746a28)
  - site_page: https://centrifugal.dev/docs/5/getting-started/introduction (fetched 2026-08-29T08:17:23.034807+00:00, sha 87ab7da70915)
  - site_page: https://centrifugal.dev/docs/4/getting-started/introduction (fetched 2026-08-29T08:17:23.036617+00:00, sha d99a4fc7d697)
  - site_page: https://centrifugal.dev/docs/3/getting-started/introduction (fetched 2026-08-29T08:17:23.038673+00:00, sha f34f49f84edd)
- Data as of 2026-08-30T08:39:29.467469+00:00.
