| Crates.io | depotd |
| lib.rs | depotd |
| version | 0.1.0 |
| created_at | 2026-01-06 02:44:54.632703+00 |
| updated_at | 2026-01-06 02:44:54.632703+00 |
| description | Bare-bones S3-compatible object store daemon (buckets as dirs, objects as files). |
| homepage | |
| repository | https://github.com/prsutherland/depotd |
| max_upload_size | |
| id | 2025060 |
| size | 119,662 |
An S3-compatible API server daemon.
cargo build --release
Create a configuration file (see depotd.toml.example for reference):
[server]
host = "127.0.0.1"
port = 9000
# Optional: If not provided, server runs in open mode (no authentication)
access_key = "your-access-key"
secret_key = "your-secret-key"
[storage]
root_path = "./data"
[logging]
level = "info"
./target/release/depotd --config depotd.toml
./target/release/depotd --config depotd.toml --daemon --pid-file /tmp/depotd.pid
The server implements the following S3-compatible endpoints:
GET / - List all bucketsPUT /:bucket - Create a bucketDELETE /:bucket - Delete a bucketGET /:bucket - List objects in a bucket (supports ?prefix= query parameter)GET /:bucket/*key - Get an objectPUT /:bucket/*key - Put an objectDELETE /:bucket/*key - Delete an objectObjects are stored in the filesystem under the root_path specified in the
configuration. Each bucket is a directory, and objects are files within those
directories.
The server supports AWS Signature Version 4 (SigV4) authentication. If
access_key and secret_key are configured, all requests must be
authenticated. If not configured, the server runs in open mode without
authentication.
# Configure AWS CLI to use depotd
aws configure set endpoint-url http://127.0.0.1:9000
aws configure set aws_access_key_id your-access-key
aws configure set aws_secret_access_key your-secret-key
# Create a bucket
aws s3 mb s3://my-bucket
# Upload a file
aws s3 cp myfile.txt s3://my-bucket/
# List objects
aws s3 ls s3://my-bucket/
# Download a file
aws s3 cp s3://my-bucket/myfile.txt ./
# Delete an object
aws s3 rm s3://my-bucket/myfile.txt