Standalone Buckets
Create S3-compatible storage buckets that aren't tied to a project, and browse their files from Creator Studio.
Projects get a storage bucket per environment when you enable object storage. Standalone buckets are the other half: buckets you create on their own — for client uploads, brand assets, backups, or files several apps share.
They live under Storage in Creator Studio, next to Databases. The same page also lists your projects' buckets, so every bucket in your organization is in one place.
What you get
| Concept | Detail |
|---|---|
| Engine | Cloudflare R2 (S3-compatible) |
| Scope | Owned by your organization, not by a project |
| Quota | 25 buckets per organization by default |
| Access | Private by default; optionally public for reads |
| Credentials | Bucket-scoped S3 access keys you mint yourself (up to 3 active per bucket) |
| File browser | Upload, preview, rename, folders, bulk delete — right in Studio |
| Metering | Size and file counts synced daily, shown on your billing page |
Create one
In Creator Studio, go to Storage → New Bucket, give it a name, and it's ready in seconds. Leave Public access off unless every file in the bucket is safe to share.
From the CLI:
buildspace storage create "Client uploads"
buildspace storage create "Brand assets" --publicBrowse files
Open a bucket to get the file browser: drag and drop to upload (files go straight to R2 through short-lived signed URLs), click into folders, preview images, video, audio, PDFs, and text, rename files, and bulk delete.
buildspace storage upload client-uploads ./contract.pdf clients/acme/contract.pdf
buildspace storage ls client-uploads clients/acme/
buildspace storage download client-uploads clients/acme/contract.pdf
buildspace storage rm client-uploads clients/acme/contract.pdf --yesAccess keys
Mint a key per consumer — an app, a script, a backup job — so you can revoke narrowly. Keys are scoped to this one bucket and can read and write it. The secret is shown once and never stored.
buildspace storage keys create client-uploads --label prod-app
buildspace storage show client-uploads # lists keys (no secrets)
buildspace storage keys revoke client-uploads <keyId> --yesRevoking a key takes effect immediately.
Connect to it
Standalone buckets speak the S3 API — use any S3 client with region: "auto". Keep the keys in environment variables.
import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
export const storage = new S3Client({
region: "auto",
endpoint: process.env.BUILDSPACE_BUCKET_ENDPOINT!,
forcePathStyle: true,
credentials: {
accessKeyId: process.env.BUILDSPACE_BUCKET_ACCESS_KEY_ID!,
secretAccessKey: process.env.BUILDSPACE_BUCKET_SECRET_ACCESS_KEY!,
},
});
await storage.send(
new PutObjectCommand({ Bucket: process.env.BUILDSPACE_BUCKET!, Key: "hello.txt", Body: "Hello!" })
);The bucket page shows the endpoint and bucket name, and Copy prompt for AI gives your coding agent everything it needs to wire the bucket in.
Public buckets
Buckets are private: files are reachable only with an access key or a short-lived signed URL. Turn on Public from the bucket page (or buildspace storage public <bucket> on) to serve anonymous reads from a public base URL — https://<public-url>/<key>. Writes still require a key. Every existing file becomes public too, so Studio asks you to confirm.
Delete
Deleting removes every file and revokes every access key — there is no undo. The bucket disappears from your list (and frees its quota slot) immediately; its files are cleaned up in the background. Studio requires you to type the bucket name; the CLI requires --yes.
buildspace storage delete client-uploads --yes