# Hanzo Storage — Hanzo AI

> Store files, model weights, backups, and media behind an API your tools already speak.

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

[Open Storage Console](https://s3.hanzo.ai)[Documentation](https://docs.hanzo.ai/docs/storage)

## 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&#x27;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.

[Connect & Earn](https://hanzo.ai/open-source/dividends)[Learn More](https://hanzo.ai/open-source)

## Make a bucket

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

[Get Started](https://s3.hanzo.ai)[View on GitHub](https://github.com/hanzoai/storage)

## Open source

License: Apache-2.0[hanzoai/s3](https://github.com/hanzoai/s3)

## Get Storage

Distributed object storage

[Deploy to Cloud](https://console.hanzo.ai/deploy)[Self-host](https://docs.hanzo.ai/docs/storage)
