DarkDuck stores uploaded files (issue attachments, images, company logos) using a configurable storage provider.

Local Disk (Default)

Files are stored at:
~/.darkduck/instances/default/data/storage
No configuration required. Suitable for local development and single-machine deployments.
Local disk storage stores files on the same machine running DarkDuck. This is the simplest option but doesn’t support multi-node deployments.

S3-Compatible Storage

For production or multi-node deployments, use S3-compatible object storage (AWS S3, MinIO, Cloudflare R2, etc.). Configure via CLI:
pnpm darkduck configure --section storage
This prompts for:
  • Bucket name — the S3 bucket to use
  • Region — AWS region or equivalent
  • Endpoint — custom endpoint URL (for MinIO, R2, etc.)
  • Access credentials — access key ID and secret access key

Provider Comparison

ProviderBest ForNotes
local_diskLocal development, single-machineZero config, no external dependencies
s3 (AWS)Production cloud deploymentsStandard S3 API, managed service
MinIOSelf-hosted productionS3-compatible, runs on your infrastructure
Cloudflare R2Edge deploymentsS3-compatible, no egress fees

Configuration Location

Storage configuration is stored in the instance config file:
~/.darkduck/instances/default/config.json
When migrating from local disk to S3, existing files are not automatically transferred. Upload any existing attachments to your S3 bucket manually, or plan the migration during a maintenance window.

What Gets Stored

  • Issue attachments (files uploaded to issues)
  • Company logos
  • Agent-uploaded assets
  • Document revision content
All stored files are scoped to a company. Cross-company access is denied.