Concise Common Workflow Language (ccwl)

ccwl-with-guile-3.0.svg ccwl-with-guile-3.0-latest.svg ccwl-website.svg

The Concise Common Workflow Language (ccwl) is a concise syntax to express CWL workflows. It is implemented as an Embedded Domain Specific Language (EDSL) in the Scheme programming language, a minimalist dialect of the Lisp family of programming languages.

ccwl is a compiler to generate CWL workflows from concise descriptions in ccwl. In the future, ccwl will also have a runtime whereby users can interactively execute workflows while developing them.


Download release tarballs.

Download public signing key.

Browse the development version of ccwl hosted on GitHub.


Using binary software bundles

If you don't have GNU Guix set up, the easiest way to quickly try ccwl is to using the provided software bundles—either using the Guix tarball pack or the Docker image.

Using the Guix tarball pack

Download the Guix tarball pack from the GitHub releases page and extract it. Then, run ccwl with command-line arguments of your choice.

$ tar -xf ccwl-pack.tar.gz
$ ./opt/gnu/bin/ccwl [ARGS...]

Using the Docker image

Download the Docker image from the GitHub releases page and load it. Then, run ccwl with command-line arguments of your choice.

$ docker load -i ccwl-docker.tar.gz
$ docker run ccwl [ARGS...]

When passing files into the Docker container, remember to share the filesystem. The following command is one way to share the current directory with the container.

$ docker run -v "$PWD:$PWD" -w "$PWD" ccwl compile foo.scm

Using Guix

The easiest and best way (considering reproducibility) is to install ccwl through GNU Guix. ccwl is packaged for Guix and can be installed by running

$ guix install ccwl

Manually from source

You can also install ccwl more traditionally using the provided GNU build system scripts. You will have to ensure that the necessary dependencies (guile and guile-libyaml are core dependencies; graphviz, cwltool and skribilo are required to build the manual) are installed, and then run

$ ./configure; make; make install

If you are using a release tarball, you may skip the step.


Documentation for ccwl is available online. If ccwl is installed on your machine, you may also read the manual using your info browser. The Tutorial section of the manual provides a gentle introduction to ccwl.


Feedback, suggestions, feature requests, bug reports and pull requests are all welcome. Unclear and unspecific error messages are considered a bug. Do report them!

To hack on ccwl, you can use GNU Guix to quickly drop into a development environment by running

$ guix shell -Df guix.scm


ccwl is free software released under the terms of the GNU General Public License, either version 3 of the License, or (at your option) any later version.