Skip to content

S3 Storage

mise-server uses S3-compatible object storage as the authoritative blob store. All cached and hosted package content is stored as BLAKE3-hashed blobs.

Supported Providers

  • AWS S3
  • MinIO
  • Cloudflare R2
  • Tigris
  • Any S3-compatible API

Configuration

toml
[settings]
s3_bucket = "my-cache-bucket"
s3_region = "us-east-1"
s3_prefix = "cache/"
# s3_endpoint = "https://minio.example.com"  # omit for AWS

Or via environment variables:

bash
export MISE_SERVER_S3_BUCKET=my-cache-bucket
export MISE_SERVER_S3_REGION=us-east-1
export MISE_SERVER_S3_PREFIX=cache/
export MISE_SERVER_S3_ENDPOINT=https://minio.example.com  # omit for AWS
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...

Credentials

S3 credentials are read from:

  1. AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY environment variables
  2. Instance IAM role (when running on AWS)

Content-Addressable Blobs

Files are stored by their BLAKE3 hash at {prefix}blobs/{hash[0:2]}/{hash}. Identical content across registries is automatically deduplicated.

Metadata (path, registry, size, content hash, timestamps) is stored in PostgreSQL, not S3.

Licensed under FSL-1.1-ALv2. Maintained by @jdx.