Cadense

Object Storage

Configure S3-compatible object storage (AWS S3, Cloudflare R2, MinIO, Backblaze B2) for self-hosted Cadense

Cadense stores workspace files, knowledge-base documents, invoice attachments, and generated files in object storage. On a self-hosted deployment you can point it at AWS S3 or any S3-compatible endpoint — Cloudflare R2, MinIO, or Backblaze B2.

AWS S3

Set your region and credentials. S3_BUCKET_NAME is the general bucket — it holds workspace files, invoice attachments, and Mothership uploads.

AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
S3_BUCKET_NAME=cadense-files

Some file contexts use their own bucket and do not fall back to S3_BUCKET_NAME. If you use knowledge base or run workflows that produce generated files, set those buckets too — see Per-context buckets below.

Per-context buckets

Cadense routes each file context to a dedicated bucket (or Azure container). Knowledge-base and generated (execution) files must be configured separately — an unset knowledge-base bucket resolves to empty and its uploads fail.

ContextS3 variableAzure variableFallback
Workspace files, invoices, MothershipS3_BUCKET_NAMEAZURE_STORAGE_CONTAINER_NAME—
Knowledge baseS3_KB_BUCKET_NAMEAZURE_STORAGE_KB_CONTAINER_NAMEnone (required)
Generated / execution filesS3_EXECUTION_FILES_BUCKET_NAMEAZURE_STORAGE_EXECUTION_FILES_CONTAINER_NAMEsim-execution-files
ChatS3_CHAT_BUCKET_NAMEAZURE_STORAGE_CHAT_CONTAINER_NAMEnone
CopilotS3_COPILOT_BUCKET_NAMEAZURE_STORAGE_COPILOT_CONTAINER_NAMEnone

All contexts share the same region and credentials; only the bucket/container differs.

S3_KB_BUCKET_NAME=cadense-knowledge-base
S3_EXECUTION_FILES_BUCKET_NAME=cadense-execution-files

S3-compatible endpoints (R2, MinIO, Backblaze B2)

For providers other than AWS, set S3_ENDPOINT to the provider's endpoint. Path-style addressing (S3_FORCE_PATH_STYLE=true) is required for endpoints without virtual-hosted bucket DNS (for example MinIO); virtual-hosted providers such as R2 leave it false.

S3_ENDPOINT only changes where requests are sent — bucket names, credentials, and region are still configured the same way. When S3_ENDPOINT is unset, Cadense uses standard AWS S3.

Cloudflare R2

S3_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
S3_FORCE_PATH_STYLE=false
AWS_REGION=auto
AWS_ACCESS_KEY_ID=<r2-access-key-id>
AWS_SECRET_ACCESS_KEY=<r2-secret-access-key>
S3_BUCKET_NAME=cadense-files

MinIO (local / on-prem)

S3_ENDPOINT=http://localhost:9000
S3_FORCE_PATH_STYLE=true
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=<minio-access-key>
AWS_SECRET_ACCESS_KEY=<minio-secret-key>
S3_BUCKET_NAME=cadense-files

Backblaze B2

S3_ENDPOINT=https://s3.<region>.backblazeb2.com
S3_FORCE_PATH_STYLE=false
AWS_REGION=<region>
AWS_ACCESS_KEY_ID=<b2-key-id>
AWS_SECRET_ACCESS_KEY=<b2-application-key>
S3_BUCKET_NAME=cadense-files

Direct uploads

Some upload flows — such as knowledge-base document uploads — use presigned direct uploads: the client requests a presigned URL, sends the bytes straight to storage, then registers the file, so large files never proxy through the app. Other flows, such as the workspace Files page, post to an API route and the server writes the bytes to storage. When no cloud storage is configured, everything falls back to the local filesystem automatically — no configuration change is needed.

Azure Blob Storage

Azure Blob is also supported as an alternative to S3-compatible storage:

AZURE_ACCOUNT_NAME=...
AZURE_ACCOUNT_KEY=...
AZURE_STORAGE_CONTAINER_NAME=cadense-files

Existing files, file IDs, and storage keys remain stable across storage-provider configuration. Switching providers does not migrate existing objects — plan a copy if you change buckets or providers.

On this page

On this page