S3-compatible storage, minus the egress bill.
Store and serve uploads, static assets, build artifacts, and backups with the S3 API you already use. Point your existing SDK or CLI at Brimble — no rewrites, no transfer charges, sitting right next to the rest of your stack.
const s3 = new S3Client({- endpoint: "https://s3.amazonaws.com",+ endpoint: "https://objects.brimble.io", region, credentials, forcePathStyle: true, });No egress fees. No request fees.
Most clouds meter every download, so your bill grows with traffic you can't control. Brimble doesn't — what you pay tracks the data you keep, not how often the world reaches for it.
Storage is metered hourly and billed as GB-months.
The S3 surface you know, without the parts you don't.
Drop-in S3, across every tool you already run.
The API surface is S3-compatible, so anything that speaks S3 works unchanged — the AWS SDKs, the AWS CLI, boto3, rclone, mc, s3cmd. Set the endpoint, region, and access key, and the operations you already call just work.
- No SDK rewrites — same commands, new endpoint
- list, head, get, put, delete, copy, multipart
# works with the tools you haveaws s3 ls s3://app-uploadsrclone copy ./dist brimble:assetsPrivate by default, shared by presigned URL.
Objects are private — reads and writes need a valid storage credential, so there's no anonymous public-read URL to leak. When you do need to hand a file out, mint a temporary signed URL for a single upload or download without your credentials ever leaving the server.
- Access keys scoped to Editor or ReadOnly, rotatable
- Per-bucket CORS rules for direct browser uploads
Storage that lives next to the rest of your stack.
Buckets are account-level and shared across your services, independent of any single project. Your apps, databases, and storage sit on one platform — fewer providers to wire together, one bill, one dashboard, and data that doesn't round-trip the public internet to reach your compute.
- Pick each bucket's region at creation
- Objects stay put — no surprise cross-region movement
Swap the endpoint. Keep your code.
Set the endpoint, region, and access key — then list, put, get, delete, copy, and multipart-upload exactly as you would on S3. The AWS SDKs, the AWS CLI, boto3, rclone, and mc all work as-is.
1import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3";2 3// Point the standard AWS SDK at your Brimble bucket4const s3 = new S3Client({5 endpoint: process.env.BRIMBLE_S3_ENDPOINT,6 region: process.env.BRIMBLE_S3_REGION,7 credentials: {8 accessKeyId: process.env.BRIMBLE_ACCESS_KEY_ID!,9 secretAccessKey: process.env.BRIMBLE_SECRET_ACCESS_KEY!,10 },11 forcePathStyle: true,12});13 14// Put an object15await s3.send(new PutObjectCommand({16 Bucket: "app-uploads",17 Key: "reports/2026/q1.pdf",18 Body: pdfBytes,19 ContentType: "application/pdf",20}));21 22// Get it back23const obj = await s3.send(new GetObjectCommand({24 Bucket: "app-uploads",25 Key: "reports/2026/q1.pdf",26}));npm install @aws-sdk/client-s3One bucket type, every kind of object.
A path is just a key. Address anything from a single avatar to a partitioned data lake the same way.
User uploads
s3://app-uploads/users/42/avatar.pngTake avatars, attachments, and media straight from the browser with a presigned URL, then serve them back the same way.
Static & media assets
s3://assets/media/2026/cover.jpgKeep large images, video, and generated reports out of your repo and off your app servers.
Build artifacts
s3://artifacts/builds/9f3a2c.tar.gzStash deploy output and cache layers next to the pipeline that produces them.
Backups & exports
s3://backups/db/2026-06-01.sql.gzWrite database dumps and exports on a schedule, and pull them back when you need them.
Data pipelines
s3://data-lake/events/2026/06/01/Land raw inputs, read them from a job, and write results back to the same bucket.
Migrate from any S3-compatible provider.
Already on AWS S3, Cloudflare R2, or Backblaze B2? Because the API matches, moving over is a configuration change — give Brimble read-only access and it copies everything across for you.
- 01
Create a bucket
Pick a name and a region in the dashboard — choose the region closest to your compute.
- 02
Point Brimble at your source
Add the source bucket's name, region, endpoint, and a read-only credential under Migrations → New migration.
- 03
Let it copy server-side
Object data, content type, and metadata copy directly — you don't proxy bytes through your laptop. Watch progress as it runs.
- 04
Issue keys and cut over
When the copy finishes, issue storage credentials for your apps and point them at the new bucket.
Start your free trial today.
Spend little to no time on DevOps and more time building. Super efficient way to host & scale your web app.