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
| Backend | Best for | Notes |
|---|---|---|
| Local disk | Development and small single-host deployments. | Store files under /data/blobs and mount /data persistently. |
| S3 | Production AWS deployments. | Durable storage, presigned URLs, IAM-based access. |
| S3-compatible service | On-premise or non-AWS deployments. | Works with MinIO, Cloudflare R2, Backblaze B2, Wasabi, and similar services. |
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
| Prefix | Typical content |
|---|---|
screenshots/ | Per-step screenshots from UI runs and PR review checks. |
video/ | Scenario-level recordings when capture is enabled. |
dom/ | DOM snapshots, especially on failure. |
logs/ | Console and network logs. |
attachments/ | Uploaded files before Qodex disperses them into product objects. |
tool-calls/ | Tool payloads too large for chat transcripts. |
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.