Buildspace
Storage

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

ConceptDetail
EngineCloudflare R2 (S3-compatible)
ScopeOwned by your organization, not by a project
Quota25 buckets per organization by default
AccessPrivate by default; optionally public for reads
CredentialsBucket-scoped S3 access keys you mint yourself (up to 3 active per bucket)
File browserUpload, preview, rename, folders, bulk delete — right in Studio
MeteringSize 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" --public

Browse 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 --yes

Access 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> --yes

Revoking 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.

storage.ts
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

On this page