Storage
S3-compatible object storage backed by MinIO with erasure coding, bucket policies, lifecycle rules, and versioning.
Storage
The Storage service provides S3-compatible object storage backed by MinIO with erasure coding across multiple hosts. The Storage Agent manages cluster deployment, health monitoring, and configuration.
Features
- S3-compatible API — use any S3 SDK or tool (aws-cli, boto3, mc) to interact with your storage
- Erasure coding — data is encoded and distributed across 4 or more hosts for durability, surviving up to half the drives failing
- Bucket policies — fine-grained access control using S3-compatible bucket policies
- Lifecycle rules — automatically transition or expire objects based on age
- Versioning — keep multiple versions of objects for rollback and audit purposes
Create a Bucket
agentmetal bucket create --name assets --region fsn1
Configure Lifecycle Rules
agentmetal bucket lifecycle set assets \
--rule "expire-old:prefix=logs/:expiry=30d" \
--rule "archive:prefix=backups/:transition=90d:tier=glacier"
Enable Versioning
agentmetal bucket versioning enable assets
Access Your Storage
After creating a bucket, retrieve the S3 endpoint and credentials:
agentmetal bucket get assets --credentials
Use with the AWS CLI:
aws s3 ls s3://assets/ --endpoint-url https://s3.fsn1.agentmetal.local
Or from your application using any S3 SDK by pointing the endpoint to your AgentMetal storage URL.
What the Agent Manages
The Storage Agent performs these operations:
- MinIO cluster deployment — installs and configures MinIO across multiple bare-metal hosts with erasure coding
- Erasure coding configuration — sets up EC profiles to distribute data across available drives, ensuring durability even if multiple drives fail simultaneously
- Health monitoring — continuously checks disk health, node availability, and replication status
- Capacity management — tracks usage per bucket and alerts when approaching capacity limits
- Self-healing — replaces degraded drives and rebalances data automatically
Bucket Policies
Apply an S3-compatible bucket policy for access control:
agentmetal bucket policy set assets --policy policy.json
Example policy allowing public read:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::assets/public/*"
}
]
}
Architecture
MinIO is deployed with a minimum of 4 nodes and 4 drives per node. Data is erasure-coded with a default parity of 4, meaning the cluster can lose up to 4 drives and still serve reads and writes without data loss.