Small
Extremely small boot footprint, using less than 2MB of memory.
Fast
Blazing-fast performance powered by Zig and Async ZIO.
Clean
Built on a multi-role finite state machine with no AI slop.
Quick Start
Build the binary and run a local S3 endpoint. No dependencies beyond Zig.
bash
# Requires Zig 0.16
# Build a release binary
zig build -Doptimize=ReleaseFast
# Run (listens on http://localhost:9000)
./zig-out/bin/z3
# Run with options
./zig-out/bin/z3 --port=9000 --data-dir=./data --tmp=./tmpEndpoint
http://localhost:9000
Data Directory
./data
Default Credentials
z3admin / z3admin
Usage
Point any S3 client at the endpoint. Here it is with the AWS CLI and the boto3 SDK.
AWS CLI
bash
export AWS_ACCESS_KEY_ID=z3admin
export AWS_SECRET_ACCESS_KEY=z3admin
aws --endpoint-url http://localhost:9000 s3 mb s3://mybucket
aws --endpoint-url http://localhost:9000 s3 cp file.txt s3://mybucket/
aws --endpoint-url http://localhost:9000 s3 ls s3://mybucket/ --recursive
aws --endpoint-url http://localhost:9000 s3 cp s3://mybucket/file.txt ./
aws --endpoint-url http://localhost:9000 s3 rm s3://mybucket/file.txtPython (boto3)
python
import boto3
s3 = boto3.client('s3',
endpoint_url='http://localhost:9000',
aws_access_key_id='z3admin',
aws_secret_access_key='z3admin'
)
s3.create_bucket(Bucket='test')
s3.put_object(Bucket='test', Key='hello.txt', Body=b'world')
print(s3.get_object(Bucket='test', Key='hello.txt')['Body'].read())Capabilities
A subset of the AWS S3 API, with more on the way. Z3 is in active early development.
Supported Now
- Buckets — create, list, delete
- Objects — PUT, GET, HEAD, DELETE
- ListObjectsV2 (prefix, delimiter, pagination)
- Multipart uploads for large files
- Range requests (206 Partial Content)
- Batch delete & HeadBucket
- SigV4 auth with admin / writer / reader roles
Under Development
- Versioning
- Lifecycle policies
- Bucket ACLs
- Pre-signed URLs
- Object tagging
- Encryption
TLS is not included — terminate HTTPS with a reverse proxy such as nginx or haproxy.