Skip to main content

Workflow Canvas

PyPI CI Documentation License: BSD-3-Clause

Workflow Canvas (wfc) is a Python tool for reproducible computational pipelines, managed from the command line or a browser-based visual Canvas. It is built for researchers and computational scientists who need to know exactly which code, container, parameters, and inputs produced every result.

The Canvas Builder with the demo pipeline wired: three samples fanned across five methods

Workflow Canvas tracks your methods, their input/output contracts, run lineage, and content-addressed caching in a local SQLite database, then compiles pipelines to Snakemake Snakefiles so Snakemake handles execution, parallelism, and dependency resolution. Every method runs inside a container, and every output is stored in a content-addressed archive (DVC), so results are reproducible and re-running an unchanged pipeline does no duplicate work.

Key Features

Feature What it does
Core pipeline Register modules, methods, and samples; build a pipeline in the Canvas; generate and execute a Snakefile (wfc run-pipeline).
Contracts Two-tier validation (module + method) declared in method.yaml — wiring errors and missing outputs are caught before a run starts.
Caching A clean-git run gate plus a SHA-256 cache key over code, inputs, parameters, and the resolved container image — unchanged steps are skipped automatically; changing one method re-runs only what it touched.
Lineage Every run is recorded in SQLite; trace any output back through its full DAG ancestry (cache hits appear as audit rows).
Environments Methods run in containers built from a pixi, conda, or bring-your-own (byo) backend via wfc register-env; image digests are pinned in .wfc/envs.json.
Parameter sweeps & fan-out Sweep parameters, fan out across variants and per-sample overrides, and reuse values with pipeline variables.
Canvas A browser-based UI (wfc canvas) with three views: a drag-and-drop Builder, a run-History viewer with lineage and artifacts, and a Registry browser.

Requirements

  • Python 3.12 — required (the config parser uses stdlib tomllib).
  • Docker — required. Methods always run inside a container; nothing runs without a working Docker installation. wfc init pre-flights it and wfc doctor checks it.
  • Git — required, but local only. wfc records a commit per run and refuses to run on uncommitted code. No GitHub account, login, or network is involved; wfc never pushes.

DVC and Snakemake ship with Workflow Canvas — you do not install them separately.

Installation

# Installs the wfc CLI, plus bundled DVC and Snakemake
pip install workflow-canvas

# Verify
wfc --help

Quick Start

New to Workflow Canvas? Start with the Getting Started tutorial in the documentation.

For the fastest first look, wfc demo populates a freshly initialized project with a complete runnable example pipeline and opens it in the Canvas (wfc demo --remove takes it back out):

wfc init --dir ./demo_project && cd demo_project && wfc demo

The steps below show the same setup done manually with your own code and data:

# 1. Initialize a project (guided wizard: scaffolds dirs, configures an output
#    archive, sets up a local git repo, and pre-flights Docker)
wfc init --dir ./my_project
cd my_project

# Optional: check that the project is ready to run (git, archive, Docker)
wfc doctor

# 2. Build and register the container environment your methods will run in.
#    Docs → "Registering an Environment"
wfc register-env analysis conda:analysis

# 3. Register a module (from a module.yaml, recommended).
#    Docs → "Registration"
wfc register-module --name cell_analysis --module-dir modules/cell_analysis

# 4. Register a method (AST-scans the script for its inputs, outputs, and params).
#    Docs → "Authoring a Method Script" and "Writing Contracts"
wfc register-method modules/cell_analysis/preprocess --module cell_analysis

# 5. Register input data (content-hashed into the DVC store).
wfc register-sample --name CFPAC_ERKi --source /data/raw/cfpac_erki.csv

# 6. Build a pipeline in the Canvas, then run it.
#    Docs → "Running & Inspecting Results"
wfc run-pipeline --cores 4

Visual Canvas

wfc canvas        # serves the UI at http://127.0.0.1:8500 by default

Use the Builder to assemble pipelines by dragging and wiring method nodes, the History view to browse past runs (lineage chains, params, metrics, artifacts), and the Registry to inspect everything registered in the project. See the Canvas how-to in the documentation for a walkthrough.

Project Structure

my_project/
  .wfc/
    wf-canvas.toml        # Project config (DB path, env root, DVC archive URL)
    wfc.db                # SQLite database — single source of truth (not in git)
    envs.json             # Registered container environments (tracked in git)
  modules/                # Nested module/method hierarchies (module.yaml + methods)
  methods/                # Flat standalone methods
  data/samples/           # Ephemeral workspace; samples restored lazily at run time
  .runs/
    sentinels/            # Zero-byte Snakemake DAG-wiring sentinels
    {run_id}/             # Transient staging; bytes are moved to the DVC archive
  .dvc/cache/             # Local content-addressed cache
  .gitignore

Output bytes are not kept in .runs/; they live in the content-addressed DVC archive (default ~/.wfc/archives/<project>, outside the repo), indexed by .wfc/wfc.db. Back up both .wfc/ and the archive folder to keep results recoverable.

Documentation

Full user documentation is published at workflow-canvas.readthedocs.io and covers:

  • Tutorials — Getting Started, Exploring the Demo, Authoring a Method Script, Registering an Environment, Writing Contracts
  • How-to — Registration, the Canvas, Running & Inspecting Results, Sweeping Parameters & Fanning Out
  • Reference — CLI Reference, Python API (wfc-client), method.yaml schema, wf-canvas.toml
  • Explanation — How a Run Executes, Caching & Reproducibility, Project Anatomy, Storage & Provenance

Contributing

Bug reports, questions and pull requests are welcome. See CONTRIBUTING.md for how to set up a development environment, run the tests and build the docs, and the Code of Conduct for how we work together.

License

See LICENSE.

Metadata

Release files for workflow-canvas 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for workflow-canvas 0.6.1
File Size Uploaded
workflow_canvas-0.6.1.tar.gz 4.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for workflow-canvas 0.6.1
File Interpreter ABI Platform
workflow_canvas-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 9.2 MB

Release files / workflow_canvas-0.6.1.tar.gz

Download URL workflow_canvas-0.6.1.tar.gz
Size 4.4 MB
Tags Source
SHA-256 checksum
How to use checksums
9857d814c2d5a64f8b739c089d5488780bbb47f5727fb6307d5f671c089a3a90
BLAKE2b-256 checksum
How to use checksums
c26b8c4bb6933ba7ba395d7c5a37d96008bb6403f5facf224769a46feb00cb98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.10.9 Windows/10

Release files / workflow_canvas-0.6.1-py3-none-any.whl

Download URL workflow_canvas-0.6.1-py3-none-any.whl
Size 4.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5e2f981d4c92fa612d6afe3f8eb792c71ae40df91f17f37f21924c40cfb677d7
BLAKE2b-256 checksum
How to use checksums
5c0d85874ad1142bdb52767838f3b0dc12cd848bf8217899087383835ed9c8e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.10.9 Windows/10

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page