Hanzo Storage
Buckets for files, weights and backups
Anything that is a file — uploads, model weights, datasets, database backups, rendered media — kept in buckets addressed over HTTP. Send a large one in parts and resume the part that failed. Hand out a link that expires. Keep the old version of an object so an overwrite is recoverable, and let a lifecycle rule retire what has aged. Objects are erasure-coded across ten data shards and four parity shards, so four can be lost and the object still reads.
What a bucket gives you
The pieces you would otherwise build around a filesystem, already built.
One HTTP API for objects
Buckets, objects, prefixes and listings over HTTP. Presigned URLs hand someone a link that stops working on a schedule. Multipart upload covers the file too big to send in one request.
Keys from KMS, not a config file
Each object gets a fresh data key, sealed under a key derived from your master, the key id and that request's own context. The master itself never lands on disk. Supply your own per-object key instead if you would rather hold it.
Large objects, handled as large
An upload splits into parts that travel in parallel, and a part that fails retries on its own rather than restarting the file — which is the whole difference between a resumable upload and an unresumable one at the sizes weights and datasets reach.
A console you sign into
Browse buckets, upload, set permissions and watch usage in the browser — behind your Hanzo account rather than a second password nobody remembers.
Versions, locks and expiry
Keep old versions so an overwrite is recoverable. Put a retention period or a legal hold on an object and it cannot be deleted before its time. Write a lifecycle rule and the rest ages out on its own.
Sessions instead of standing keys
Sign in through OIDC and take a short-lived session rather than pasting a long-lived access key into a deployment. Bucket policies and per-user rules decide what that session can reach.
Three lines of setup
import boto3
s3 = boto3.client("s3",
endpoint_url="https://s3.hanzo.ai",
aws_access_key_id="your-access-key",
aws_secret_access_key="your-secret-key",
)
# Upload a file
s3.upload_file("model.safetensors", "models", "v1/model.safetensors")
# Generate presigned URL
url = s3.generate_presigned_url("get_object",
Params={"Bucket": "models", "Key": "v1/model.safetensors"},
ExpiresIn=3600,
)Up to 5% of compute goes back to open source
Every deployment is SBOM-verified. Contributors to MinIO earn a share of compute revenue — transparent, on-chain, and customizable by the community.