Configuration
BioNodulo is configured with a bionodulo.yaml file. To get started, copy the
bundled example and edit it for your environment:
cp bionodulo.yaml.example bionodulo.yamlThe config file is looked up in this order: the path in BIONODULO_CONFIG, then
bionodulo.yaml, bionodulo.yml, or bionodulo.json in the project root. The
project root itself defaults to the current working directory and can be
overridden with BIONODULO_ROOT. Relative paths in the config are resolved
against the project root.
Full reference
# Directories
project_root: ./bionodulo_workspace
runs_dir: ./runs
cache_dir: ./cache
custom_nodes_dir: ./custom_nodes
data_roots: ["./data"]
# External tool paths (leave empty to use PATH)
tool_paths:
bwa: /usr/bin/bwa
samtools: /usr/bin/samtools
fastqc: /usr/bin/fastqc
# ...any tool name → absolute path
# Conda/Mamba configuration
conda:
executable: micromamba # conda, mamba, or micromamba
channels: [bioconda, conda-forge]
# Container configuration
containers:
default_runtime: apptainer # docker or apptainer
default_image: null
# HPC configuration
hpc:
enabled: false
backend: slurm # slurm, pbs, sge
partition: normal
account: null
walltime: "01:00:00"
cpus_per_task: 4
mem_per_cpu: "4G"
modules: []
extra_args: ""
# API server configuration
api:
host: "127.0.0.1"
port: 8000
# LLM configuration (AI assistant and AI-powered nodes)
llm:
provider: openai
model: gpt-4.1-mini
base_url: ""
api_key: ""
temperature: 0.2
# Execution settings
execution:
stop_on_error: true
max_parallel_jobs: 4
# Secrets passed to nodes/workflows as named credentials
api_secrets: {}Section by section
Directories
| Key | Default | Description |
|---|---|---|
project_root | current working directory | Base directory; all other relative paths resolve against it |
runs_dir | runs | Where run outputs and logs are stored |
cache_dir | cache | Cached node results used by checkpointing/resumption |
custom_nodes_dir | custom_nodes | Where custom nodes are discovered |
data_roots | [] | Directories for reference data and shared inputs |
All of these directories are created automatically on startup if missing.
tool_paths
Explicit absolute paths to tool executables. Tools listed here are used
instead of whatever is found on PATH — useful when you have multiple
versions installed. Leave a tool unlisted to fall back to PATH.
conda
| Key | Default | Description |
|---|---|---|
executable | micromamba | Conda-compatible executable: conda, mamba, or micromamba |
channels | [bioconda, conda-forge] | Channels used when resolving packages |
See Managing Environments for how per-workflow environments are built.
containers
| Key | Default | Description |
|---|---|---|
default_runtime | apptainer | Container runtime: docker or apptainer |
default_image | null | Fallback image for nodes that don’t declare one |
hpc
| Key | Default | Description |
|---|---|---|
enabled | false | Submit runs to a scheduler instead of running locally |
backend | slurm | slurm, pbs, or sge |
partition | normal | Partition (SLURM) / queue (PBS, SGE) |
account | null | Account or project to charge |
walltime | 01:00:00 | Default maximum job wall time |
cpus_per_task | 4 | CPU cores requested per job |
mem_per_cpu | 4G | Memory request per CPU |
modules | [] | Environment modules to load in the job script |
extra_args | "" | Extra scheduler arguments appended at submit time |
The same settings are editable in the app’s HPC panel (Ctrl+5); see
HPC Mode.
api
| Key | Default | Description |
|---|---|---|
host | 127.0.0.1 | Interface the local API server binds to |
port | 8000 | Port the local API server listens on |
The server also honors the BIONODULO_HOST and BIONODULO_PORT environment
variables (and matching CLI flags), defaulting to 127.0.0.1:8000.
llm
| Key | Default | Description |
|---|---|---|
provider | openai | LLM provider (openai, anthropic, openrouter, litellm, …) |
model | gpt-4.1-mini | Model name |
base_url | "" | Custom endpoint URL (e.g. a LiteLLM proxy) |
api_key | "" | API key; prefer environment variables or api_secrets over committing keys |
temperature | 0.2 | Sampling temperature |
At runtime the provider’s API key can also come from the standard environment
variables (OPENAI_API_KEY, ANTHROPIC_API_KEY, OPENROUTER_API_KEY,
BIONODULO_LLM_API_KEY, or LITELLM_API_KEY), and the endpoint from
BIONODULO_LLM_BASE_URL.
execution
| Key | Default | Description |
|---|---|---|
stop_on_error | true | Stop the run at the first failed node (otherwise independent branches continue) |
max_parallel_jobs | 4 | How many nodes may execute concurrently |
The core engine’s own execution settings — loaded from the same execution:
block or from environment overrides — are: max_workers (default 4),
cache_enabled (true), cache_ttl_seconds (86400), env_isolation
(auto), timeout_seconds (3600), content_hashing (fast, strong, or
off), and on_interrupt (manual or auto_resume — whether runs
interrupted by a restart are resubmitted automatically).
api_secrets
A name → value map of secrets (API tokens, credentials) made available to
workflows. Values from api_secrets are redacted whenever BioNodulo prints or
dumps its effective configuration. Don’t commit real secrets to a shared
repository — prefer environment variable overrides (below).
Environment variable overrides
Any setting can be overridden with a BIONODULO_-prefixed environment
variable. Nested keys use a double underscore:
export BIONODULO_EXECUTION__MAX_WORKERS=8
export BIONODULO_CACHE_DIR=/fast/disk/cacheValues are parsed as booleans (true/false/yes/no/1/0), integers, floats, or
JSON (for lists/objects) when they look like those types, and as plain strings
otherwise.
| Variable | Description |
|---|---|
BIONODULO_CONFIG | Path to the config file to load |
BIONODULO_ROOT | Project root directory |
BIONODULO_ENV_ISOLATION | 0/false disables per-workflow environment isolation by default |
BIONODULO_HOST / BIONODULO_PORT | API server bind address and port |
Production integration variables
These optional variables wire BioNodulo into external infrastructure. They’re relevant to self-hosted and team deployments rather than single-user desktop use.
| Variable | Description |
|---|---|
BIONODULO_REDIS_URL | Redis instance used for collaboration pub/sub and the distributed run queue |
BIONODULO_RATE_LIMIT_REDIS_URL | Redis-backed storage for API rate limiting; falls back to BIONODULO_REDIS_URL, then to in-memory |
BIONODULO_OIDC_ISSUER | OIDC issuer URL for collaboration authentication (e.g. https://clerk.<your-domain>) |
BIONODULO_OIDC_AUDIENCE | Expected aud claim of collaboration tokens |
BIONODULO_OIDC_JWKS_URL | JWKS endpoint for verifying token signatures, typically <issuer>/.well-known/jwks.json |
BIONODULO_LITELLM_BASE_URL | Base URL of a LiteLLM proxy for AI features (default http://localhost:4000/v1 when the litellm provider is used) |
LITELLM_API_KEY | API key for the LiteLLM proxy |