Set STORAGE_BACKEND to choose where files are stored.
Memory
In-memory and ephemeral — files are lost on restart. Good for development and testing.
Local Disk
Files are written to disk. Make sure the directory exists and is writable. Use a persistent volume in Docker.
Google Cloud Storage
Uses Application Default Credentials. In GCE/Cloud Run, this works automatically. Locally, run:
Amazon S3
Uses the standard AWS SDK credential chain (environment variables, ~/.aws/credentials, IAM role, etc.). Works with any S3-compatible storage like MinIO, Cloudflare R2, or DigitalOcean Spaces — set AWS_ENDPOINT_URL to point to your provider.
For production, use local, gcs, or s3. The memory backend is only for development.