S3 API
Every S3 route MinIO serves, with byte-identical error responses. AWS SDKs, mint and warp work as before.
Version 1.0.0 · Open source · AGPL-3.0
Buckets is S3-compatible object storage built from MinIO's last public release. Point it at your existing MinIO drives and it serves them in place: the same S3 and admin APIs, the same on-disk format, and no data copied.
MinIO archived its community project in April 2026 and no longer publishes images or binaries.
Buckets picks up where RELEASE.2025-10-15T17-29-55Z left off, as a supported
successor you can build, audit and run yourself. It doesn't depend on any MinIO artifacts,
and it ships its own KES-compatible key server.
Drop-in compatible
Buckets keeps MinIO's external contract, so tools, SDKs, dashboards and scripts keep working unchanged.
Every S3 route MinIO serves, with byte-identical error responses. AWS SDKs, mint and warp work as before.
The madmin protocol, so mc admin keeps working: users, policies, heal, trace, replication, tiers and more.
MinIO's format.json and xl.meta v2, with the same erasure layout and HighwayHash bitrot protection. MinIO and Buckets read each other's drives.
Users, groups, service accounts and policies, plus STS with LDAP, OpenID Connect and client certificates. Your existing identity setup carries over.
The v2 and v3 metric names are identical, so existing Grafana dashboards and alert rules keep firing.
BUCKETS_* environment variables, with a fallback to every MINIO_* name. Your existing configuration needs no rewrite.
One caveat: the internode protocol is Buckets' own, so a single cluster can't mix MinIO and Buckets servers. You migrate a cluster as a whole, and the drives come along unchanged.
Migrate existing drives
There's no export, no copy and no second set of disks. Buckets takes over the drives MinIO wrote, and hands them back if you change your mind.
MINIO_* settings still apply.MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=change-me-now \
bucketsd server /mnt/disk{1...8}
adopt-minio.sh checks the tenant and prints the plan.BucketsCluster on the same PVCs.buckets-kes serves its keys from Vault, AWS, Azure or Google.scripts/adopt-minio.sh -n storage -t my-tenant # plan only
scripts/adopt-minio.sh -n storage -t my-tenant --apply # adopt
scripts/rollback-to-minio.sh -n storage -t my-tenant \
--state ./adopt-state --apply # hand it back
Performance
We measured both servers with MinIO's own load generator, warp, on the same machine and drives.
Buckets leads on writes and small reads, and stays within a few percent on large reads at full saturation.
Apple M-series machine (12 cores, shared with the load generator), 4 drives (EC 2+2) on one SSD, release builds,
warp v1.3.1 with 15 s per phase. PUT results and the 10 MiB GET are means of four alternating runs.
Writes share one disk, so they vary by about ±30% between runs.
Methodology and full results.
The work per request is plain C, with no GC pauses or runtime scheduler between a request and the disk.
Reed-Solomon coding and HighwayHash bitrot checks use NEON and SSSE3 vector instructions. MD5 and SHA-256 use OpenSSL's assembly.
The thread that verifies a block sends it straight to the socket, from the same buffer, while it's still in cache.
Several event loops, a worker pool tuned to avoid lock contention, and fewer syscalls on every write.
What's different
Buckets matches MinIO where your clients and drives depend on it, and changes what sits around them.
| MinIO community | Buckets | |
|---|---|---|
| Status | Archived (April 2026) | Maintained, 1.0.0 |
| Language | Go | C17 |
| Binaries and images | No longer published | Build from source; Dockerfiles included |
| S3, admin API, on-disk format | Reference | Compatible: 220 of 222 handlers |
| Key management | Separate KES server | buckets-kes: KES-compatible, with Vault, AWS, Azure and Google key stores |
| Kubernetes | MinIO Operator (Tenants) | Buckets operator, which adopts Tenants in place and can roll them back |
| Web console | Admin features removed from the community console in 2025 | Full admin console, deployed apart from storage |
| Enterprise sign-in | LDAP, OpenID Connect | LDAP, OpenID Connect, including Microsoft Entra ID app roles |
| Phone-home | SUBNET, call-home, self-update | None: removed |
| Mixed clusters | Not supported: the internode protocols differ, so a cluster migrates as a whole | |
| License | AGPL-3.0 | AGPL-3.0 |
Everything you ran on MinIO
Get started
Clone the repository, or download the 1.0.0 release.
git clone https://github.com/StorScale/buckets.git
cd buckets
Release 1.0.0 →
Needs a C17 compiler, CMake 3.20+ and OpenSSL 3.2+ (built for you if the system's is older). Dependencies are pinned and fetched for you.
cmake -S . -B build -G Ninja
ninja -C build
Start a server, then point any S3 client at it. On Kubernetes, install the operator with Helm.
BUCKETS_ROOT_USER=admin \
BUCKETS_ROOT_PASSWORD=change-me-now \
build/src/bucketsd server /srv/buckets