Skip to main content

Apache OpenDAL

Open Data Access Layer: Access data freely


Apache OpenDAL provides Rust Core and builds different language bindings like Node.js Binding and Python Binding.

More bindings like C, Java, Ruby are still being worked on.

use opendal::Operator;

let op = Operator::via_map(Scheme::Fs, HashMap::new())?;"path/to/file").await?;


Apache OpenDAL provides native support for all kinds for storage systems.

Standard Storage Protocols
  • ftp: FTP and FTPS
  • http: HTTP read-only services
  • sftp: SFTP services being worked on
  • webdav: WebDAV Service
Object Storage Services
File Storage Services
Consumer Cloud Storage Service
Key-Value Storage Service
Cache Storage Service


Apache OpenDAL offers native layer support, enabling users to implement middleware or intercept for all operations.

By using layers, we can:

  • RetryLayer: Automatically retry failed requests and resume from the point of failure.
  • ChaosLayer: Generate simulated chaos for storage services.
  • ConcurrentLimitLayer: Set concurrent limit while accessing storage services.
  • {Logging|Metrics|Tracing}Layer: Provide native observability for storage services.