Skip to Content
ConfigurationOverview

Configuration

Almost everything an operator can change about a SeqDesk installation — the facility name, where sequencing data lives, whether pipelines run locally or on SLURM, which ENA account submissions use — is a setting. This section explains where settings live, which source wins when two of them disagree, and which settings a running application actually reads.

The mental model

There is one resolved configuration object. It is built by merging four sources, highest priority first:

  1. Environment variables (SEQDESK_*) — process-level, set by the service unit or the shell that starts SeqDesk.
  2. The config file (settings.json at the install root) — the reproducible, version-controllable description of the deployment.
  3. The database (the SiteSettings singleton row) — everything a facility admin edits in the Admin UI.
  4. Built-in defaults — compiled into the release.

The resolved object is cached in-process for 60 seconds, and every leaf value carries a source label (env, file, database, default) so you can always answer “why is this value what it is”. That answer is one API call away: GET /api/admin/config/status, which also backs the Configuration Sources panel on the Platform Info page (sidebar Settings → Info).

The part that surprises people

The resolved configuration is not what every feature reads. Only a handful of subsystems consult it — pipeline execution, the data base path, notifications, and telemetry. Most feature code reads the SiteSettings row directly.

That means a settings.json section such as ena or access is not a live control on a running server: it is an input that the installer, a hosted install profile, or Admin → Infrastructure → Import writes into the database, after which the database is what the feature reads. Editing that section on a running install and restarting will change what /api/admin/config/status reports and change nothing else.

Configuration Sources & Priority has the full table of which subsystems read which source. Read it before you conclude a setting is broken.

Where to start

  • Installing for the first time? The installer writes a working settings.json for you. Do not hand-write one first — see Installation and settings.json.
  • Changing something on a running install? Prefer the Admin UI. See Runtime Settings for what is editable there and what needs a restart.
  • Scripting a reproducible deployment? Put non-secrets in settings.json, secrets in environment variables, and apply both at install time with --config or --profile.
  • A value is not taking effect? Start at Configuration Sources & Priority, section When a setting appears to be ignored.

Neighbouring sections