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:
- Environment variables (
SEQDESK_*) — process-level, set by the service unit or the shell that starts SeqDesk. - The config file (
settings.jsonat the install root) — the reproducible, version-controllable description of the deployment. - The database (the
SiteSettingssingleton row) — everything a facility admin edits in the Admin UI. - 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.jsonfor 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--configor--profile. - A value is not taking effect? Start at Configuration Sources & Priority, section When a setting appears to be ignored.
Neighbouring sections
- Installation — how the first
settings.jsongets written, unattended installs, and hosted install profiles. - Administration — task-oriented guides for the admin screens named here: Data Storage, Pipeline Runtime, ENA Credentials, and Operational Telemetry.
- Updates & Maintenance —
settings.jsonlives at the install root and is symlinked into each release, so it survives updates and rollbacks unchanged.