Environment Variables
All SeqDesk environment variables use the SEQDESK_ prefix. They have the
highest priority in the configuration resolution order, overriding config file
and database values.
Value Parsing
Environment variables are parsed according to their target type:
- Booleans —
"true"/"false"(case-insensitive) - Numbers — parsed as integers for fields like
scanDepthandcores - Arrays — comma-separated values, e.g.
".fastq.gz,.fq.gz,.fastq,.fq" - Strings — all other values
Site Settings
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_SITE_NAME | site.name | string | "SeqDesk" | Display name of the facility |
SEQDESK_DATA_PATH | site.dataBasePath | string | "./data" | Base path for sequencing data storage |
SEQDESK_CONTACT_EMAIL | site.contactEmail | string | — | Facility contact email address |
Pipeline Settings
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_PIPELINES_ENABLED | pipelines.enabled | boolean | false | Master switch for all pipeline features |
SEQDESK_PIPELINE_DATABASE_DIR | pipelines.databaseDirectory | string | "" | Shared root directory for large pipeline database assets |
SEQDESK_PIPELINE_RUN_DIR | pipelines.execution.runDirectory | string | "./pipeline_runs" | Output directory for pipeline runs |
SEQDESK_PIPELINE_MODE | pipelines.execution.mode | enum | "local" | Supported execution mode: local or slurm |
kubernetes may still be accepted by the low-level configuration
parser for compatibility with older files, but SeqDesk has no supported
Kubernetes execution backend. Use local or slurm.
Conda
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_CONDA_PATH | pipelines.execution.conda.path | string | "/opt/conda" | Path to Conda installation |
SEQDESK_CONDA_ENV | pipelines.execution.conda.environment | string | — | Conda environment name |
Pipeline execution is Conda-only. SeqDesk always sets its pipeline runtime mode
to Conda and adds the conda Nextflow profile when needed.
SLURM
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_SLURM_ENABLED | pipelines.execution.slurm.enabled | boolean | false | Enable SLURM job submission |
SEQDESK_SLURM_QUEUE | pipelines.execution.slurm.queue | string | "cpu" | SLURM partition/queue name |
SEQDESK_SLURM_CORES | pipelines.execution.slurm.cores | integer | 4 | CPU cores per job |
SEQDESK_SLURM_MEMORY | pipelines.execution.slurm.memory | string | "64GB" | Memory per job |
SEQDESK_SLURM_TIME | pipelines.execution.slurm.timeLimit | integer | 12 | Time limit in hours |
MAG Pipeline
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_MAG_ENABLED | pipelines.mag.enabled | boolean | true | Enable nf-core/mag pipeline |
SEQDESK_MAG_VERSION | pipelines.mag.version | string | "3.4.0" | nf-core/mag pipeline version |
SEQDESK_MAG_STUB | pipelines.mag.stubMode | boolean | false | Use stub mode (test mode, no real analysis) |
ENA Submission
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_ENA_TEST_MODE | ena.testMode | boolean | true | Use ENA test server instead of production |
SEQDESK_ENA_USERNAME | ena.username | string | — | Webin account username |
SEQDESK_ENA_PASSWORD | ena.password | string | — | Webin account password |
SEQDESK_ENA_CENTER | ena.centerName | string | "" | Submission center name |
SEQDESK_ENA_BROKER_ACCOUNT | ena.brokerAccount | boolean | false | Webin account has ENA broker permissions |
Always set ENA credentials through environment variables or the Admin UI — never commit them to a config file.
Sequencing Files
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_FILES_EXTENSIONS | sequencingFiles.extensions | array | ".fastq.gz,.fq.gz,.fastq,.fq" | Allowed file extensions (comma-separated) |
SEQDESK_FILES_SCAN_DEPTH | sequencingFiles.scanDepth | integer | 2 | Directory scan depth (1–10) |
Authentication
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_AUTH_REGISTRATION | auth.allowRegistration | boolean | true | Allow public user registration |
Accepted Compatibility Variables (Unsupported)
The configuration loader still recognizes these names so older configuration files and deployment manifests continue to parse. They are not functional controls in the current runtime:
| Variable | Accepted Config Path | Actual Runtime Behavior |
|---|---|---|
SEQDESK_CONDA_ENABLED | pipelines.execution.conda.enabled | Ignored. Pipeline runtime mode is always Conda. |
SEQDESK_FILES_SINGLE_END | sequencingFiles.allowSingleEnd | Ignored. allowSingleEnd is always forced to true. |
SEQDESK_SESSION_TIMEOUT | auth.sessionTimeout | Parsed into resolved configuration, but the authentication runtime does not enforce this timeout. |
Do not use these variables to express an operational requirement. In particular, there is currently no supported switch to disable Conda execution, reject all single-end reads, or set the authentication session lifetime.
Runtime Variables
These standard environment variables are used by the application runtime. They
can also be set in the runtime section of the config file — if not already
present as environment variables, the config file values are applied to
process.env at startup.
| Variable | Config Path | Description |
|---|---|---|
DATABASE_URL | runtime.databaseUrl | PostgreSQL runtime connection string |
DIRECT_URL | runtime.directUrl | Direct PostgreSQL connection for Prisma migrations |
NEXTAUTH_URL | runtime.nextAuthUrl | NextAuth.js callback URL (installed default: http://localhost:8000) |
NEXTAUTH_SECRET | runtime.nextAuthSecret | Session signing secret (generate with openssl rand -base64 32) |
SEQDESK_UPDATE_SERVER | runtime.updateServer | Update server URL (default: https://seqdesk.org) |
SeqDesk.com Admin Variables
These variables are used by the hosted SeqDesk.com admin service, not by an installed SeqDesk runtime. Configure them on the SeqDesk.com deployment when using install-profile administration features.
| Variable | Required | Default | Description |
|---|---|---|---|
NEON_API_KEY | For hosted Neon provisioning | — | Neon API key used by the install-profile admin panel to create, test, and delete managed Neon projects |
NEON_ORG_ID | No | — | Optional Neon organization id passed when creating projects with a personal API key |
NEON_DEFAULT_REGION_ID | No | aws-eu-central-1 | Region id for newly provisioned hosted Neon databases |
Telemetry
These map to both the runtime config (telemetry.*) and the install-time
heartbeat configuration. See
Operational Telemetry for what
gets reported.
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_TELEMETRY_ENABLED | telemetry.enabled | boolean | false | Opt-in anonymous heartbeats |
SEQDESK_TELEMETRY_ENDPOINT | telemetry.endpoint | string | https://seqdesk.org/api/telemetry/heartbeat | Heartbeat URL |
SEQDESK_TELEMETRY_INTERVAL_HOURS | telemetry.intervalHours | integer | 24 | Minimum hours between heartbeats |
SEQDESK_TELEMETRY_DISABLED=true is a hard kill-switch — it forces
telemetry off regardless of the database setting, config file, or
SEQDESK_TELEMETRY_ENABLED. It is not part of the standard config
resolution; it short-circuits before any other source is consulted.
Notifications
| Variable | Config Path | Type | Default | Description |
|---|---|---|---|---|
SEQDESK_NOTIFICATIONS_ENABLED | notifications.enabled | boolean | false | Master switch for the hosted email notification relay |
SEQDESK_IN_APP_NOTIFICATIONS_ENABLED | notifications.inApp.enabled | boolean | true | Master switch for the in-app notification panel/channel |
SEQDESK_NOTIFICATION_PROVIDER | notifications.provider | string | "seqdesk-relay" | Notification provider (only seqdesk-relay is supported) |
SEQDESK_NOTIFICATION_RELAY_URL | notifications.relayUrl | string | https://seqdesk.org/api/notifications/relay | Hosted relay endpoint |
SEQDESK_NOTIFICATION_RELAY_TOKEN | notifications.relayToken | string | — | Scoped notification relay token (secret) |
Set the relay token through this environment variable — never commit it to a
config file. It is masked in /api/admin/config/status responses.
Important Installer-only Variables
These variables are consumed by install-dist.sh and the seqdesk launcher
before the app starts. They have no effect on a running app — they configure
the install flow itself. This is a practical subset, not a generated exhaustive
list. See the
installer input reference
and seqdesk --help for the supported CLI surface.
Target and mode
| Variable | Type | Default | Description |
|---|---|---|---|
SEQDESK_DIR | path | ./seqdesk | Installation directory |
SEQDESK_VERSION | string | latest | Release version to install |
SEQDESK_YES | boolean | 0 | Non-interactive mode |
SEQDESK_OVERWRITE_EXISTING | boolean | 0 | With -y, back up an existing install dir to <dir>.backup.<timestamp> and replace it |
SEQDESK_LOG | path | /tmp/seqdesk-install-<timestamp>.log | Install log path |
SEQDESK_USE_PM2 | boolean | — | 1 to start under PM2; 0 to disable |
SEQDESK_API | string | https://seqdesk.org/api | Advanced: override release metadata endpoint |
Configuration source
| Variable | Type | Description |
|---|---|---|
SEQDESK_CONFIG | path or URL | settings.json file |
SEQDESK_ADDITIONAL_SETTINGS_FILE | path | Local JSON overrides applied after SEQDESK_CONFIG |
SEQDESK_RECONFIGURE | boolean | Re-apply config to an existing install |
SEQDESK_RESEED_DB | boolean | Run pending Prisma migrations (migrate deploy) and then seed during --reconfigure |
SEQDESK_PREPARE_POSTGRES | boolean | Prepare local PostgreSQL role/database, then exit |
Infrastructure overrides
| Variable | Type | Description |
|---|---|---|
SEQDESK_PORT | integer | App port (default 8000) |
SEQDESK_DATABASE_URL | string | DATABASE_URL |
SEQDESK_DATABASE_DIRECT_URL | string | DIRECT_URL for Prisma migrations |
SEQDESK_NEXTAUTH_URL | string | NEXTAUTH_URL |
SEQDESK_NEXTAUTH_SECRET | string | NEXTAUTH_SECRET |
SEQDESK_RUN_DIR | path | Pipeline run directory override |
Secrets
| Variable | Type | Description |
|---|---|---|
SEQDESK_ANTHROPIC_API_KEY | string | Anthropic API key for AI validation |
SEQDESK_ADMIN_SECRET | string | Release publishing admin secret |
SEQDESK_BLOB_READ_WRITE_TOKEN | string | Vercel Blob token |
Pipeline toggles
| Variable | Type | Description |
|---|---|---|
SEQDESK_WITH_PIPELINES | boolean | 1 to install Conda + Nextflow; 0 to skip |
SEQDESK_WITH_CONDA | boolean | Legacy alias for installing Miniconda |
SEQDESK_SKIP_DEPS | boolean | Deprecated; ignored in the distribution installer |
Pipeline-execution overrides
These let you set runtime pipeline-execution settings at install time without
editing a config file. They are written into SiteSettings.extraSettings.pipelineExecution
during install.
| Variable | Maps to | Description |
|---|---|---|
SEQDESK_EXEC_MODE | pipelines.execution.mode | Supported execution mode written into the config file (local or slurm) |
SEQDESK_EXEC_USE_SLURM | pipelines.execution.slurm.enabled | Enable SLURM submission |
SEQDESK_EXEC_SLURM_QUEUE | pipelines.execution.slurm.queue | Partition/queue name |
SEQDESK_EXEC_SLURM_CORES | pipelines.execution.slurm.cores | CPUs per job |
SEQDESK_EXEC_SLURM_MEMORY | pipelines.execution.slurm.memory | Memory per job |
SEQDESK_EXEC_SLURM_TIME_LIMIT | pipelines.execution.slurm.timeLimit | Hours per job |
SEQDESK_EXEC_SLURM_OPTIONS | pipelines.execution.slurm.options | Extra sbatch flags |
SEQDESK_EXEC_CONDA_PATH | pipelines.execution.conda.path | Authoritative Conda base containing condabin/conda or bin/conda, or a new/nonexistent base where Miniconda may be installed |
SEQDESK_EXEC_CONDA_ENV | pipelines.execution.conda.environment | Conda environment name |
SEQDESK_EXEC_NEXTFLOW_PROFILE | Pipeline runtime | Optional additional Nextflow profile; SeqDesk adds conda automatically |
SEQDESK_EXEC_WEBLOG_URL | Pipeline runtime | Nextflow weblog endpoint |
SEQDESK_EXEC_WEBLOG_SECRET | Pipeline runtime | Shared secret for weblog requests |
When SEQDESK_EXEC_CONDA_PATH is set, it takes precedence over PATH and
standard user-prefix discovery. A working existing base is reused. A path that
does not exist may be created by the Miniconda installer. An existing path that
does not contain a working Conda executable stops with recovery instructions;
the installer does not delete it or silently select another location.
The installer may still accept SEQDESK_EXEC_MODE=kubernetes for
compatibility, but Kubernetes execution is unsupported. Container profiles
such as docker, singularity, apptainer,
and podman are rejected when a pipeline starts. SeqDesk supports
Conda-based local or SLURM execution.
Private pipeline package (MetaXpath)
| Variable | Alias | Description |
|---|---|---|
SEQDESK_METAXPATH_PACKAGE_URL | METAXPATH_PACKAGE_URL | Optional tarball URL override for the private MetaXpath package |
SEQDESK_METAXPATH_KEY | METAXPATH_PACKAGE_TOKEN | GitHub/package bearer token used to resolve and download the private package |
SEQDESK_METAXPATH_SHA256 | METAXPATH_PACKAGE_SHA256 | Optional expected tarball checksum override |
SEQDESK_METAXPATH_PACKAGE_URL and SEQDESK_METAXPATH_SHA256 are normally left
unset: when only a MetaXpath token is provided, the GitHub release asset URL and
SHA256 digest are resolved automatically.
Form presets
| Variable | Type | Description |
|---|---|---|
SEQDESK_ORDER_FORM_SETTINGS | path | JSON exported from Admin > Order Form > Import / Export to apply after seed |
SEQDESK_STUDY_FORM_SETTINGS | path | JSON exported from Admin > Study Forms > Import / Export to apply after seed |
Examples
Set variables in your shell, .env file, or deployment system:
# Site
export SEQDESK_SITE_NAME="My Sequencing Facility"
export SEQDESK_DATA_PATH="/mnt/sequencing/data"
# ENA (use env vars for secrets)
export SEQDESK_ENA_USERNAME="Webin-12345"
export SEQDESK_ENA_PASSWORD="your-password"
export SEQDESK_ENA_TEST_MODE="false"
# SLURM cluster
export SEQDESK_PIPELINE_MODE="slurm"
export SEQDESK_SLURM_ENABLED="true"
export SEQDESK_SLURM_QUEUE="bioinformatics"
export SEQDESK_SLURM_CORES="16"
export SEQDESK_SLURM_MEMORY="64GB"
# Install-time form presets
export SEQDESK_ORDER_FORM_SETTINGS="/opt/seqdesk-presets/order-form.json"
export SEQDESK_STUDY_FORM_SETTINGS="/opt/seqdesk-presets/study-form.json"