Installation#
This guide covers all the ways to install the oxo-flow binary on your system.
Requirements#
- Operating system: Linux (x86_64, aarch64) or macOS (Apple Silicon, Intel)
- Disk space: ~28 MB for the binary (the release tarballs are ~10–12 MB compressed)
- Optional: Rust toolchain (1.98+) if building from source
Runtime dependencies
oxo-flow itself has no runtime dependencies — it is a single static binary. However, the tools your workflows call (e.g., bwa, samtools, GATK) must be available either on your $PATH or through an environment manager (conda, docker, etc.) declared in your .oxoflow file.
Option 1 — Install with Cargo (recommended)#
If you don't have Rust installed, use the official installer:
Verify the installation:
Updating
Run the same cargo install oxo-flow-cli command to update to the latest version. Cargo will rebuild if a newer version is available.
Option 2 — Build from Source#
Clone the repository and build the workspace:
--workspace is required
The repo root is also a library package (the integration tests). A bare
cargo build --release compiles only that package and produces no
target/release/oxo-flow — pass --workspace to build every crate.
The binary is at target/release/oxo-flow. Copy it to a directory on your $PATH:
Development build#
For faster compile times during development (without optimizations):
Option 3 — Download Pre-built Binary#
Pre-built binaries are available from the GitHub Releases page.
Verify the download against SHA256SUMS.txt (published with every
release):
curl -LO https://github.com/Traitome/oxo-flow/releases/download/v0.23.2/SHA256SUMS.txt
sha256sum -c SHA256SUMS.txt --ignore-missing
Other targets: gnu builds need glibc, musl builds are
statically linked (Alpine, containers), and armv7 covers 32-bit ARM.
Desktop users may prefer the .deb / .rpm / .AppImage /
.dmg bundles — see Desktop App Packaging.
Option 4 — Run with Docker#
Images are published to GitHub Container Registry automatically on every release and every push to main.
Release images are multi-arch (linux/amd64 + linux/arm64) and are assembled from the
SHA256-verified release binaries. :latest moves only after the release image passes a health
smoke test, :<major.minor> (e.g. :0.17) tracks the newest patch of a minor line, and :main
is a multi-arch dev build compiled from source:
# Web UI at http://localhost:3000
docker run -d --name oxo-flow -p 3000:3000 ghcr.io/traitome/oxo-flow:latest
# Pin a specific release (or track a minor line)
docker run -d -p 3000:3000 ghcr.io/traitome/oxo-flow:0.23.2
docker run -d -p 3000:3000 ghcr.io/traitome/oxo-flow:0.23
# CLI one-shot usage — mount your workflow directory
docker run --rm -v "$PWD:/work" -w /work ghcr.io/traitome/oxo-flow:latest \
oxo-flow run my-pipeline.oxoflow
Data persistence
The server stores its database in /app/data inside the container. Mount a
volume to keep it across restarts: -v oxo-flow-data:/app/data. The image
runs as UID 1000 — make sure the mounted host directory is writable by that
user.
Optional Dependencies#
Graphviz (for Visualization)#
The oxo-flow graph command outputs workflows in DOT format. To render these graphs as images (PNG, SVG, etc.), you need to install Graphviz.
Shell Completions#
oxo-flow can generate shell completions for Bash, Zsh, Fish, Elvish, and PowerShell:
Verify Installation#
After installation, confirm everything is working:
# Check version
oxo-flow --version
# Show help
oxo-flow --help
# Initialize a test project
oxo-flow init my-test-pipeline
cd my-test-pipeline
oxo-flow validate my-test-pipeline.oxoflow
Expected output:
Next Steps#
- Quick Start — run a workflow in 5 minutes
- Your First Workflow — build a pipeline from scratch