Skip to main content
Three tiers, and knowing which tier a thing is in decides how much effort it deserves.

Tier 1 — irreplaceable

Tier 2 — expensive to lose, reconstructible

Tier 3 — do not bother

<root>/cache/corpora, <root>/packages (when object storage is on), and <root>/runs/**/work for finished runs. All reconstructible, all reclaimed under disk pressure anyway.

Backing up the database

Schema migrations run automatically at startup, so a dump restored into a newer build will be migrated forward. Restoring a dump into an older build is not supported — keep a note of the version each dump came from.

Restoring

1

Stop the console

Or put it in maintenance mode first and let jobs drain — see maintenance.
2

Restore the database and the storage root

They have to be consistent with each other. A database that references a run directory which was restored from an older snapshot will show artifacts that are not there.
3

Restore the secrets

Especially FORGE_SECRET_ENC_KEY. Without the original, stored integration credentials decrypt to nothing and every user has to re-link.
4

Start, and check

GET /api/version answers, the job list renders, and one finished run still shows its artifacts.
Test the restore. A backup nobody has restored is a hypothesis, and the failure mode — a missing encryption key discovered during an incident — is the expensive kind.

What is not in scope

Training data that lives outside the platform, and container images. Both are somebody else’s backup: the source of truth for a dataset you pushed is the object store, and for an image it is your registry.