Guides
Object storage
S3 compatible buckets on our Ceph cluster. Any S3 client works.
Buckets
A bucket is an S3 compatible container for files. Create one from the console under Object storage, from the CLI, or the API:
prgd buckets create acme-assets
POST /v1/buckets
{ "name": "acme-assets", "public": false }
Bucket names are global and DNS safe: 3 to 63 lowercase letters, digits and hyphens. Objects are billed per GB per month, measured every ten minutes. A bucket must be empty before you delete it.
Turn on public read to let anyone fetch objects by URL, for images and downloads. Private buckets need a key or a presigned URL.
Access keys
Create a key from the console or with prgd buckets keys create ci. The secret is shown
once. Keys work for every bucket in the project, and revoking one cuts off its clients at
once. Point any S3 client at our endpoint:
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_ENDPOINT_URL=https://s3.<region>.progrid.sa
AWS_DEFAULT_REGION=<region>
aws s3 cp backup.tar.gz s3://acme-assets/backups/
aws s3 ls s3://acme-assets/
rclone, s3cmd, MinIO client, Cyberduck, and the AWS SDKs all work with path style or virtual host style addressing.
Console, CLI and presigned URLs
The console browses a bucket by prefix, uploads through your browser, downloads and deletes. The CLI does the same:
prgd buckets upload acme-assets ./logo.png --key img/logo.png
prgd buckets ls acme-assets --prefix img/
prgd buckets download acme-assets img/logo.png
Both use presigned URLs from POST /v1/buckets/{name}/presign: a short lived link to GET,
PUT or DELETE one object without handing out keys. Applications can do the same to let users
upload straight to storage.
Terraform, SDKs and agents
Terraform manages buckets with prgd_bucket and keys with prgd_storage_key (the
secret lands in state; keep state private). The SDKs expose buckets with upload and
presign helpers and storageKeys. Agent tokens need storage:read and storage:write; the
MCP server exposes list_buckets, create_bucket, bucket_presign and create_storage_key.
Limits
| Limit | Value |
|---|---|
| Buckets per project | 100 |
| Access keys per project | 20 |
| Object size | 5 TB through multipart upload with an S3 client; 64 MB through the console |
| Presigned URL lifetime | 1 minute to 7 days |