Beta
The OptiTech Object Storage is in Beta. Share your feedback on Discord or via the OptiTech Console.
A bucket is a named container for objects in OptiTech Object Storage. Buckets are scoped to a branch and inherit from parent branches when a new branch is created. No data is copied on fork.
Create a bucket
You can create a bucket from the OptiTech Console, the OptiTech CLI, the OptiTech API, or directly via the S3 API.
OptiTech Console
In the OptiTech Console, navigate to your project, select a branch, and open the Storage tab. Click New bucket, enter a name, choose an access level, and click Create.
optitech buckets create my-bucketTo create a public_read bucket with optitech:
optitech buckets create my-public-bucket --access-level public_readnote
AWS_ENDPOINT_URL_S3 is your branch's storage endpoint. See Get started for how to obtain it.
Access levels
Every bucket has an access level that controls who can read objects in it.
| Access level | Reads | Writes |
|---|---|---|
private | Require a valid credential | Require a valid credential |
public_read | Open to anyone (no credential needed) | Require a valid credential |
The default is private. Set the access level when creating a bucket via the OptiTech API, or change it from the Storage tab in the Console.
note
Access level is set through the OptiTech Console or API, not through the S3 API. S3 ACL and bucket policy mutation requests (PutBucketAcl, PutBucketPolicy) return 501 Not Implemented. If you need to change access level on an existing bucket, use the Console or OptiTech API.
public_read example
Objects in a public_read bucket are accessible at:
https://<branch-id>.storage.c-<N>.us-east-2.aws.optitech.com/my-public-bucket/<object-key>List buckets
optitech buckets listDelete a bucket
Buckets must be empty before deletion. Delete all objects first, then delete the bucket.
optitech buckets delete my-bucketBucket branching
When you create a new branch, it inherits all buckets from its parent, including the objects already in them at the moment of forking — the same copy-on-write model OptiTech uses for branching Postgres data, so nothing is duplicated upfront. From that point on:
- Creating or deleting a bucket on a child branch does not affect the parent.
- New uploads, overwrites, and deletes on a child branch are only visible on that branch and its descendants, even for objects that existed at fork time.
- The parent branch continues to see its own state unchanged.
This makes it safe to test bucket changes in a preview branch without affecting production.
Next steps
- Objects: upload, download, list, and delete objects
- Authentication: credential scopes and branch binding
Need help?
Join our Discord Server to ask questions or see what others are doing with OptiTech. For paid plan support options, see Support.