MinIO
High-performance, S3-compatible object storage built for AI/ML and analytics workloads — run it anywhere from a laptop to a petabyte-scale cluster.
MinIO is an open-source, S3-compatible object storage server written in Go. It implements the full Amazon S3 REST API, making it a drop-in replacement for AWS S3 that you fully control. Originally designed for high-throughput AI/ML data pipelines and analytics workloads, it scales from a single binary running on a developer laptop to a multi-pool distributed cluster handling petabytes of data — without any architectural changes.
The server uses erasure coding at the disk level to provide data durability across drive failures without RAID hardware or external coordinators. Its built-in data lifecycle engine handles object expiration, intelligent storage tiering, and cross-site replication with dynamically scaled worker pools, all within the core process. This makes MinIO operationally simple: there are no separate replication managers, no external metadata stores, and no sidecar services.
As of mid-2024, the MinIO project announced that this GitHub repository is no longer actively maintained by the MinIO team. Community users are directed to AIStor Free for a standalone, license-free edition, while production deployments requiring commercial support are directed to AIStor Enterprise. The source code in this repository remains available under AGPLv3 and continues to build, but new feature development and security fixes are being directed to the AIStor product line.
For teams evaluating self-hosted S3-compatible storage, MinIO’s codebase remains a valuable reference implementation. Organizations already running MinIO in production should evaluate their migration path to AIStor or alternative maintained projects.
What You Get
- Full S3 API compatibility - Implements the complete Amazon S3 REST API including multipart uploads, versioning, object locking, presigned URLs, and lifecycle rules, so existing S3 SDKs and tools work without modification.
- Erasure-coded storage - Distributes data across drives with configurable parity using the Reed-Solomon algorithm, tolerating simultaneous drive failures while maintaining read and write quorum without RAID.
- Built-in web console - Ships an embedded object browser accessible at
http://localhost:9000for bucket management, object uploads, access key administration, and real-time metrics monitoring. - MinIO Client (mc) CLI - Provides UNIX-style commands (ls, cp, mirror, diff, pipe) for interacting with MinIO and any S3-compatible service, including scripting bulk operations and syncing data between endpoints.
- Identity federation - Integrates with OIDC providers (Keycloak, Okta, Auth0) and LDAP/Active Directory for centralized user authentication and group-based policy assignment.
- Multi-site replication - Supports active-active replication across geographically distributed deployments with dynamic worker pools that self-tune to observed throughput, enabling disaster recovery without external orchestration.
- Event notifications - Publishes object lifecycle events (PUT, DELETE, replicate) to Kafka, NATS, MQTT, Redis, Elasticsearch, PostgreSQL, MySQL, and Webhook endpoints out of the box.
- Kubernetes deployment - Ships community-maintained Helm charts and integrates with the MinIO Operator for production Kubernetes clusters with persistent volume management.
Common Use Cases
- AI/ML dataset storage - Data engineers store training datasets, model checkpoints, and inference artifacts in MinIO, leveraging S3 compatibility to use the same boto3 or minio-go code they would use with AWS S3.
- S3-compatible local development - Developers run MinIO as a Docker container to test S3 integrations locally before deploying to production, eliminating AWS costs and network latency during development.
- On-premises data lake storage - Organizations deploy MinIO on bare-metal servers as the backing store for analytics platforms like Apache Spark, Presto, or Trino, keeping data under their own control.
- Backup and archival target - Operations teams configure Velero, Restic, or custom backup tools to write backups to a self-hosted MinIO endpoint, maintaining off-site copies without paying public cloud egress fees.
- Multi-tenant storage for private clouds - Platform teams provision isolated MinIO buckets with per-tenant access policies and quotas to provide S3-compatible storage as a service within an organization.
- Video and media asset storage - Media companies store large video files, processed thumbnails, and streaming segments in MinIO, using presigned URLs to serve content directly to clients without proxying through the application server.
Under The Hood
Architecture MinIO employs a deeply layered, interface-driven architecture where the ObjectLayer abstraction cleanly separates HTTP API handlers from all storage backend concerns, enabling pluggable backends and precise testability without storage dependencies. The erasure-coded storage engine is encapsulated within a server pool abstraction that dynamically selects storage sets via consistent hashing, making pool expansion transparent to upper layers. IAM, lifecycle management, cross-site replication, encryption, and event notifications are each isolated into dedicated subsystems with well-defined interaction boundaries, relying on context propagation and explicit typed errors rather than global state. Data flow from HTTP handler through authentication, authorization, lifecycle evaluation, and backend write is linear and traceable, though the core command package accumulates substantial surface area that new contributors must orient to before making changes.
Tech Stack MinIO is written entirely in Go 1.24 and implements the Amazon S3 REST API through a hand-rolled HTTP server with no dependency on web frameworks like Gin or Chi. Storage durability relies on a highly optimized erasure coding library using the Reed-Solomon algorithm. Metadata serialization uses code-generated MessagePack via the tinylib/msgp library, which avoids reflection overhead entirely. Identity federation integrates coreos/go-oidc for OIDC/JWT and go-ldap for Active Directory. Event notifications publish to Kafka via IBM Sarama, MQTT via Eclipse Paho, and several database and messaging backends. Kubernetes deployment is supported via community Helm charts and the separate MinIO Operator. Code generation for MessagePack types and string constants is managed through Go’s native tool directive system.
Code Quality MinIO maintains extensive test coverage across unit, integration, and race-condition scenarios using Go’s standard testing package with structured table-driven tests — with over 140 test files in the core package alone and comprehensive coverage in internal subpackages. Error handling is idiomatic Go, propagating errors explicitly with contextual wrapping, though structured machine-readable error attributes are limited. Naming conventions are consistent idiomatic Go with clear package boundaries. CI tooling enforces gofumpt formatting (stricter than gofmt), race detection, and static analysis. The presence of dedicated SECURITY.md and VULNERABILITY_REPORT.md files reflects a disciplined responsible disclosure process, and the project maintained a rapid CVE patch cadence during its active maintenance period.
What Makes It Unique MinIO’s core innovation is implementing S3-compatible object storage using erasure coding at the disk level with dynamic quorum decisions that allow reads and writes to succeed through simultaneous drive failures, without RAID hardware or a centralized coordinator. The metadata serialization strategy using code-generated MessagePack with inline versioning allows atomic metadata updates across distributed nodes with minimal lock contention. Its data scanner implements intelligent lifecycle management — tiering, expiration, and replication queue prioritization — directly in the storage layer without external orchestration services. Site-level replication with self-adjusting worker pools eliminates separate replication managers, and the system operates correctly from a single-node development instance to petabyte-scale distributed clusters with no architectural changes required.
Self-Hosting
MinIO is licensed under the GNU Affero General Public License v3.0 (AGPLv3). In plain terms, this is a strong copyleft license: you can use, modify, and distribute MinIO freely, but if you run a modified version as a network service and others interact with it, you must release your source code changes under the same AGPLv3 terms. Commercial or proprietary use — including embedding MinIO in a product or reselling storage services built on it — requires careful legal review against your AGPLv3 obligations, or a commercial license from the vendor.
The operational reality of running MinIO yourself is that it is a single binary with no external database dependencies, which simplifies initial deployment significantly. However, production hardening requires attention to erasure coding configuration (drive layout, parity ratios), identity and access management setup via OIDC or LDAP, TLS certificate management, and monitoring via Prometheus metrics. Distributed deployments across multiple nodes add network topology considerations, and backups, rolling upgrades, capacity planning, and incident response all fall entirely on your team. The project historically provided good documentation, but since this repository moved to unmaintained status, documentation for community edition features may diverge from AIStor.
As of mid-2024, the MinIO team explicitly announced this repository is no longer maintained, directing community users to AIStor Free (a standalone, free-licensed edition) and production users to AIStor Enterprise (which adds commercial support, SLA-backed uptime, managed upgrades, and distributed high-availability capabilities). If you are starting a new deployment, evaluate whether the community-edition source still meets your needs or whether AIStor’s product line better fits your requirements. Existing MinIO deployments should assess the migration path carefully, as AIStor may introduce configuration or API changes not present in this repository.
Related Apps
Jellyfin
File Storage
The Free Software Media System — stream your entire media library from your own server, with no subscriptions, no tracking, and no strings attached.
Jellyfin
GPL 2.0Puter
File Storage · Developer Tools
A self-hostable, web-based internet OS with desktop GUI, cloud storage, AI drivers, and a developer SDK — all running in your browser.
Puter
AGPL 3.0Spacedrive
File Storage · Collaboration
One file manager for all your devices and clouds — powered by a Virtual Distributed File System built in Rust.