Skip to main content

Apache OpenDAL™ Rust Core

opendal is the Rust core that every OpenDAL binding is built on. It is the most complete and most mature surface of the project: every service, every layer, and the full async API live here first.

New to the model behind the API? Read Concepts first — service, operator, layer, operation are the same four ideas in every language.

Status

Stable and production-ready. The crate follows semver; breaking changes are batched into minor releases and documented in the Upgrade Guide.

Capabilities

  • Async-first, with an optional blocking API.
  • Streaming reads and writes for data that does not fit in memory.
  • 50+ services behind one API — see Services for the full list and per-service configuration.
  • Composable layers for retry, logging, timeout, and metrics — see Going to production.
  • Presigned URLs for services that support them (S3, GCS, Azblob, …).

Installation

cargo add opendal

OpenDAL is modular: each service is its own feature flag. The in-memory service is always available; enable any other service — including fs — with its services-* feature.

[dependencies]
opendal = { version = "0.57", features = ["services-s3"] }

Next steps

  1. Getting started — a runnable program, then a real backend.
  2. Connecting to your storage — build an operator for any service.
  3. Common tasks — read, write, stream, list, presign, and more.
  4. Going to production — retry, timeouts, errors, observability.