Commands¶
s3lo has a focused set of commands — one for each operation you'd do with a container registry, plus tools to manage storage.
| Command | What it does |
|---|---|
push |
Export a local Docker image and upload it to S3 |
pull |
Download an image from S3 and import it into Docker |
serve |
Serve images via OCI Distribution Spec (docker pull compatible) |
copy |
Copy an image to S3 from any OCI registry or another S3 bucket |
list |
List all images and tags in a bucket |
inspect |
Show image metadata: layers, size, platforms |
delete |
Delete an image tag |
clean |
Prune old tags and garbage collect unreferenced blobs |
stats |
Show storage usage, deduplication savings, and cost estimate |
config |
Manage per-image and bucket-wide configuration |
history |
Show push history for a bucket or repository |
tui |
Interactive terminal UI for browsing images and managing lifecycle |
scan |
Scan an image for vulnerabilities with Trivy |
sbom |
Generate a Software Bill of Materials (SBOM) for an image |
sign |
Sign an image manifest with AWS KMS or a local key |
verify |
Verify an image signature (exits 0/1/2 for CI gates) |
Reference format¶
All commands that reference an image use the same format:
Examples:
s3://my-bucket/myapp:v1.0
s3://my-bucket/org/backend:latest
gs://my-gcs-bucket/myapp:v1.0
az://my-container/myapp:v1.0
local://./local-s3/alpine:latest
The scheme prefix (s3://, gs://, az://, or local://) is always required. Commands that operate on
a specific image (push, pull, delete, inspect, scan, copy) require an explicit tag —
omitting the tag is an error.
Bucket-level commands (list, history, stats, clean, config) accept a reference without a tag:
S3-compatible backends¶
Use --endpoint to point s3lo at any S3-compatible storage such as MinIO, Cloudflare R2, or Ceph:
s3lo push myapp:v1.0 s3://my-bucket/myapp:v1.0 --endpoint http://localhost:9000
s3lo pull s3://my-bucket/myapp:v1.0 --endpoint https://my-account.r2.cloudflarestorage.com
The --endpoint flag is a persistent global flag available on all commands.