S3-compatible storage
Store user uploads, media and build artifacts in object storage that speaks the S3 API, and let the built-in CDN deliver them close to your users. No new SDK to learn, no separate CDN to wire up.
S3 API you already know
Keep the client library and the code you have. Swap the endpoint and the keys, and your existing upload and download paths keep working.
CDN included
The built-in Bunny CDN sits in front of your buckets and serves files from a node close to the visitor, so images and assets load fast wherever your users are.
Unlimited buckets
Create as many buckets as your architecture needs — per environment, per tenant, per kind of content. There is no cap and no per-bucket fee.
Per-bucket access keys
Issue a key that is scoped to a single bucket instead of handing every service the keys to everything. Rotate or revoke a key without touching the rest.
Public, public-read or private
Decide per bucket how it is exposed: fully public, readable by anyone but writable only with a key, or private so nothing is served without credentials.
Built-in file browser
Upload, preview and delete objects straight from the dashboard. Handy for one-off fixes and for checking what your application actually wrote.
Access, decided per bucket
Bucket visibility controls what the world can do. Access keys control what your services can do.
Bucket visibility
- Public
- Objects are readable and listable by anyone with the link — for assets that are meant to be out in the open.
- Public read
- Anyone can read an object, but writing and deleting requires a key. The usual choice for images, avatars and static files served to browsers.
- Private
- Nothing is served without credentials. Use it for documents, backups and anything you would not want indexed.
Access keys
- Scoped per bucket
- A key can be limited to one bucket, so a leaked key from a side service does not open the rest of your storage.
- Separate per service
- Give every application its own key and pass it through encrypted secrets. Revoking one service does not disrupt the others.
- Works everywhere
- The same keys work from your applications on Granite, from your laptop and from CI.
Storage questions
More questions? Email us at support@granite.so
Storage and traffic are billed from the same monthly usage credits as the rest of your project.
See pricing The rest of the platform
Everything your application needs lives in the same project, with no networking to configure.
App platform
Run HTTP apps, workers and cron jobs from a Docker image or your Git repository.
Learn more
Managed databases
PostgreSQL, MySQL, MongoDB-compatible and Valkey with backups and no public endpoints.
Learn more
Docker registry
A private registry for unlimited images, right next to the apps that run them.
Learn more
Be first in line for updates
and special pricing
Get early access to new features and exclusive discounts delivered straight to your inbox