OSS vs PROOSSPRO
Core MessagingA solid real-time foundation available in both editions
PUB/SUB, channels, namespaces
WebSocket, SSE, HTTP-streaming, WebTransport, GRPC transports
WebSocket bidirectional emulation
Stream subscriptions with history, recovery, cache mode
Map subscriptions for state sync
Map subscriptions enhancements
In-memory cache layer, PostgreSQL read replicas and broker fan-out, Redis Cluster support with sharded PUB/SUB, and per-namespace map brokers for using different backends per channel namespace. Learn more →
Shared poll subscriptions
Shared poll enhancements
Instant initial data via cached items, delta compression, notification fast path for near-instant updates, adaptive backpressure, and a standalone relay server to centralize backend polling. Learn more →
Presence & join/leave events
Delta compression, client-side publication filtering by tags
Server-side publication tags filter
Server-controlled per-subscriber publication filtering via tags. Set by your backend through subscribe proxy or JWT — the client cannot override it. Works for stream and map subscriptions, enabling fine-grained access control within channels. Learn more →
Proxy events (connect, subscribe, publish, RPC)
Official real-time SDKs for popular languages
Security, auth, permissionsProtect your platform, control access at every level
JWT & proxy authentication
Channel capabilities & CEL expressions
Fine-grained permissions on a per-connection or per-subscription basis. Control who can publish, subscribe, or access history — configured via JWT claims or connect/subscribe proxy. Learn more →
Channel patterns
Define channel configuration using route-like patterns (e.g. /users/:name) similar to URL routing in web frameworks. Build familiar HTTP-style channel models without listing every namespace. Learn more →
Operation rate limiting
Limit the number of subscribe, publish, history, presence, RPC and other operations per connection using a token bucket algorithm. Automatically disconnect clients that generate too many errors. Learn more →
User blocking API
Block users at the Centrifugo level — blocked users are immediately disconnected and cannot reconnect. Supports optional persistence to Redis or database so blocks survive restarts. Learn more →
Token revocation & invalidation
Revoke individual tokens by JTI claim or invalidate all tokens issued before a specific time using IAT claim. Revocation info is kept in-memory with periodic sync, making checks fast. Learn more →
Multiple JWKS providers
Automatically extract and map JWT claims from third-party identity providers into Centrifugo connection metadata. Useful when working with providers that issue non-customizable tokens. Learn more →
Client labels
Attach a typed string map to each connection from JWT or the connect proxy. Use labels to segment Prometheus metrics, filter the server API (disconnect/refresh/subscribe/unsubscribe) by region/tier/version including fleet-wide, gate channels via CEL, segment ClickHouse analytics, and pass through to backend proxy requests. Learn more →
Server API JWKS authentication
Protect HTTP and GRPC server APIs with JWKS-based JWT authentication. Use tokens from your identity provider (Keycloak, Auth0, etc.) instead of static API keys. Learn more →
Scalability and performanceLower costs and handle more with fewer resources
Scale with Redis, Redis Cluster and NATS
Per-namespace engines
Assign different broker backends to different namespaces to scale load and match each feature to the right backend — PostgreSQL for transactional channels, Redis for high-throughput channels, separate Redis instances per namespace to distribute load. Learn more →
Singleflight & shared position sync
Merge identical parallel requests to history, presence, or presence stats into one real network request. Particularly effective during massive reconnect scenarios. Learn more →
Performance optimizations
Batch periodic client events (ping, presence updates) to reduce CPU usage and system calls. Reported over 2x CPU reduction for idle connections in benchmarks. Learn more →
Sharded PUB/SUB for Redis Cluster
Use Redis 7.0+ sharded PUB/SUB to distribute channel load across cluster nodes instead of broadcasting to all. Includes node-grouped mode that reduces connection count from num_partitions to num_redis_nodes. Works for both Engine and Map Broker. Learn more →
Bandwidth optimizations
Delta compression for at-most-once delivery, channel compaction, and client publish debouncing to coalesce rapid updates. Reduces bandwidth and broker load. Learn more →
Advanced message write and batching
Configure write_delay to collect messages before sending, trading delivery latency for reduced CPU. Can cut overall cluster CPU usage by half for high message rate scenarios. Learn more →
Fast Custom Controllers (Redis, Nats)
Isolate cross-node control traffic from channel data using a dedicated controller. Supports Redis, Nats in addition to PostgreSQL from the OSS version Learn more →
ObservabilityFull visibility into every connection, channel, and message
Prometheus metrics, admin UI
ClickHouse analytics (current stats, trends, per-connection resolution)
Export publications, connections, subscriptions, operations, and push notification events to ClickHouse. Run fast analytical queries with effective data retention policies. Trends and connection flight recorder in admin web UI. Learn more →
Real-time channel & user tracing
Attach to any channel or user ID in real time to see all messages and events as they happen. Available in admin UI or via API. Traces can be saved to files for later analysis. Learn more →
Connection & channel snapshots
Inspect current state of connections and channels across the cluster. See who is connected, what they are subscribed to, and channel-level stats. Learn more →
SSO/OIDC for admin UI
Authenticate admin UI users via any OIDC-compatible identity provider (Okta, KeyCloak, Google, Azure, etc.) with PKCE support. Checks user permissions on every request. Learn more →
Configuration viewer
Effective configuration is visible in admin web UI Learn more →
Enhanced metrics
Channel namespace resolution and client SDK name breakdown in Prometheus metrics, Prometheus to OTEL metrics bridge, per-node CPU and RSS stats in admin UI, and more. Learn more →
EngagementReach users even when they are offline
Push notifications (FCM, APNs, HMS, WebPush)
Send push notifications to Android, iOS, and web via FCM, APNs, HMS and WebPush (VAPID). Supports timezone-aware delivery, localization, and templating. Learn more →
Device token management & topics
Built-in device token storage in PostgreSQL with topic-based subscriptions and Redis-based worker queues. Centrifugo handles the full push notification lifecycle. Learn more →
Additional APIs and eventsExtended server-side APIs and channel events for deeper integration
Additional event hooks
Channel state events (occupied/vacated webhooks when subscribers join or leave) and cache empty events (notify backend on cache misses for lazy state population). Learn more →
User status API
Clients call update_user_status RPC on meaningful actions, storing last active time in Redis. Query status for multiple users at once — useful for showing online indicators in chat apps. Learn more →
Connections API
Retrieve all active user sessions by user ID or expression without requiring presence. Attach JSON metadata to connections for server-side inspection and session management. Learn more →
SupportGet help when you need it
Community support
Prioritized support