RustFS
A young Rust reimplementation of MinIO’s design: S3-compatible, erasure-coded, Apache 2.0, and generally available since September 2026.
- What it is
- Object storage
- Type
- Open source
- Made by
- RustFS, Inc.
- License
- Apache 2.0
- Facts checked
- 5 October 2026
What it is
RustFS follows MinIO’s storage model closely. Drives are grouped into erasure sets of up to 16, and each object is split with Reed-Solomon coding into data and parity shards across one set, so it survives losing as many drives as it has parity shards. There is no separate metadata database: each object’s metadata sits in an xl.meta file next to its shards on every drive, in MinIO’s format, and small objects are stored inline in that file. A HighwayHash checksum on every shard catches silent corruption, and a background scanner heals damaged or missing shards. Capacity grows by adding a whole new pool of drives, not single disks.
Around that core it ships most of what MinIO users expect: IAM users, groups and policies, OIDC login, versioning, Object Lock, lifecycle rules with tiering to remote S3, bucket and site replication, event notifications, server-side encryption with keys in Vault or AWS KMS, and a web console on port 9001. It also speaks OpenStack Swift, WebDAV, FTPS and SFTP, and a preview S3 Tables feature serves an Iceberg REST catalog. Its compatibility gate runs Ceph’s S3 test suite: 455 standard cases pass, 17 are still planned and 270 are excluded (August 2026). Version 1.0.0 shipped on 16 September 2026, after about 100 alpha releases from July 2025, a beta in April 2026 and release candidates in August.
Why teams pick it
- The closest thing to a drop-in MinIO replacement: the same storage model, the same ports (9000 and 9001), similar flags, a console, and an importer for MinIO bucket metadata and IAM config
- Apache 2.0 instead of AGPLv3, so you can embed or modify it without publishing your changes
- MinIO’s feature set is largely there: versioning, Object Lock, lifecycle tiering, bucket and site replication, notifications, IAM and OIDC
- Easy to install: a single binary, a Docker image, RPM and DEB packages, a Helm chart and a Kubernetes operator
Watch out for
- Very new: 1.0.0 came out on 16 September 2026 and the first beta only in April 2026, so few teams have run it in production for long
- Running on MinIO’s existing drives is still marked preview, objects that MinIO encrypted can’t be read by the default build, and the switch is one-way
- Inherits MinIO’s layout rules: an erasure set’s width is fixed once created, capacity grows a pool at a time, and a single-drive install can’t be expanded in place
- S3 coverage is a tested subset: bucket access logging and ownership controls are still planned, ACLs are deliberately unsupported, and S3 Tables is a preview
- Built mainly by one company, whose marketing promises “100% native S3 compatibility” while its own docs describe a tested subset
Alternatives
What all object storage have in common →
Amazon S3AWSAWS’s object storage, and the de facto API most object stores copy.Apache OpenDALOpen sourceA Rust library, with bindings for Python, Java, Node.js, Go and more, that gives one API (read, write, stat, list, delete) over 50-plus storage backends: S3 and other object stores, local and HDFS file systems, Google Drive and Dropbox, and key-value stores.
Apache OzoneOpen sourceA Hadoop-born object store that serves the same buckets over S3 and as a Hadoop file system.
SeaweedFSOpen sourceA distributed blob store with an S3 gateway and a file system layer, built to store and serve billions of small files.
TigrisCommercialGlobally distributed S3-compatible object storage that moves data to where it’s read, with no egress fees.
Versity S3 GatewayOpen sourceA stateless S3 server that exposes an existing file system, or another object store, through the S3 API.How it fits with other technologies
Run RustFS in Docker with your own credentials, then use the aws CLI · bash
export AWS_ACCESS_KEY_ID=backup-admin
export AWS_SECRET_ACCESS_KEY="$(openssl rand -base64 24)"
# never keep the well-known default rustfsadmin / rustfsadmin
docker run -d --name rustfs --restart unless-stopped \
-p 9000:9000 -p 9001:9001 -v rustfs-data:/data \
-e RUSTFS_ACCESS_KEY="$AWS_ACCESS_KEY_ID" \
-e RUSTFS_SECRET_KEY="$AWS_SECRET_ACCESS_KEY" \
-e RUSTFS_CONSOLE_ENABLE=true \
rustfs/rustfs:1.0.1 /data
curl --fail http://localhost:9000/health
aws s3 mb s3://backups --endpoint-url http://localhost:9000
aws s3 cp --recursive ./exports/ s3://backups/2026-10-05/ --endpoint-url http://localhost:9000
# web console: http://localhost:9001Moving from MinIO#
RustFS is the most direct swap: the same model, the same ports and similar flags, and its README says its pool and erasure-set rules follow MinIO’s, though it picks parity differently. The safe route is a new RustFS deployment filled over S3: RustFS’s own migration guide uses mc mirror --watch to keep copying new objects until you switch endpoints, then mc diff to check, and rclone sync works the same way. Users and policies need recreating unless you import them.
The faster route is to start RustFS on MinIO’s drives. At startup it imports MinIO’s bucket metadata and IAM config, and its interop doc says it reads unencrypted MinIO objects. But the README still labels MinIO on-disk compatibility a preview, objects MinIO encrypted need a non-default rio-v2 build and the same master key (and can’t be read at all if MinIO used KES), and MinIO can’t read the drives back once RustFS has written to them. Take a backup first.
See it in a real stack
No architecture uses RustFS yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2024–2026
RustFS set out to rebuild MinIO’s proven design in Rust, aiming for memory safety, no garbage-collection pauses and an Apache 2.0 licence instead of the AGPLv3 that MinIO had adopted in 2021. The first code was written in 2024, and the team, now RustFS, Inc., worked on it until it open-sourced the project in July 2025.
The timing helped. As MinIO pulled back from its community edition and then archived it in April 2026, RustFS pitched itself as the replacement: it published a guide to migrating with mc mirror, added a mode that starts directly on MinIO’s drives, and pledged that its core repository would stay open source permanently. It passed 10,000 GitHub stars in October 2025 and 30,000 in July 2026.
After about 100 alpha releases, the project declared a beta in April 2026, release candidates in August and 1.0.0 GA on 16 September 2026, which it describes as the point where its core object storage is stable enough for production. Next on its roadmap are S3 Vectors and a RustFS 2.0 aimed at AI data centres.
Why it’s built this way
- Reimplement MinIO’s design rather than invent a new one
- Erasure sets, pools and the
xl.metaformat were proven at scale and familiar to operators. Matching them, down to the on-disk format, makes moving from MinIO and learning RustFS easier. - Rust instead of Go
- The project wanted memory safety without a garbage collector, to avoid collection pauses and keep latency steady under load.
- Apache 2.0 instead of AGPLv3
- A permissive licence lets companies embed and modify RustFS without publishing their changes, which is RustFS’s main pitch against MinIO.
Timeline
- 2024
Work on RustFS begins
- 2025
Open-sourced under Apache 2.0 with the first alpha (July)
- 2025
Passes 10,000 GitHub stars (October)
- 2026
Beta in April, as MinIO archives its repository
- 2026
1.0.0 GA after release candidates (September)
- RustFS blog: Announcing RustFS 1.0.0 GA
- RustFS: About (project timeline)
- RustFS blog: Announcing RustFS Beta
- RustFS blog: A safe harbor for the future
- RustFS blog: Migrating from MinIO to RustFS
- RustFS release 1.0.0-alpha.1 (July 2025)
- RustFS release 1.0.0 (September 2026)
- minio/minio on GitHub (archived)
- Wikipedia: MinIO
Sources17 · facts checked 5 October 2026
- RustFS
- rustfs/rustfs on GitHub (README, feature status)
- rustfs/rustfs: LICENSE
- RustFS release 1.0.0
- RustFS release 1.0.1
- RustFS release 1.0.0-beta.1
- RustFS docs: S3 compatibility matrix
- RustFS docs: Docker installation
- RustFS docs: Kubernetes operator
- RustFS repo: Erasure coding design
- RustFS repo: MinIO on-disk format interoperability
- RustFS: About
- RustFS blog: Announcing RustFS 1.0.0 GA
- RustFS blog: Migrating from MinIO to RustFS
- RustFS blog: Drop-in binary replacement from MinIO
- RustFS blog: Install RustFS with RPM and DEB packages
- rclone docs: rclone sync