# apache/opendal

Apache OpenDAL: One Layer, All Storage.

Repository: https://github.com/apache/opendal
Canonical: https://ross.abutalabs.com/products/opendal
Homepage: https://opendal.apache.org
Language: Rust
License: Apache-2.0
License Family: permissive
Topics: storage, s3, rust, azblob, gcs, redis, hacktoberfest
Last push: 2026-08-26T19:47:40+00:00

## Health v2 (maintenance only)
Score: 99/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 98, longevity 100
- inputs: {"age_days": 1661, "days_push": 7, "days_rel": 13, "gap_med": 24, "n_releases_24m": 20}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 5341, forks 817 (observed 2026-08-28T04:09:15.848764+00:00)

## 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.

## 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

## 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

## 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

## Facets
- artifact type: library
- maturity: stable
- function: file-system, object-storage, sdk, developer-tools, middleware
- domain: files, cloud-computing, developer-tools, backend
- platform: rust, python, jvm, go, cpp, c, cross-platform
- tags: storage-abstraction, object-storage, s3, gcs, azblob, unified-api, apache, multi-language-bindings, async, data-engineering, nodejs

## Member repositories
- apache/opendal (main) score 99

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:09:15.848764+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:58:49.586628+00:00, confidence not recorded.
  - readme: https://github.com/apache/opendal (fetched 2026-08-28T04:09:15.848764+00:00, sha 6d0d971352ff)
  - homepage: https://opendal.apache.org (fetched 2026-08-29T08:53:22.112542+00:00, sha 1cd1e29b0ad6)
  - site_page: https://opendal.apache.org/docs (fetched 2026-08-29T08:53:22.122004+00:00, sha 388f9a10fef6)
  - site_page: https://opendal.apache.org/docs/core (fetched 2026-08-29T08:53:22.124062+00:00, sha e99be4ea8e6d)
  - site_page: https://opendal.apache.org/docs/bindings/python (fetched 2026-08-29T08:53:22.126413+00:00, sha d6cb8758aadb)
  - site_page: https://opendal.apache.org/docs/bindings/java (fetched 2026-08-29T08:53:22.128371+00:00, sha effad5e3224a)
  - site_page: https://opendal.apache.org/docs/bindings/go (fetched 2026-08-29T08:53:22.130179+00:00, sha 206f18feaf63)
  - site_page: https://opendal.apache.org/docs/bindings/nodejs (fetched 2026-08-29T08:53:22.131842+00:00, sha 5ff166110c15)
  - site_page: https://opendal.apache.org/docs/bindings/c (fetched 2026-08-29T08:53:22.133642+00:00, sha 80cc1eae204b)
  - site_page: https://opendal.apache.org/docs/bindings/cpp (fetched 2026-08-29T08:53:22.135566+00:00, sha 552e0da9735c)
- Data as of 2026-08-30T08:39:29.467469+00:00.
