Rust-native bioinformatics
pipeline engine

Build, validate, and execute reproducible bioinformatics workflows with DAG-based execution, first-class environment management, cluster scheduling, and clinical-grade reporting — all from a single, fast Rust binary.

Core Capabilities

Everything you need to build production-grade bioinformatics pipelines.

🔀

DAG Execution Engine

Automatic dependency resolution, topological sorting, cycle detection, and parallel execution. Built with petgraph — proven on 1,000-rule stress tests.

📦

Environment Management

First-class support for conda, pixi, Docker, Singularity, Python venv, and HPC modules. Each rule declares its own isolated environment.

🖥️

Cluster Scheduling

Resource-aware scheduling across SLURM, PBS, SGE, and LSF backends. Rules declare CPU, memory, GPU, and disk requirements; the scheduler enforces them.

📊

Clinical-Grade Reporting

Modular HTML/JSON report generation with Tera templates. ACMG/AMP variant classification, biomarker tracking, and compliance audit trails.

🌐

REST API & Web Interface

Built-in axum server with versioned REST API, RBAC (Admin/User/Viewer), rate limiting, and security headers.

🐳

Container Packaging

Export workflows to multi-stage Docker builds or Singularity images. Rootless containers with HEALTHCHECK support for portable, self-contained execution.

🔒

Security Hardened

Shell injection prevention, path traversal protection, secret scanning, per-IP rate limiting, and #![forbid(unsafe_code)] across every crate.

Rust Performance

Native binary — instant startup, fearless concurrency, zero-cost abstractions. Rust 2024 edition with a type-state lifecycle (Parsed → Validated → Ready).

🧬

Venus Pipeline

Built-in clinical tumor variant calling pipeline (Venus) — FASTQ → annotated VCF with clinical reports. Supports tumor-only, normal-only, and tumor-normal modes.

Quick Start

From zero to running pipeline in a few commands.

# 1. Install cargo install oxo-flow-cli # 2. Scaffold a new project oxo-flow init my-pipeline cd my-pipeline # 3. Validate the workflow oxo-flow validate my-pipeline.oxoflow ✓ my-pipeline.oxoflow — valid # 4. Preview execution plan (dry-run) oxo-flow dry-run my-pipeline.oxoflow # 5. Execute with 8 parallel jobs oxo-flow run my-pipeline.oxoflow -j 8 # 6. Visualise the DAG oxo-flow graph my-pipeline.oxoflow > dag.dot dot -Tpng dag.dot -o dag.png # 7. Generate an HTML report oxo-flow report my-pipeline.oxoflow -f html -o report.html

The .oxoflow Format

Define your pipeline in clean, readable TOML. Wildcards like {sample} are expanded automatically based on input file discovery or explicit configuration.

# variant-calling.oxoflow [workflow] name = "variant-calling" version = "1.0.0" [config] reference = "/data/ref/GRCh38.fa" [[rules]] name = "fastp" input = ["raw/{sample}_R1.fastq.gz", "raw/{sample}_R2.fastq.gz"] output = ["trimmed/{sample}_R1.fastq.gz", "trimmed/{sample}_R2.fastq.gz"] threads = 8 shell = "fastp -i {input[0]} -I {input[1]} -o {output[0]} -O {output[1]}" [rules.environment] conda = "envs/fastp.yaml" [[rules]] name = "bwa_align" input = ["trimmed/{sample}_R1.fastq.gz", "trimmed/{sample}_R2.fastq.gz"] output = ["aligned/{sample}.bam"] threads = 16 memory = "32G" shell = "bwa-mem2 mem -t {threads} {config.reference} {input[0]} {input[1]} | samtools sort -o {output[0]}" [rules.environment] docker = "biocontainers/bwa-mem2:2.2.1"

CLI Commands

The oxo-flow binary provides 18 subcommands covering the complete workflow lifecycle. Global flags: -v (verbose), --quiet, --no-color.

CommandDescription
oxo-flow runExecute a workflow (-j jobs, -k keep-going, --timeout per-job, -r retries)
oxo-flow dry-runSimulate execution — show what would run without executing
oxo-flow validateValidate an .oxoflow file for syntax and semantic correctness
oxo-flow lintRun best-practice linting checks (--strict treats warnings as errors)
oxo-flow formatReformat a .oxoflow file into canonical TOML (--check mode available)
oxo-flow graphExport the workflow DAG in DOT format for visualisation
oxo-flow reportGenerate execution reports (-f html|json, -o output path)
oxo-flow initScaffold a new pipeline project (-d output directory)
oxo-flow env list|checkList available environment backends or verify all requirements are met
oxo-flow packagePackage workflow into a container image (-f docker|singularity)
oxo-flow exportExport workflow to a Dockerfile, Singularity definition, or standalone TOML
oxo-flow cluster submit|status|cancelSubmit and monitor jobs on SLURM, PBS, SGE, or LSF cluster backends
oxo-flow profile list|show|currentManage execution profiles (local, slurm, pbs, sge, lsf)
oxo-flow config show|statsInspect workflow configuration variables and statistics
oxo-flow statusShow execution status from the checkpoint file
oxo-flow cleanClean workflow outputs and temp files (-n dry-run, --force)
oxo-flow serveStart the web interface (--host, -p port; default 127.0.0.1:8080)
oxo-flow completionsGenerate shell completions (bash, zsh, fish, elvish, PowerShell)

Web API

oxo-flow serve starts an axum-powered REST server with a versioned API, RBAC, rate limiting, and security headers.

MethodEndpointDescription
GET/api/healthHealth check
GET/api/versionServer and engine version info
GET/api/workflowsList available workflows
GET/api/environmentsList available environment backends
POST/api/workflows/validateValidate workflow TOML
POST/api/workflows/dagBuild the DAG and return DOT representation
POST/api/workflows/dry-runSimulate execution and return the plan
POST/api/workflows/runStart workflow execution
POST/api/workflows/exportExport workflow for sharing or archival
POST/api/reports/generateGenerate a report (HTML or JSON)
POST/api/auth/loginAuthenticate and receive a session token
GET/api/auth/meReturn the authenticated user details
GET/api/licenseCheck license status

Installation

Three ways to get oxo-flow on your system.

Cargo (recommended)

cargo install oxo-flow-cli

Pre-built binary

# Linux (x86_64) curl -LO https://github.com/Traitome/oxo-flow/releases/latest/download/oxo-flow-x86_64-unknown-linux-gnu.tar.gz tar xzf oxo-flow-x86_64-unknown-linux-gnu.tar.gz sudo mv oxo-flow /usr/local/bin/ # macOS (Apple Silicon) curl -LO https://github.com/Traitome/oxo-flow/releases/latest/download/oxo-flow-aarch64-apple-darwin.tar.gz tar xzf oxo-flow-aarch64-apple-darwin.tar.gz sudo mv oxo-flow /usr/local/bin/

Build from source

git clone https://github.com/Traitome/oxo-flow.git cd oxo-flow cargo build --release # Binaries in target/release/ # oxo-flow (CLI) # oxo-flow-web (Web server) # venus (Venus pipeline)

Tech Stack

Built on battle-tested Rust crates. 475 tests including a 1,000-rule stress test, with #![forbid(unsafe_code)] enforced across all crates.

Language
Rust 2024 edition
Async runtime
CLI framework
clap (derive)
Web framework
Graph library
Serialization
serde + TOML
Templating
Error handling
Logging

Licensing

Open-source core with a dual-license model for the web interface. The core library, CLI, and Venus pipeline are free and open-source under Apache 2.0.

ComponentLicenseDetails
oxo-flow-core Apache 2.0 Free and open-source — use, modify, distribute without restriction
oxo-flow-cli Apache 2.0 Free and open-source — use, modify, distribute without restriction
venus Apache 2.0 Free and open-source — use, modify, distribute without restriction
oxo-flow-web Dual — Academic / Commercial Free for academic & non-commercial use; commercial use requires a paid license

Contributing & Community

Contributions are welcome. Read the guides below, ensure make ci passes, then open a PR.

📖

Documentation

Full guide · Workflow Gallery · Ask DeepWiki

🗺️

Project Resources

Roadmap · Contributing guide · Governance · Code of Conduct

🐛

Issues & Feedback

Bug reports · Feature requests · Known limitations

Get Started

Read the documentation, explore the gallery, or dive straight into the source.