Beyond releasing the CWL standards, the CWL community has developed many tools, software libraries, connected specifications, and has shared CWL descriptions for popular tools. Other tools are also available in Common Workflow Language Lab.

Table of contents:

Editors and Viewers §

Software Description
Rabix Benten A language server for CWL. Provides CWL code intelligence for VS Code, vim/neovim, Emacs, Acme, IntelliJ/JetBrains, and others
CWLviewer A web application to view and share Common Workflow Language workflows
ToolJig Web forms for building CWL Tool and Workflow descriptions
cwl-mode CWL editing mode for Emacs (instructions english, 日本語)
vue-cwl Visualizer of CWL workflows for the Vue JavaScript framework using cwl-svg
cwl-for-remote-container-template A template to write CWL documents with VSCode with remote container extension
atom language-cwl CWL editing mode for Atom
vim-cwl CWL editing mode for Vim
vscode-cwl CWL support in Visual Studio Code
bioSyntax Includes CWL syntax highliting for gedit

Execution frameworks §

While CWL implementations can execute workflows on different compute backends, the frameworks below can be used to provide a programmatic API or user interface to orchestrate execution with an CWL implementation.

Software Description
cwl-WES Microservice implementing GA4GH Workflow Execution Service (WES) API specification to run CWL workflows
SCHeMa Web interface for running CWL workflows on Kubernetes/minikube clusters, based on cwl-WES
WfExS Workflow Execution Service supporting GA4GH Tools Registry Service (TRS) API, RO-Crate, Nextflow and CWL
workflow-service An implementation of the GA4GH Workflow Execution Service (WES) API to run CWL workflows on remote clusters
workflUX Web interface for simplified execution of CWL workflows
Sapporo An implementation of Workflow Execution Service (WES) standard or so-called Workflow-as-a-Service. Explicit CWL support using cwltool or toil-cwl-runner.

Utilities §

Software Description
cwl-utils Example scripts using the Python 3.6+ CWL parsing library
looper Job submitting engine with support for CWL whole workflow/tool scattering
cwltest CWL testing framework, automated testing of tools and workflows written with CWL
cwl-inspector Tool to inspect properties of tools or workflows written in CWL
cwldep CWL dependency manager, for importing tool wrappers and workflows into your own project.
cwlprov-py Command line tool and Python API to explore CWLProv Research Objects containing provenance of Common Workflow Language executions
Cerise A REST service for running CWL workflows on remote clusters
cwl2zshcomp Generates ZSH auto completions from CWL command line tool descriptions
CWL-metrics Collect/analyze computational resource use of CWL workflow runs

Converters And Code Generators §

Software Description
cwl-upgrader Upgrade CWL documents from draft-3 to v1.0, v1.0 to v1.1, and v1.1 to v1.2.
argparse2tool Generate CWL CommandLineTool wrappers (and/or Galaxy tool descriptions) from Python programs that use argparse. Also supports the click argument parser.
cwl2argparse Generate Python argparse code from CWL CommandLineTool description.
pypi2cwl Automatically run argparse2cwl on any package in PyPi
acd2cwl ACD (EMBOSS) to CWL generator
CTD converter Common Tool Definition (CTD) to CWL converter
scriptcwl Create CWL workflows by writing a simple Python script
cwl-to-parsl Convert CWL to Parsl
Beatrice Pipeline Assembler For CWL
zatsu-cwl-generator A simple CWL document generator from given execution commands
Janis A Python API that generates portable CWL and WDL workflows
cwl-utils Python 3.6+ CWL parsing library
ipython2cwl A tool for converting IPython Jupyter Notebooks to CWL CommandLineTools via typing annotations
pegasus-cwl-converter Work in progress tool to convert a CWL workflow into a Pegasus workflow.
galaxy2cwl Convert a Galaxy .ga workflow to Abstract CWL
gxformat2 Converter for Galaxy’s workflow formats, can generate Abstract CWL
wdl-cwl-translator Translate WDL workflows to CWL

Code Libraries §

Software Description
cwltool cwltool (can be imported as a Python module and extended to create custom cwl runners)
schema salad Python module and tools for working with the CWL schema.
cwljava Java classes for loading, modifying, and creating CWL v1.2 documents
cwlScala A Scala wrapper around cwljava; Also included is an evaluation engine for CWL expressions.
cwl-ts-auto TypeScript objects and utilities for parsing and creating CWL v1.2 documents.
Rcwl Build, read, write and run CWL in R
tidycwl Tidy (R) Common Workflow Language Tools and Workflows
cwl-rs CWL object model for Rust
CmdParser Reading and Writing Common Workflow Language spec files from C++ applications. Includes a Command Line Parser
buchanae/cwl CWL document parsing and processing utilities in Go
CWL for Go Parser of CWL file and CWL input objects (JSON/YAML) files in Go
cwl-proto Reading and writing Common Workflow Language to Protocol Buffers
ro-crate-py Create an RO-Crate of workflow, can generate Abstract CWL

Related specifications and frameworks §

Software Description
CWLProv Profile of Research Object and W3C PROV for provenance of a CWL workflow run
RO-Crate Research Object Crate, packaging research data with schema.org metadata. Profiles for workflows and workflow runs
EDAM Ontology for categorizing operations and formats, useful in CWL metadata. Primarily used in bioscientific domains.
schema.org Vocabulary typically used in Web markup and in CWL metadata
bioschemas Profiles for annotating life science on the Web, including ComputationalWorkflow and ComputationalTool
GA4GH TRS Tool Registry Service API specification for discovering tools/workflows. Used by workflow registries incl. WorkflowHub and Dockstore
GA4GH TES Task Execution Service API specification for batch run of container command line tools. Used by cwl-tes
GA4GH WES Workflow Execution Service API specification, see implementations above
WDL Workflow Description Language implemented by Cromwell & dxWDL. Comparable to CWL, see the WDL to CWL translator.
IEEE 2791-2020 Standard for BioCompute Objects, recommends CWL. See preprint)