Skip to Content
ConfigurationConfig File Reference

Config File Reference

The config file provides project-level configuration in a single structured JSON file. It is the recommended way to manage non-secret settings.

File Discovery

SeqDesk searches for config files in the project root (same directory as package.json) in this order:

  1. seqdesk.config.json (recommended)
  2. .seqdeskrc
  3. .seqdeskrc.json

The first file found is used. If no config file exists, only environment variables, database settings, and built-in defaults apply.

Complete Structure

{ "app": { "port": 8000 }, "site": { "name": "My Sequencing Facility", "dataBasePath": "/mnt/sequencing/data", "contactEmail": "facility@example.com" }, "pipelines": { "enabled": true, "execution": { "mode": "local", "runDirectory": "./pipeline_runs", "conda": { "enabled": true, "path": "/opt/conda", "environment": "seqdesk-pipelines" }, "slurm": { "enabled": false, "queue": "default", "cores": 4, "memory": "16GB", "timeLimit": 24, "options": "" } }, "mag": { "enabled": true, "version": "3.4.0", "stubMode": false, "skipProkka": true, "skipConcoct": true } }, "ena": { "testMode": true, "username": "", "password": "", "brokerAccount": false, "centerName": "" }, "sequencingFiles": { "extensions": [".fastq.gz", ".fq.gz", ".fastq", ".fq"], "scanDepth": 2, "allowSingleEnd": true, "ignorePatterns": ["**/tmp/**", "**/undetermined/**"], "simulationMode": "auto", "simulationTemplateDir": "/opt/seqdesk/simulation-templates" }, "auth": { "allowRegistration": true, "requireEmailVerification": false, "sessionTimeout": 24 }, "telemetry": { "enabled": false, "endpoint": "https://www.seqdesk.com/api/telemetry/heartbeat", "intervalHours": 24 }, "runtime": { "databaseUrl": "postgresql://seqdesk:replace-with-password@127.0.0.1:5432/seqdesk?schema=public", "directUrl": "postgresql://seqdesk:replace-with-password@127.0.0.1:5432/seqdesk?schema=public", "nextAuthUrl": "http://localhost:3000", "nextAuthSecret": "your-secret-here" } }

Section Reference

app — Application Runtime

KeyTypeDefaultDescription
portinteger8000App listen port for generated start scripts

site — Facility Information

KeyTypeDefaultDescription
namestring"SeqDesk"Display name shown in the UI
dataBasePathstring"./data"Base directory for sequencing data
contactEmailstringContact email shown to researchers

pipelines — Pipeline Configuration

KeyTypeDefaultDescription
enabledbooleanfalseMaster switch for pipeline features

pipelines.execution — Execution Settings

KeyTypeDefaultDescription
mode"local" | "slurm" | "kubernetes""local"Where pipelines run
runDirectorystring"./pipeline_runs"Output directory

pipelines.execution.conda — Conda Settings

KeyTypeDefaultDescription
enabledbooleanfalseUse Conda for dependencies
pathstring"/opt/conda"Conda installation path
environmentstringEnvironment name

pipelines.execution.slurm — SLURM Settings

KeyTypeDefaultDescription
enabledbooleanfalseSubmit jobs to SLURM
queuestring"default"Partition/queue name
coresinteger4CPUs per job
memorystring"16GB"Memory per job
timeLimitinteger24Time limit (hours)
optionsstring""Additional SLURM options

pipelines.mag — MAG Pipeline

KeyTypeDefaultDescription
enabledbooleantrueEnable nf-core/mag
versionstring"3.4.0"Pipeline version
stubModebooleanfalseTest mode (no real analysis)
skipProkkabooleantrueSkip Prokka annotation
skipConcoctbooleantrueSkip CONCOCT binning

ena — ENA Submission

KeyTypeDefaultDescription
testModebooleantrueUse test server
usernamestringWebin username
passwordstringWebin password
brokerAccountbooleanfalseWebin account has ENA broker permissions
centerNamestring""Submission center name

Avoid storing ENA credentials in the config file. Use environment variables (SEQDESK_ENA_USERNAME, SEQDESK_ENA_PASSWORD) or the Admin UI instead.

sequencingFiles — File Discovery

KeyTypeDefaultDescription
extensionsstring[][".fastq.gz", ".fq.gz", ".fastq", ".fq"]Allowed file extensions
scanDepthinteger2Directory scan depth (1–10)
allowSingleEndbooleantrueAllow single-end reads
ignorePatternsstring[]["**/tmp/**", "**/undetermined/**"]Glob patterns to skip
simulationMode"auto" | "synthetic" | "template""auto"Read-simulation mode (auto uses templates if available)
simulationTemplateDirstringDirectory of realistic FASTQ pairs for template-based simulation

auth — Authentication

KeyTypeDefaultDescription
allowRegistrationbooleantruePublic registration enabled
requireEmailVerificationbooleanfalseRequire email verification
sessionTimeoutinteger24Session timeout (hours)

telemetry — Operational Telemetry

KeyTypeDefaultDescription
enabledbooleanfalseOpt-in anonymous heartbeat reporting
endpointstringhttps://www.seqdesk.com/api/telemetry/heartbeatHeartbeat URL
intervalHoursinteger24Minimum hours between automatic heartbeats

See Operational Telemetry for what’s reported and how to opt out.

runtime — Application Runtime

These values are applied to process.env at startup if the corresponding environment variable is not already set.

KeyMaps ToDescription
databaseUrlDATABASE_URLPostgreSQL runtime connection string
directUrlDIRECT_URLDirect PostgreSQL connection for Prisma migrations
nextAuthUrlNEXTAUTH_URLNextAuth.js callback URL
nextAuthSecretNEXTAUTH_SECRETSession signing secret
anthropicApiKeyANTHROPIC_API_KEYAPI key for AI validation/extraction routes
adminSecretADMIN_SECRETRelease publishing admin secret used by scripts
blobReadWriteTokenBLOB_READ_WRITE_TOKENVercel Blob token for release publishing scripts
updateServerSEQDESK_UPDATE_SERVERUpdate server URL

Validation

The config system validates:

  • The file must be valid JSON
  • site.dataBasePath must be a string
  • pipelines.execution.mode must be local, slurm, or kubernetes
  • ena.testMode must be a boolean
  • sequencingFiles.scanDepth must be an integer between 1 and 10

Invalid values are logged as warnings and the corresponding default is used instead.