minio/minio
MinIO
MinIO is a high-performance, S3-compatible object storage server written in Go. A single binary runs in standalone mode on a few directories or scales to a distributed deployment of dozens of nodes with hundreds of drives, using erasure coding to keep data available through disk and node failures.
Status note. The repository is no longer maintained for the community edition. The README at
README.mddirects new users to MinIO AIStor (free standalone) or AIStor Enterprise. The codebase here is the source of the AGPLv3 community edition and remains the upstream for AIStor.
What MinIO does
- S3-compatible object storage. Implements the Amazon S3 REST API for buckets, objects, multipart uploads, ACLs, lifecycle, versioning, replication, encryption, and object lock. Implementation lives in
cmd/api-router.go,cmd/object-handlers.go,cmd/bucket-handlers.go, andcmd/object-multipart-handlers.go. - Erasure-coded storage backend. A custom erasure-coding layer (
cmd/erasure*.go) splits objects into data and parity shards across drives so a deployment can tolerate the loss of half its drives or nodes. - Distributed cluster. Multiple servers form a single namespace via a custom REST grid (
cmd/storage-rest-server.go,internal/grid/). Server pools let an operator expand capacity by adding new pools of nodes (cmd/erasure-server-pool.go). - IAM and STS. Local users, groups, policies, and external identity providers (LDAP, OIDC) plus AWS-style STS endpoints for temporary credentials. See
cmd/iam.go,cmd/sts-handlers.go, andinternal/config/identity/. - Replication and tiering. Bucket replication to other S3 endpoints and lifecycle-driven tiering to Azure, GCS, S3, or another MinIO. Implementations:
cmd/bucket-replication.go,cmd/site-replication.go,cmd/tier.go,cmd/warm-backend-*.go. - KMS-backed server-side encryption. SSE-S3, SSE-KMS, and SSE-C support backed by a KMS abstraction (
internal/kms/,internal/crypto/). - Operational features. Embedded console (via
github.com/minio/console), Prometheus metrics v2 and v3, audit logging, FTP/SFTP servers, S3 Select, batch jobs, healing, scrubbing, and cluster-wide notifications.
Who uses it
MinIO targets engineers who need an S3-compatible object store on premises or in private cloud — for AI/ML pipelines, analytics, backup, and as a drop-in replacement for S3 in CI and dev. The README explicitly positions it for "AI/ML, analytics, and data-intensive workloads."
Quick map of the codebase
graph TD
M[main.go] --> CMD[cmd/ — server runtime]
CMD --> S3[S3 API handlers]
CMD --> ADM[Admin API handlers]
CMD --> EC[Erasure-coded backend]
CMD --> IAM[IAM and STS]
CMD --> NS[Namespace lock + DSync]
CMD --> REPL[Replication + Site replication]
CMD --> SCAN[Data scanner + Healing]
EC --> XL[xl-storage on local drives]
EC --> NET[storage-rest peer-to-peer]
INT[internal/ — reusable building blocks]
CMD --> INT
INT --> KMS[kms / crypto]
INT --> EVT[event / target/*]
INT --> CFG[config]
INT --> GRID[grid — RPC]
INT --> HTTP[http]Where to go next
- Architecture — how the server is wired, request flow, and erasure layout.
- Getting started — build, run, and connect with
mc. - Glossary — MinIO-specific terms (server pool, set, MRF, drift, decommission).
- Apps and runtimes — server, embedded console, FTP/SFTP, KMS bridge.
- How to contribute — the dev loop and PR process from
CONTRIBUTING.md. - API reference — S3, Admin, and STS surface area.
License
Source is licensed under AGPLv3. Documentation under CC BY 4.0. Compliance notes in COMPLIANCE.md and NOTICE.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.