Skip to content
DocumentationTry Hanzo
s3.hanzo.ai

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.

Buckets
Over HTTP
AES-256
At rest
10 + 4
Erasure coding
OIDC
SSO built-in

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

upload.py
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,
)
Open Source Revenue Sharing

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.

Make a bucket

Get started with 10 GB free. No egress fees on Hanzo Cloud.

Open source

License: Apache-2.0hanzoai/s3

Get Storage

Distributed object storage