{"adoption": {"forks": 817, "observed_at": "2026-08-28T04:09:15.848764+00:00", "stars": 5341}, "canonical_url": "https://ross.abutalabs.com/products/opendal", "card": {"archived": false, "artifact_type": "library", "description": "Apache OpenDAL: One Layer, All Storage.", "domain": ["files", "cloud-computing", "developer-tools", "backend"], "enriched": true, "function": ["file-system", "object-storage", "sdk", "developer-tools", "middleware"], "health_score": 100, "homepage": "https://opendal.apache.org", "language": "Rust", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["apache/opendal"], "name": "apache/opendal", "platform": ["rust", "python", "jvm", "go", "cpp", "c", "cross-platform"], "pushed_at": "2026-08-26T19:47:40+00:00", "repo": "apache/opendal", "stars": 5341, "tags": ["storage-abstraction", "object-storage", "s3", "gcs", "azblob", "unified-api", "apache", "multi-language-bindings", "async", "data-engineering", "nodejs"], "topics": ["storage", "s3", "rust", "azblob", "gcs", "redis", "hacktoberfest"], "urls": [], "use_cases": ["read and write files on S3, GCS, or Azure Blob through one API", "swap storage backends without rewriting application code", "access local filesystem and cloud object storage with the same interface", "add retry, timeout, and metrics to storage operations via composable layers", "generate presigned URLs for S3, GCS, or Azblob", "stream large objects without loading them into memory", "use one storage library across Rust, Python, Java, Go, and Node.js services"], "what_it_is": "Apache OpenDAL is an Open Data Access Layer providing one unified API to access object storage, file systems, cloud SaaS, databases, protocols, and key-value services across 50+ backends. Its Rust core is exposed through bindings for 17 languages including Python, Java, Go, Node.js, C, and C++, with composable layers for retry, timeout, logging, tracing, metrics, and throttling.", "when_to_avoid": ["you only ever target one storage backend and its native SDK suffices", "you need backend-specific advanced features not covered by OpenDAL's unified semantics", "you require a stable C or C++ binding today, as those remain experimental", "you need synchronous-only Go access with no external libffi dependency"], "when_to_choose": ["your application needs to support multiple storage backends behind a single API", "you want to avoid vendor lock-in to a specific cloud storage provider", "you are building data systems, AI pipelines, or analytics tools that must read/write diverse storage", "you need production-grade storage access with built-in retry, observability, and throttling", "you want a Rust-fast storage layer usable from your language of choice"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/opendal", "repo": "apache/opendal", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "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:09:15.848764+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.848764+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:58:49.586628+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d0d971352ff48e8d55629cfacaf117e7133d67767ba37d1af9b54fbc16a532a", "fetched_at": "2026-08-28T04:09:15.848764+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apache/opendal"}, {"content_hash": "1cd1e29b0ad64a3f35ef9a64dfe1161bcfceac4c7541946e3b577be31b283cf6", "fetched_at": "2026-08-29T08:53:22.112542+00:00", "kind": "homepage", "missing": false, "url": "https://opendal.apache.org"}, {"content_hash": "388f9a10fef68db671c799abb2f0890fba26ad08059f05138935fcdba88be6dd", "fetched_at": "2026-08-29T08:53:22.122004+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs"}, {"content_hash": "e99be4ea8e6d472e2ab29d9f28dee7796c9308a37436e20a381e254b2fe8ba31", "fetched_at": "2026-08-29T08:53:22.124062+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/core"}, {"content_hash": "d6cb8758aadbc37ae0de0fdc556779428707112198fe67c3c8dda742fa783c19", "fetched_at": "2026-08-29T08:53:22.126413+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/python"}, {"content_hash": "effad5e3224a0c66d521174803b08b5f21e0601c2c58c08da1e99b194f809f8e", "fetched_at": "2026-08-29T08:53:22.128371+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/java"}, {"content_hash": "206f18feaf636c95e6854cc68ca13df7d3f41fdfc488e805e5da6a43660b3a86", "fetched_at": "2026-08-29T08:53:22.130179+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/go"}, {"content_hash": "5ff166110c15e7be4a9004f02cacae35498df61bf0054278d542424ea182d11f", "fetched_at": "2026-08-29T08:53:22.131842+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/nodejs"}, {"content_hash": "80cc1eae204bf2f296333faadc168af83b43fbf4aa20b4f0ddfc6311548dd34a", "fetched_at": "2026-08-29T08:53:22.133642+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/c"}, {"content_hash": "552e0da9735c7c562f06fa7f10c7e9f3bb123485823dfda77f449a2c3347d5df", "fetched_at": "2026-08-29T08:53:22.135566+00:00", "kind": "site_page", "missing": false, "url": "https://opendal.apache.org/docs/bindings/cpp"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 98}, "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": 1661, "days_push": 7, "days_rel": 13, "gap_med": 24, "n_releases_24m": 20}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}