Awesome Pipeline
================

A curated list of awesome pipeline toolkits inspired by [Awesome Sysadmin](https://github.com/kahun/awesome-sysadmin)

Pipeline frameworks & libraries
--------------------------------

* [ActionChain](http://docs.stackstorm.com/actionchain.html) - A workflow system for simple linear success/failure workflows.
* [Adage](https://github.com/diana-hep/adage) - Small package to describe workflows that are not completely known at definition time.
* [AiiDA](https://github.com/aiidateam/aiida-core) - workflow manager with a strong focus on provenance, performance and extensibility.
* [Airflow](https://github.com/airbnb/airflow) - Python-based workflow system created by AirBnb.
* [Anduril](http://www.anduril.org/anduril/site/) - Component-based workflow framework for scientific data analysis.
* [Antha](https://www.antha-lang.org/) - High-level language for biology.
* [AWE](https://github.com/MG-RAST/AWE/) - Workflow and resource management system with CWL support.
* [Balsam](https://github.com/argonne-lcf/balsam) - Python-based high throughput task and workflow engine. 
* [Bds](http://pcingola.github.io/BigDataScript/) - Scripting language for data pipelines.
* [BioMake](https://github.com/evoldoers/biomake) - GNU-Make-like utility for managing builds and complex workflows.
* [BioQueue](https://github.com/liyao001/BioQueue) - Explicit framework with web monitoring and resource estimation.
* [Bioshake](https://github.com/papenfusslab/bioshake) - Haskell DSL built on shake with strong typing and EDAM support.
* [Bistro](https://github.com/pveber/bistro) - Library to build and execute typed scientific workflows.
* [Bpipe](https://github.com/ssadedin/bpipe/) - Tool for running and managing bioinformatics pipelines.
* [Briefly](https://github.com/bloomreach/briefly) - Python Meta-programming Library for Job Flow Control.
* [Cluster Flow](http://clusterflow.io) - Command-line tool which uses common cluster managers to run bioinformatics pipelines.
* [Clusterjob](https://github.com/monajemi/clusterjob) - Automated reproducibility, and hassle-free submission of computational jobs to clusters.
* [Compi](https://www.sing-group.org/compi) - Application framework for portable computational pipelines.
* [Compss](https://www.bsc.es/research-and-development/software-and-apps/software-list/comp-superscalar) - Programming model for distributed infrastructures.
* [Conan2](https://github.com/tburdett/Conan2) - Light-weight workflow management application.
* [Consecution](https://github.com/robdmc/consecution) - A Python pipeline abstraction inspired by Apache Storm topologies.
* [Cosmos](https://mizzou-cbmi.github.io/) - Python library for massively parallel workflows.
* [Couler](https://github.com/couler-proj/couler) - Unified interface for constructing and managing workflows on different workflow engines, such as Argo Workflows, Tekton Pipelines, and Apache Airflow.
* [Covalent](https://github.com/AgnostiqHQ/covalent) - Workflow orchestration toolkit for high-performance and quantum computing research and development.
* [Cromwell](https://github.com/broadinstitute/cromwell) - Workflow Management System geared towards scientific workflows from the Broad Institute.
* [Cuneiform](https://github.com/joergen7/cuneiform) - Advanced functional workflow language and framework, implemented in Erlang.
* [Cylc](https://cylc.github.io/) - A workflow engine for cycling systems, originally developed for operational environmental forecasting.
* [Dagobah](https://github.com/thieman/dagobah) - Simple DAG-based job scheduler in Python.
* [Dagr](https://github.com/fulcrumgenomics/dagr) - A scala based DSL and framework for writing and executing bioinformatics pipelines as Directed Acyclic Graphs.
* [Dagster](https://github.com/dagster-io/dagster) - Python-based API for defining DAGs that interfaces with popular workflow managers for building data applications.
* [DataJoint](https://datajoint.io) - an open-source relational framework for scientific data pipelines.
* [Dask](https://github.com/dask/dask) - Dask is a flexible parallel computing library for analytics.
* [Dbt](https://www.getdbt.com/) - Framework for writing analytics workflows entirely in SQL. The T part of ETL, focuses on analytics engineering.
* [Dockerflow](https://github.com/googlegenomics/dockerflow) - Workflow runner that uses Dataflow to run a series of tasks in Docker.
* [Drake](https://github.com/Factual/drake) - Robust DSL akin to Make, implemented in Clojure.
* [Drake R package](https://github.com/ropensci/drake) - Reproducibility and high-performance computing with an easy R-focused interface. Unrelated to [Factual's Drake](https://github.com/factual/drake). Succeeded by [Targets](https://github.com/ropensci/targets).
* [Dray](https://github.com/CenturyLinkLabs/dray) - An engine for managing the execution of container-based workflows.
* [ecFlow](https://github.com/ecmwf/ecflow) - Workflow manager.
* [eHive](https://github.com/Ensembl/ensembl-hive) - System for creating and running pipelines on a distributed compute resource.
* [Fission Workflows](https://github.com/fission/fission-workflows) - A fast, lightweight workflow engine for serverless/FaaS functions.
* [Flex](https://github.com/druths/flex/) - Language agnostic framework for building flexible data science pipelines (Python/Shell/Gnuplot).
* [Flowr](https://github.com/sahilseth/flowr) - Robust and efficient workflows using a simple language agnostic approach (R package).
* [Gc3pie](https://github.com/uzh/gc3pie) - Python libraries and tools for running applications on diverse Grids and clusters.
* [Guix Workflow Language](https://guixwl.org/) - A workflow management language extension for GNU Guix.
* [Gwf](https://github.com/mailund/gwf) - Make-like utility for submitting workflows via qsub.
* [Hamilton](https://github.com/dagworks-inc/hamilton) - A python micro-framework for describing dataflows; runs anywhere python runs.
* [HyperLoom](https://github.com/It4innovations/HyperLoom) - Platform for defining and executing workflow pipelines in large-scale distributed environments.
* [Joblib](https://joblib.readthedocs.io/en/latest/) - Set of tools to provide lightweight pipelining in Python.
* [Jug](https://jug.readthedocs.io) - A task Based parallelization framework for Python.
* [Kedro](https://github.com/quantumblacklabs/kedro) - Workflow development tool that helps you build data pipelines.
* [Kestra](https://github.com/kestra-io/kestra) - Open source data orchestration and scheduling platform with declarative syntax.
* [Ketrew](https://github.com/hammerlab/ketrew) - Embedded DSL in the OCAML language alongside a client-server management application.
* [Kronos](https://github.com/jtaghiyar/kronos) - Workflow assembler for cancer genome analytics and informatics.
* [Loom](https://github.com/StanfordBioinformatics/loom) - Tool for running bioinformatics workflows locally or in the cloud.
* [Longbow](http://www.hecbiosim.ac.uk/longbow) - Job proxying tool for biomolecular simulations.
* [Luigi](https://github.com/spotify/luigi) - Python module that helps you build complex pipelines of batch jobs.
* [Maestro](https://github.com/LLNL/maestrowf) - YAML based HPC workflow execution tool. 
* [Makeflow](http://ccl.cse.nd.edu/software/makeflow/) - Workflow engine for executing large complex workflows on clusters.
* [Mara](https://github.com/mara/data-integration) -  A lightweight, opinionated ETL framework, halfway between plain scripts and Apache Airflow.
* [Mario](https://github.com/intentmedia/mario) - Scala library for defining data pipelines.
* [Martian](http://martian-lang.org/) - A language and framework for developing and executing complex computational pipelines.
* [MD Studio](https://github.com/MD-Studio/MDStudio) - Microservice based workflow engine.
* [MetaFlow](https://metaflow.org/) - Open-sourced framework from Netflix, for DAG generation for data scientists. Python and R API's.
* [Mistral](https://github.com/openstack/mistral) - Python based workflow engine by the Open Stack project.
* [Moa](https://github.com/mfiers/Moa) - Lightweight workflows in bioinformatics.
* [Nextflow](http://www.nextflow.io) - Flow-based computational toolkit for reproducible and scalable bioinformatics pipelines.
* [NiPype](https://github.com/nipy/nipype) - Workflows and interfaces for neuroimaging packages.
* [OpenGE](https://github.com/adaptivegenome/openge) - Accelerated framework for manipulating and interpreting high-throughput sequencing data.
* [Pachyderm](https://www.pachyderm.io/) - Distributed and reproducible data pipelining and data management, built on the container ecosystem.
* [Parsl](https://github.com/Parsl/parsl) - Parallel Scripting Library.
* [PipEngine](https://github.com/fstrozzi/bioruby-pipengine) - Ruby based launcher for complex biological pipelines.
* [Pinball](https://github.com/pinterest/pinball) - Python based workflow engine by Pinterest.
* [Popper](https://github.com/systemslab/popper) - YAML based container-native workflow engine supporting Docker, Singularity, Vagrant VMs with Docker daemon in VM, and local host.
* [Porcupine](https://github.com/tweag/porcupine) - Haskell workflow tool to express and compose tasks (optionally cached) whose datasources and sinks are known ahead of time and rebindable, and which can expose arbitrary sets of parameters to the outside world.
* [Prefect](https://docs.prefect.io/) - Python based workflow engine powering Prefect.
* [Pydra](https://github.com/nipype/pydra) - Lightweight, DAG-based Python dataflow engine for reproducible and scalable scientific pipelines.
* [PyFlow](https://github.com/Illumina/pyflow) - Lightweight parallel task engine.
* [pyperator](https://github.com/baffelli/pyperator) - Simple push-based python workflow framework using asyncio, supporting recursive networks.
* [pyppl](https://github.com/pwwang/pyppl) - A python lightweight pipeline framework.
* [pypyr](https://pypyr.io) - Automation task-runner for sequential steps defined in a pipeline yaml, with AWS and Slack plug-ins.
* [Pwrake](https://github.com/masa16/Pwrake/) - Parallel workflow extension for Rake.
* [Qdo](https://bitbucket.org/berkeleylab/qdo) - Lightweight high-throughput queuing system for workflows with many small tasks to perform.
* [Qsubsec](https://github.com/alastair-droop/qsubsec) - Simple tokenised template system for SGE.
* [Rabix](https://github.com/rabix/rabix) - Python-based workflow toolkit based on the Common Workflow Language and Docker.
* [Rain](https://github.com/substantic/rain) - Framework for large distributed task-based pipelines, written in Rust with Python API.
* [Ray](https://github.com/ray-project/ray) - Flexible, high-performance distributed Python execution framework.
* [Redun](https://github.com/insitro/redun) - Yet another redundant workflow engine.
* [Reflow](https://github.com/grailbio/reflow) - Language and runtime for distributed, incremental data processing in the cloud.
* [Remake](https://github.com/richfitz/remake) - Make-like declarative workflows in R.
* [Rmake](http://physiology.med.cornell.edu/faculty/mason/lab/r-make/) - Wrapper for the creation of Makefiles, enabling massive parallelization.
* [Rubra](https://github.com/bjpop/rubra) - Pipeline system for bioinformatics workflows.
* [Ruffus](http://www.ruffus.org.uk) - Computation Pipeline library for Python.
* [Ruigi](https://github.com/kirillseva/ruigi) - Pipeline tool for R, inspired by Luigi.
* [Sake](http://tonyfischetti.github.io/sake/) - Self-documenting build automation tool.
* [SciLuigi](https://github.com/pharmbio/sciluigi) - Helper library for writing flexible scientific workflows in Luigi.
* [SciPipe](http://scipipe.org) - Library for writing Scientific Workflows in Go.
* [Signac](https://signac.io) - Lightweight, but scalable framework for file-driven workflows to be run locally and on HPC systems.
* [Scoop](https://github.com/soravux/scoop/) - Scalable Concurrent Operations in Python.
* [Seqtools](https://github.com/nlgranger/SeqTools) - Python library for lazy evaluation of pipelined transformations on indexable containers.
* [SmartPipeline](https://github.com/giacbrd/SmartPipeline) - A framework for rapid development of robust data pipelines following a simple design pattern.
* [Snakemake](https://snakemake.readthedocs.io/en/stable) - Tool for running and managing bioinformatics pipelines.
* [Spiff](https://github.com/knipknap/SpiffWorkflow) - Based on the Workflow Patterns initiative and implemented in Python.
* [Stolos](https://github.com/sailthru/stolos) - Directed Acyclic Graph task dependency scheduler that simplify distributed pipelines.
* [Steppy](https://github.com/minerva-ml/steppy) - lightweight, open-source, Python 3 library for fast and reproducible experimentation.
* [Stpipe](https://stpipe.readthedocs.io/) - File processing pipelines as a Python library.
* [StreamFlow](https://github.com/alpha-unito/streamflow) - Container native workflow management system focused on hybrid workflows.
* [StreamPipes](https://streampipes.apache.org) - A self-service IoT toolbox to enable non-technical users to connect, analyze and explore IoT data streams.
* [Sundial](https://github.com/gilt/sundial) - Jobsystem on AWS ECS or AWS Batch managing dependencies and scheduling.
* [Suro](https://github.com/Netflix/suro) - Java-based distributed pipeline from Netflix.
* [Swift](http://swift-lang.org) - Fast easy parallel scripting - on multicores, clusters, clouds and supercomputers.
* [Targets](https://github.com/ropensci/targets) - Dynamic, function-oriented [Make](https://www.gnu.org/software/make/)-like reproducible pipelines at scale in R.
* [TaskGraph](https://github.com/natcap/taskgraph) - A library to help manage complicated computational software pipelines consisting of long running individual tasks.
* [Tibanna](https://github.com/4dn-dcic/tibanna) - Tool that helps you run genomic pipelines on Amazon cloud.
* [Toil](https://github.com/BD2KGenomics/toil) - Distributed pipeline workflow manager (mostly for genomics).
* [Yap](http://opensource.nibr.com/yap/) - Extensible parallel framework, written in Python using OpenMPI libraries.
* [Yapp](https://github.com/picanumber/yapp) - A C++ parallel pipeline library for stream processing.
* [Wallaroo](https://www.wallaroolabs.com/) - Framework for streaming data applications and algorithms that react to real-time events.
* [WorldMake](http://worldmake.org/) - Easy Collaborative Reproducible Computing.
* [Zenaton](https://zenaton.com) - Workflow engine for orchestrating jobs, data and events across your applications and third party services.
* [ZenML](https://zenml.io) - Extensible open-source MLOps framework to create reproducible pipelines for data scientists.

Workflow platforms
--------------------
* [ActivePapers](http://www.activepapers.org/) - Computational science made reproducible and publishable.
* [Active Workflow](https://github.com/automaticmode/active_workflow) - Polyglot workflows without leaving the comfort of your technology stack.
* [Anvi’o](https://anvio.org/) - A community and framework centered around metagenomics, designed to facilitate reproducible exploration and visualization of data.
* [Apache Iravata](https://airavata.apache.org/) - Framework for executing and managing computational workflows on distributed computing resources.
* [Arteria](https://arteria-project.github.io/) - Event-driven automation for sequencing centers. Initiates workflows based on events.
* [Arvados](http://arvados.org) - A container based workflow platform.
* Biokepler - Bioinformatics Scientific Workflow for Distributed Analysis of Large-Scale Biological Data. ([_inactive since 10/2019_](https://web.archive.org/web/20190108162953/https://www.biokepler.org/))
* [Butler](http://github.com/llevar/butler) - Framework for running scientific workflows on public and academic clouds.
* [Chipster](http://chipster.csc.fi) - Open source platform for data analysis.
* [Clubber](https://bitbucket.org/bromberglab/clubber) - Cluster Load Balancer for Bioinformatics e-Resources.
* [Digdag](https://www.digdag.io) - Workflow manager designed for simplicity, extensibility and collaboration.
* [Domino](https://github.com/Tauffer-Consulting/domino) - User friendly and open source visual workflow management platform.
* [Fireworks](https://github.com/materialsproject/fireworks) - Centralized workflow server for dynamic workflows of high-throughput computations.
* [Flyte](https://github.com/lyft/flyte) - Container-native, type-safe workflow and pipelines platform for large scale processing and ML.
* [Galaxy](https://galaxyproject.org) - Powerful workflow system which can be used on the command line or with the GUI.
* [Kepler](https://kepler-project.org/) - Kepler scientific workflow application from University of California.
* [KNIME Analytics Platform](https://www.knime.org/knime-analytics-platform) - General-purpose platform with many specialized domain extensions.
* [NextflowWorkbench](http://workflow.campagnelab.org) - Integrated development environment for Nextflow, Docker and Reusable Workflows.
* [omega|ml DataOps Platform](https://github.com/omegaml/omegaml) - Data & model pipeline deployment for humans - integrated, scalable, extensible.
* [OpenMOLE](http://www.openmole.org/current/) - Workflow Management System for exploration of models and parameter optimization.
* [Ophidia](http://ophidia.cmcc.it) - Data-analytics platform with declarative workflows of distributed operations.
* [Orchest](https://github.com/orchest/orchest) - An IDE for Data Science.
* [Pegasus](http://pegasus.isi.edu) - Workflow Management System.
* [Piper](https://github.com/creactiviti/piper) - Distributed workflow engine designed to be dead simple.
* [Polyaxon](https://github.com/polyaxon/polyaxon) - A platform for machine learning experimentation workflow.
* [Reana](https://github.com/reanahub/reana) - Platform for reusable research data analyses developed by CERN.
* [Sushi](https://github.com/uzh/sushi) - Supporting User for SHell script Integration.
* [Yabi](http://ccg.murdoch.edu.au/yabi) - Online research environment for grid, HPC and cloud computing.
* [Taverna](http://www.taverna.org.uk) - Domain independent workflow system.
* [Temporal](https://www.temporal.io/) - Highly scalable developer oriented _Workflow as Code_ engine.
* [VisTrails](http://www.vistrails.org/) - Scientific workflow and provenance management system.
* [Wings](http://www.wings-workflows.org) - Semantic workflow system utilizing Pegasus as execution system.
* [Watchdog](https://github.com/klugem/watchdog) - Workflow management system for the automated and distributed analysis of large-scale experimental data.
* [FlowHub](https://www.flowhub.com.cn) - FlowHub is a new workflow cloud platform. 

Workflow languages
-------------------
* [Common Workflow Language](https://github.com/common-workflow-language/common-workflow-language)
* [Cloudgene Workflow Language](http://cloudgene.uibk.ac.at/developer-guide)
* [OpenMOLE DSL](http://www.openmole.org/current/Documentation_Language.html)
* [Workflow Description Language](https://github.com/openwdl/wdl)
* [Yet Another Workflow Language](http://www.yawlfoundation.org)
* [Pipelines](https://github.com/calebwin/pipelines)

Workflow standardization initiatives
---------------------------
* [Workflow 4 Ever Initiative](http://www.wf4ever-project.org)
* [Workflow 4 Ever workflow research object model](http://wf4ever.github.io/ro)
* [Workflow Patterns Initiative](http://www.workflowpatterns.com)
* [Workflow Patterns Library](http://www.workflowpatterns.com/patterns)
* [ResearchObject.org](http://www.researchobject.org)

ETL & Data orchestration 
------------------------
* [DataLad](https://datalad.org) - git and git-annex based data version control system with lightweight provenance capture/re-execution support.
* [DVC](https://dvc.org) - Data version control system for ML project with lightweight pipeline support.
* [lakeFS](https://github.com/treeverse/lakeFS) - Repeatable, atomic and versioned data lake on top of object storage.
* [Nessie](https://github.com/projectnessie/nessie) - Provides Git-like capability & version control for Iceberg Tables, Delta Lake Tables & SQL Views.

Literate programming (aka interactive notebooks)
---------------------------------------------------
* [Beaker](http://beakernotebook.com/) Notebook-style development environment.
* [Binder](http://mybinder.org/) - Turn a GitHub repo into a collection of interactive notebooks powered by Jupyter and Kubernetes
* [IPython](https://ipython.org/) A rich architecture for interactive computing.
* [Jupyter](https://jupyter.org/) Language-agnostic notebook literate programming environment.
* [Pathomx](http://pathomx.org) - Interactive data workflows built on Python.
* [Polynote](https://github.com/polynote/polynote) - A better notebook for Scala (and more). Built by Netflix.
* [Ploomber](https://github.com/ploomber/ploomber) - Consolidate your notebooks and scripts in a reproducible pipeline using a `pipeline.yaml` file
* [R Notebooks](http://rmarkdown.rstudio.com/r_notebooks.html) - R Markdown notebook literate programming environment.
* [RedPoint Notebooks](https://www.redpointnotebooks.com/) - Web-native computational notebook for programmers supporting multiple languages, APIs and webooks.
* [SoS](https://vatlab.github.io/sos-docs/) - Readable, interactive, cross-platform and cross-language data science workflow system.
* [Zeppelin](https://zeppelin.apache.org/) - Web-based notebook that enables interactive data analytics.

Extract, transform, load (ETL)
------------------------------

* [Cadence](https://github.com/uber/cadence) Distributed, scalable, durable, and highly available orchestration engine developed by Uber.
* [Dataform](https://github.com/dataform-co/dataform) - Dataform is a framework for managing SQL based operations in your data warehouse.
* [Kiba ETL](http://www.kiba-etl.org) - A data processing & ETL framework for Ruby.
* [LinkedPipes ETL](https://etl.linkedpipes.com) - Linked Data publishing and consumption ETL tool.
* [Pentaho Kettle](https://community.hitachivantara.com/s/article/data-integration-kettle) - A plataform that delivers poweful ETL capabilities, using a groundbreaking, metadata-driven approach.
* [Substation](https://github.com/brexhq/substation) - Substation is a cloud native data pipeline and transformation toolkit written in Go.

Continuous Delivery workflows
--------------------------------
* [Argo](https://github.com/argoproj/argo) - Get stuff done with container-native workflows for Kubernetes.
* [CDS](https://github.com/ovh/cds) - A pipeline based Continuous Delivery Service written in Golang.

Build automation tools
----------------------
* [Bazel](http://bazel.io/) - Build software just as engineers do at Google.
* [doit](https://github.com/pydoit/doit) - Highly generalized task-management and automation in Python.
* [Gradle](http://gradle.org/) - Unified cross platforms builds.
* [Just](https://github.com/casey/just) - Command and recipe runner similar to Make, built in Rust.
* [Make](https://www.gnu.org/software/make/) - The GNU Make build system.
* [Prodmodel](https://github.com/prodmodel/prodmodel) - Build system for data science pipelines.
* [Scons](http://www.scons.org/) - Python library focused on C/C++ builds.
* [Shake](https://github.com/ndmitchell/shake) - Define robust build systems akin to GNU Make using Haskell.

Automated workflow composition
------------------------------
* [APE](https://github.com/sanctuuary/APE) - A tool for the automated exploration of possible computational workflows based on semantic annotations.


Other projects
----------------
* [HPC Grid Runner](http://hpcgridrunner.github.io/)
* [NiFi](https://nifi.apache.org) - Powerful and scalable directed graphs of data routing, transformation, and system mediation logic.
* [noWorkflow](https://github.com/gems-uff/noworkflow) - Supporting infrastructure to run scientific experiments without a scientific workflow management system, and still get things like provenance.
* [Reprozip](https://www.reprozip.org/) - Simplifies the process of creating reproducible experiments from command-line executions.


Related lists
--------------
* [Awesome streaming](https://github.com/manuzhang/awesome-streaming) - Curated list of awesome streaming frameworks, applications.
* [Awesome ETL](https://github.com/pawl/awesome-etl) - Curated list of notable ETL (extract, transform, load) frameworks, libraries and software.
* [Awesome workflow engines](https://github.com/meirwah/awesome-workflow-engines) - Curated list of awesome open source workflow engines.
* [Computational Data Analysis Workflow Systems](https://github.com/common-workflow-language/common-workflow-language/wiki/Existing-Workflow-systems)
