{"adoption": {"forks": 236, "observed_at": "2026-08-28T04:06:07.838302+00:00", "stars": 2035}, "canonical_url": "https://ross.abutalabs.com/products/openraft", "card": {"archived": false, "artifact_type": "library", "description": "rust raft with improvements", "domain": ["microservices", "databases"], "enriched": true, "function": ["concurrency", "developer-tools"], "health_score": 100, "homepage": null, "language": "Rust", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["databendlabs/openraft"], "name": "databendlabs/openraft", "platform": ["rust", "cross-platform"], "pushed_at": "2026-08-26T17:40:49+00:00", "repo": "databendlabs/openraft", "stars": 2035, "tags": ["raft", "consensus", "async-runtime", "replication", "distributed-storage", "algorithms"], "topics": ["consensus", "distributed-systems", "raft"], "urls": [], "use_cases": ["build a replicated key-value store with strong consistency", "implement leader election for a distributed database cluster", "add fault-tolerant consensus to a distributed SQL or NoSQL system", "replicate state machine logs across nodes in Rust", "build a highly available metadata service", "learn and experiment with Raft consensus in Rust"], "what_it_is": "OpenRaft is an advanced implementation of the Raft consensus protocol in Rust, designed to run on any async runtime. It serves as the consensus engine for distributed data storage systems and powers the meta-service cluster of Databend.", "when_to_avoid": ["you need a full out-of-the-box distributed database rather than a consensus library", "your project is not in Rust", "you need other consensus protocols like Paxos or Zab", "you want a simple, unmodified textbook Raft implementation without extensions"], "when_to_choose": ["you need a Raft consensus library in Rust with improvements over the standard protocol", "you want runtime-agnostic async Raft that works with tokio, async-std, or others", "you are building distributed storage systems like SQL, NoSQL, KV, streaming, or graph databases", "you want a well-tested, actively maintained consensus engine with extensive documentation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openraft", "repo": "databendlabs/openraft", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "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:06:07.838302+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:07.838302+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:59:21.339423+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a49a2dac20877d7f8ce9d88683ab7c88cd8d876d036a4d60d765b86116db00", "fetched_at": "2026-08-28T04:06:07.838302+00:00", "kind": "readme", "missing": false, "url": "https://github.com/databendlabs/openraft"}, {"content_hash": "b48dbdce3ef426d8bab38345ee26be75dd0e6b860abc2d89487ed0eeb9abd3a1", "fetched_at": "2026-08-29T10:38:54.214565+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/openraft"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 84}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1937, "days_push": 7, "days_rel": 28, "gap_med": 63.5, "n_releases_24m": 9}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}