{"adoption": {"forks": 96, "observed_at": "2026-08-28T04:04:25.896094+00:00", "stars": 1339}, "canonical_url": "https://ross.abutalabs.com/products/ternfs", "card": {"archived": false, "artifact_type": "service", "description": "An exabyte-scale, multi-region distributed file system", "domain": ["microservices", "machine-learning", "big-data"], "enriched": true, "function": ["file-system", "microservices"], "health_score": 96, "homepage": null, "language": "C++", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["XTXMarkets/ternfs"], "name": "XTXMarkets/ternfs", "platform": ["cpp", "self-hosted"], "pushed_at": "2026-08-21T11:04:31+00:00", "repo": "XTXMarkets/ternfs", "stars": 1339, "tags": ["distributed-file-system", "exabyte-scale", "multi-region", "immutable-files", "erasure-coding", "posix", "commodity-hardware", "storage", "infrastructure", "linux", "docker"], "topics": [], "urls": [], "use_cases": ["store petabyte or exabyte-scale ML training datasets", "build a multi-region replicated file system across data centers", "serve large immutable files to thousands of compute clients", "replace HDFS or similar HPC storage with commodity hardware", "recover accidentally deleted files with a configurable deletion policy"], "what_it_is": "TernFS is an exabyte-scale, multi-region distributed file system written in C++, designed for storing large immutable files on commodity hardware and Ethernet networking. It is used in production at XTX Markets for machine learning workloads and supports trillions of files, replication across data centers, and recovery from node failures or bitrot.", "when_to_avoid": ["your workload involves frequently modified small files or heavy directory churn", "you need a mature 1.0 filesystem with long-term API stability", "you need POSIX compliance for arbitrary application workloads", "you want a plug-and-play solution rather than operating your own distributed storage cluster"], "when_to_choose": ["you need to store and read very large mostly-immutable files at extreme scale", "you want multi-datacenter replication to survive a full datacenter failure", "you prefer commodity hardware and Ethernet over specialized storage appliances", "you need strong durability guarantees against bitrot and node failure"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ternfs", "repo": "XTXMarkets/ternfs", "role": "main", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "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:04:25.896094+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.896094+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:43:53.521817+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "35731ff7643eceb54c681b51bdd377270e8422735db50538882b8e77e7d27208", "fetched_at": "2026-08-28T04:04:25.896094+00:00", "kind": "readme", "missing": false, "url": "https://github.com/XTXMarkets/ternfs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 26, "rhythm": 37}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 365, "days_push": 12, "days_rel": 205, "gap_med": null, "n_releases_24m": 1}, "score": 62, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}