Visual bioinformatics pipelines, node by node.
BioNodulo is a professional-grade visual workflow workbench for bioinformatics. Build, execute, and share complex bioinformatics pipelines using an intuitive node-based graph editor.
- Visual Node Editor — Drag-and-drop canvas for building workflows with 800+ built-in bioinformatics nodes
- 800+ Bioinformatics Nodes — Covering QC, alignment, variant calling, assembly, RNA-Seq, metagenomics, phylogenetics, ChIP-Seq, single-cell analysis, BioPython integration, R scripting, and more
- 22 Pre-built Templates — FASTQ QC Pipeline, RNA-Seq Pipeline, Variant Calling Pipeline, WGS Variant Pipeline, Genome Assembly, Metagenomics Profiling, Phylogenetics Pipeline, ChIP-Seq Pipeline, Single Cell RNA-Seq, DESeq2 Differential Expression, Transcript Quantification, Biopython Analysis Pipeline, R Visualization Pipeline, ONT Long-Read Sequencing, Proteomics Sage-Percolator Search, Protein Structure Database Workflow, WGBS Methylation Profiling, CRISPR Editing and Screen Analysis, Pangenomics Graph QC and Visualization, Metabolomics LC-MS Workflow, Spatial Transcriptomics QC and Clustering, Synthetic Biology Design and Simulation
- HPC Integration — Submit workflows to SLURM, PBS/Torque, or SGE clusters with a single toggle
- Workflow Converters — Import and export workflows between SnakeMake, NextFlow, CWL, Galaxy, and BioNodulo JSON formats
- Settings System — Per-user settings with categories for appearance, canvas, execution, LLM, and files
- Help / Wiki System — Built-in searchable documentation panel (Ctrl+6)
- AI Assistant — Chat-based workflow builder assistant
- Environment Manager — Auto-detect missing dependencies, one-click install, Conda/Mamba/Micromamba env CRUD, Docker/Apptainer support, per-workflow isolation
- Dependency Resolution — Scans workflows on open for missing nodes, executables, and Python packages with a top-center banner + Auto Install
- Custom Nodes — Extensible plugin system for local custom node packages; Git URL installation exists in the backend but still needs frontend validation before it should be treated as a polished user flow
- Dark/Light Theme — Full theme support with system detection
- Multi-tab Workflows — Work on multiple workflows simultaneously with top tabs
- Undo/Redo — Full history support
For an ephemeral notebook-based trial, launch the Colab notebook:
Open BioNodulo in Google Colab
The notebook checks out origin/protobionodulo, prints the active branch and commit with git status -sb and git log -1 --oneline --decorate, installs the backend dependencies, builds the web frontend, starts BioNodulo in the Colab runtime, and prints a temporary Cloudflare Tunnel URL while the launch cell keeps running.
If Colab still shows an older BioNodulo version, restart or delete the Colab runtime and rerun the setup cell. The printed Git commit should match the latest protobionodulo commit in this repository.
Required on host PATH:
- Python 3.11+ — runs the FastAPI backend
- micromamba — creates isolated per-category conda environments for bioinformatics tools (auto-installed on first startup if missing)
Required to build or develop the frontend:
- Node.js 20+ + npm — builds the React/Vite frontend into
web/dist/
Required only for R-based workflows:
- Rscript — needed by nodes such as DESeq2, ggplot2, pheatmap, edgeR, etc.
# Clone or extract the project
cd bionodulo-v2
# Install Python dependencies
pip install -e .
# Build the frontend
cd web && npm install && npm run build
cd ..# Start the built application on the default port
python main.py
# Or with options
python main.py --host 0.0.0.0 --port 8000 --project-root ./workspace
# Development mode with auto-reload
python main.py --dev
# With custom config
python main.py --config bionodulo.yamlThen open http://localhost:8000 in your browser.
For frontend development, run the backend on the port configured in
web/vite.config.ts and Vite on port 5173 with one command:
make devThen open http://localhost:5173. To run the processes in separate terminals,
use make dev-backend and make dev-web; the backend listens on port 8765.
- Click the HPC toggle in the top bar
- Open the HPC panel (Ctrl+5) and configure your scheduler
- Set partition, account, resources, and modules
- Click Test Connection to verify
- Run your workflow — it will be submitted as a batch job
Click the Import button in the top bar (Ctrl+I) and paste workflow code from:
- SnakeMake (.smk)
- NextFlow (.nf)
- CWL (.cwl)
- Galaxy (.ga)
- BioNodulo JSON (.json)
- Copy
custom_nodes/example_node.py.exampletocustom_nodes/my_node.py - Edit the node class with your tool's parameters
- Optionally set
GIT_URLandGIT_COMMITas source metadata. Backend Git install support exists, but the recommended supported path today is loading and testing local custom nodes directly. - Restart BioNodulo — your node appears in the palette automatically
BioNodulo automatically checks for missing dependencies every time you open or load a workflow:
- Auto-detect — Open any template or workflow. If nodes or tools are missing, a top-center banner appears
- Auto Install — Click Auto Install in the banner to install missing Conda-backed executables. Git-backed custom node cloning exists in backend code but is still experimental.
- Environment Panel (Ctrl+4) — Browse existing Conda environments, create new ones, delete old ones, and view installed packages
- Dependency Tree — See per-workflow dependency status (installed / missing / available in which env)
- Isolate Workflow — Create a dedicated Conda environment containing only the tools your current workflow needs
bionodulo-v2/
├── main.py # Entry point
├── server.py # FastAPI app
├── pyproject.toml # Package metadata
├── bionodulo.yaml.example # Configuration template
├── Dockerfile # Container build
├── SPEC.md # Technical specification
├── bionodulo/ # Backend package
│ ├── core/ # Config, events, paths
│ ├── api/ # REST API routes, WebSocket
│ ├── nodes/ # Node system
│ │ ├── builtin/ # 800+ bioinformatics nodes
│ │ ├── base.py # BaseNode class
│ │ ├── command_node.py # External tool wrapper
│ │ ├── registry.py # Node discovery & loading
│ │ └── schema_api.py # Node schema definitions
│ ├── execution/ # Execution engine
│ ├── workflow/ # Workflow validation, serialization
│ ├── converter/ # SnakeMake, NextFlow, CWL, Galaxy
│ ├── hpc/ # SLURM, PBS, SGE backends
│ ├── environments/ # Conda, Docker, Apptainer, env CRUD
│ │ ├── conda.py
│ │ ├── containers.py
│ │ ├── model.py
│ │ └── manager.py # Environment lifecycle management
│ ├── manager/ # Custom nodes, diagnostics, dependency resolution
│ │ ├── resolver.py # Workflow dependency resolution engine
│ │ ├── installer.py # Async install jobs with progress tracking
│ │ ├── custom_nodes.py
│ │ └── diagnostics.py
│ ├── provenance/ # Workflow embedding, reports
│ └── ai/ # AI assistant
├── custom_nodes/ # Your custom nodes
├── templates/ # 22 pre-built workflow templates
├── envs/ # Generated per-workflow environments (ignored)
├── examples/workflows/ # Example workflows
├── cache/ # Runtime cache
├── runs/ # Execution outputs
└── web/ # Frontend (React + Vite)
├── dist/ # Generated frontend build output
└── src/ # Source code
BioNodulo runs locally with no external services. For larger deployments you can opt into battle-tested infrastructure:
- Redis — set
BIONODULO_REDIS_URLto replicate Yjs document updates and awareness across multiple backend instances. - OIDC / Keycloak / SuperTokens — set
BIONODULO_OIDC_ISSUER,BIONODULO_OIDC_AUDIENCE, and optionallyBIONODULO_OIDC_JWKS_URLto accept externally issued JWTs. - LiteLLM Proxy — choose the
litellmAI provider and setBIONODULO_LITELLM_BASE_URLplusLITELLM_API_KEYto route models through a provider gateway. - SlowAPI — REST rate limiting is enabled by default; set
BIONODULO_RATE_LIMIT_REDIS_URLorBIONODULO_REDIS_URLto share rate-limit state between instances.
| Category | Nodes | Description |
|---|---|---|
| Input | FASTQ, FASTA, VCF, GFF, File, Directory, Sample Sheet | Data loading nodes |
| Quality Control | FastQC, MultiQC, QualiMap | Sequence quality assessment |
| Read Preprocessing | fastp, Trimmomatic, Cutadapt | Adapter trimming and filtering |
| Alignment | BWA, Bowtie2, Minimap2, STAR, HISAT2 | Read alignment (including index builders) |
| SAM/BAM Processing | samtools sort, index, flagstat, view, merge, stats | Alignment processing |
| Variant Calling | GATK, bcftools, FreeBayes, VCFtools | SNP/indel detection |
| Assembly | SPAdes, MEGAHIT, Flye, Canu, Unicycler, QUAST | Genome assembly |
| Annotation | Prokka, Bakta, eggNOG | Genome annotation |
| Phylogenetics | MAFFT, ClustalΩ, IQ-TREE, FastTree, RAxML | Tree construction |
| RNA-Seq | Salmon, Kallisto, featureCounts, StringTie | Expression analysis |
| Metagenomics | Kraken2, Bracken, MetaPhlAn, HUMAnN, MaxBin, CheckM | Microbial profiling |
| ChIP-Seq | MACS2, BEDTools, deepTools | Peak calling and coverage |
| Single Cell | Cell Ranger | scRNA-seq analysis |
| Spatial Transcriptomics | Space Ranger, Squidpy, Scanpy, Seurat, Cell2location, Baysor | Visium QC, spatial clustering, UMAP visualization, deconvolution, and segmentation |
| Long Read | Dorado, Chopper, NanoPlot, Modkit | ONT long-read basecalling, demultiplexing, QC, and modified-base calls |
| Proteomics | Sage, Percolator, FragPipe, MSFragger, MaxQuant, DIA-NN, OpenMS | Mass-spectrometry search and FDR analysis |
| Protein Structure | UniProt, AlphaFold DB, RCSB PDB | Protein sequence lookup, predicted structure retrieval, experimental structure download, and database reporting |
| Metabolomics | XCMS, CAMERA, SIRIUS, MZmine, MetaboAnalystR, MS-DIAL | LC-MS peak detection, retention correction, annotation, and metabolomics statistics |
| Epigenomics | Bismark, MethylDackel, DSS, Modkit, deepTools, Hi-C tooling | WGBS methylation, DMR, coverage, and chromatin-contact analysis |
| CRISPR | Guide RNA Design, Cas-OFFinder, CRISPResso2, MAGeCK | Genome-editing guide design, off-target checks, amplicon editing, and pooled-screen analysis |
| Pangenomics | PGGB, Minigraph, Minigraph-Cactus, vg, ODGI, Panacus, Panaroo | Pangenome graph construction, graph QC, visualization, and variant/gene analysis |
| Synthetic Biology | SBOL, COPASI, iBioSim, Cello | BioCAD design import, circuit compilation, kinetic simulation, and COMBINE archive execution |
| HPC | Job Submit, Status Check | Cluster job submission |
| BioPython | SeqIO, BLAST, MSA, Sequence Stats | Python bioinformatics tools |
| R Integration | R Script, R Plot, DataFrame Builder | R statistical computing |
| Utility | Generic Command, View Text, Collect Files, Merge VCF, Note, Reroute | Helper nodes |
| Shortcut | Action |
|---|---|
| Ctrl+F | Open node palette |
| Ctrl+R | Run workflow |
| Ctrl+E | Export workflow |
| Ctrl+I | Import workflow |
| Ctrl+Z | Undo |
| Ctrl+Y / Ctrl+Shift+Z | Redo |
| Ctrl+A | Select all nodes |
| Ctrl+G | Group selected nodes |
| Alt+C | Collapse/expand selected nodes |
| Delete | Delete selected nodes |
| Ctrl+1–7 | Toggle left rail panels |
| Ctrl+6 | Open Help / Wiki |
| Ctrl+, | Open Settings |
| Ctrl+` | Toggle bottom console |
| Middle-click drag | Pan canvas |
| Alt+click drag | Pan canvas |
| Double-click node | Edit node parameters |
| Right-click canvas | Open node palette |
Copy bionodulo.yaml.example to bionodulo.yaml and customize:
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
multiqc: /usr/bin/multiqc
gatk: /opt/gatk/gatk
bcftools: /usr/bin/bcftools
bowtie2: /usr/bin/bowtie2
minimap2: /usr/bin/minimap2
star: /usr/bin/STAR
hisat2: /usr/bin/hisat2
spades: /usr/bin/spades.py
megahit: /usr/bin/megahit
kraken2: /usr/bin/kraken2
macs2: /usr/bin/macs2
cellranger: /opt/cellranger/cellranger
# 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 configuration
api:
host: "127.0.0.1"
port: 8000
# LLM configuration
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
# Security
api_secrets: {}BioNodulo is paid software distributed under the BioNodulo Closed Alpha Commercial License.
Access during the current closed-alpha development phase is limited to authorized users and institutions with a written license, trial agreement, or closed-alpha invitation. BioNodulo may not be freely redistributed, mirrored, sublicensed, hosted for third parties, or used outside the licensed scope.
Third-party open-source and proprietary dependencies, command-line tools, datasets, containers, models, APIs, and services remain subject to their own license terms. See Third-Party Notices for the current compliance summary. Institutions can contact nieuwenhuyzemikamartin@gmail.com to discuss licensing and pricing.
BioNodulo is an independent bioinformatics workflow platform built specifically for bioinformatics pipeline design, execution, and sharing.