Storage backends
Qodex stores product state in Postgres and stores large artifacts in a blob backend. Artifacts include screenshots, videos, DOM snapshots, console logs, network logs, uploaded attachments, and large tool-call payloads. These files are important for debugging failed tests and reviewing findings.Backend choices
Qodex chooses the backend at boot with:
s3 and development defaults to local.
Local storage
Local storage writes artifact files to disk. In the Docker image, the default state directory is/data, so artifacts land under:
/data as a named volume or host directory:
S3 storage
S3 storage is the recommended production backend. Set:S3-compatible storage
For MinIO, Cloudflare R2, Backblaze B2, Wasabi, or another compatible service, set an endpoint and credentials:What Qodex stores
API-only runs usually write fewer artifacts. UI runs with video enabled can write much more.
Retention and lifecycle
Artifacts are often the evidence behind findings. If you expire them too early, the finding still exists but evidence links may no longer open. A reasonable starting point:- Keep recent screenshots and videos hot for 90 days.
- Expire temporary attachment staging paths after 7 days.
- Expire or archive logs after 180 days.
- Move older high-volume artifacts to cheaper storage when supported.
Moving from local to S3
There is no built-in migration command. To move existing artifacts:- Stop Qodex.
- Sync the local blob directory to S3.
- Set
STORAGE_BACKEND=s3and the S3 variables. - Start Qodex again.
Next steps
Environment variables
See every storage-related variable.
Single-container deploy
Mount
/data for local storage.AWS Terraform reference
Review the production S3 layout.
Secret management
Understand what is encrypted separately from artifacts.