{"adoption": {"forks": 728, "observed_at": "2026-08-28T04:10:43.710404+00:00", "stars": 10668}, "canonical_url": "https://ross.abutalabs.com/products/centrifugo", "card": {"archived": false, "artifact_type": "service", "description": "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.", "domain": ["web-development", "backend", "self-hosted", "microservices"], "enriched": true, "function": ["websocket", "message-queue", "http-server", "rpc", "middleware", "auth"], "health_score": 100, "homepage": "https://centrifugal.dev", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["centrifugal/centrifugo", "centrifugal/centrifuge"], "name": "Centrifugo", "platform": ["windows", "self-hosted", "go", "cloud"], "pushed_at": "2026-08-26T21:03:50+00:00", "repo": "centrifugal/centrifugo", "stars": 10668, "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"], "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"], "urls": [{"kind": "homepage", "url": "https://centrifugal.dev"}, {"kind": "site_page", "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"kind": "site_page", "url": "https://centrifugal.dev/docs/server/configuration"}, {"kind": "site_page", "url": "https://centrifugal.dev/docs/transports/overview"}, {"kind": "site_page", "url": "https://centrifugal.dev/docs/faq"}], "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"], "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.", "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"], "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"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/centrifugal/centrifugo", "repo": "centrifugal/centrifugo", "role": "main", "score": 99}, {"path": "/repos/centrifugal/centrifuge", "repo": "centrifugal/centrifuge", "role": "backend", "score": 84}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.710404+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:18:12.106221+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64f4600e2f5b8201679d69845aa074dc6a1bd47f1829f613edc2a0c7bc88b66b", "fetched_at": "2026-08-28T04:10:43.710404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/centrifugal/centrifugo"}, {"content_hash": "ff62c67d59c0e5ef8ea7e62ded4f08a87e7897ad15ca2ea13f51877b03d3ab83", "fetched_at": "2026-08-29T08:17:23.013473+00:00", "kind": "homepage", "missing": false, "url": "https://centrifugal.dev"}, {"content_hash": "f7beb832f67eaf573a157603695cd74ad468df79078309d9a6ac63dda2faad7c", "fetched_at": "2026-08-29T08:17:23.023266+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/getting-started/introduction"}, {"content_hash": "307842b1ad739f62edaa28b77ce7221523c0e6aaabef617fed3d99195122ce44", "fetched_at": "2026-08-29T08:17:23.025355+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/server/configuration"}, {"content_hash": "e016ce63c2c523aeb9e2ee15543e8b52e30473f13f49fd81b7f8ec76886fc8b2", "fetched_at": "2026-08-29T08:17:23.028561+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/transports/overview"}, {"content_hash": "3e984ac1e59c58caa42d5bdfd8cb4ec5726b899067afa12effddf7962a674945", "fetched_at": "2026-08-29T08:17:23.030515+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/faq"}, {"content_hash": "7838fd746a2869e6875e79f0981ca5732dc5ef5397983df8b038cd97020bbcd6", "fetched_at": "2026-08-29T08:17:23.033028+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/tutorial/intro"}, {"content_hash": "87ab7da709155d771106868ab878632c1d29f39468fcfb95b04dee410b0481a2", "fetched_at": "2026-08-29T08:17:23.034807+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/5/getting-started/introduction"}, {"content_hash": "d99a4fc7d697b21e9225f7df59cb04a0ad8515167c6a5b41083cf176719e7677", "fetched_at": "2026-08-29T08:17:23.036617+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/4/getting-started/introduction"}, {"content_hash": "f34f49f84edde182ed8e3251175c0532e735cbd879bee079b101323c8a6482e2", "fetched_at": "2026-08-29T08:17:23.038673+00:00", "kind": "site_page", "missing": false, "url": "https://centrifugal.dev/docs/3/getting-started/introduction"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4173, "days_push": 7, "days_rel": 10, "gap_med": 15, "n_releases_24m": 36}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}