Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Ep3: Extremely Pluggable Pipeline Processor

Actions Status license

This is a workflow engine for the Common Workflow Language which aims to have a pluggable architecture.

Conformance tests for CWL v1.0 for the latest release

release commit


CommandLineTool ExpressionTool Workflow

Required features


Optional features

DockerRequirement EnvVarRequirement InitialWorkDirRequirement InlineJavascriptRequirement MultipleInputFeatureRequirement ResourceRequirement ScatterFeatureRequirement SchemaDefRequirement ShellCommandRequirement StepInputExpressionRequirement SubworkflowFeatureRequirement


  • ep3 will not pass the test #61 with required and command_line_tool tags due to common-workflow-language#761.
  • The conformance badge for SoftwareRequirement is not available because there are no conformance tests for this feature.
  • Currently ScatterFeatureRequirement (scatter tag) and StepInputExpressionRequirement (step_input tag) are not supported.
    • It affects the result of the tests of Workflow (workflow tag), InlineJavascriptRequirement (inline_javascript tag), MultipleInputFeatureRequirement (multiple_input tag) and SubworkflowFeatureRequirement (subworkflow tag).


How to install

  • Install medal, bash, ruby, jq, nodejs and docker
  • Execute the following commands and add /path/to/ep3 to $PATH.
$ git clone --recursive


See ep3-runner --help for details.

$ ep3-runner <cwl> [job]

It prints the log and debug outputs to stderr and prints the output object to stdout. Both types of outputs are printed in JSON Lines format.

Here is an example:

$ ep3-runner --quiet /path/to/ep3/examples/workflow.cwl /path/to/ep3/examples/inputs.yml | jq .
  "output": {
    "class": "File",
    "location": "file:///current/directory/output",
    "path": "/current/directory/output",
    "basename": "output",
    "dirname": "/current/directory",
    "nameroot": "output",
    "nameext": "",
    "checksum": "sha1$c28e458d4e943c743b9b3c46fdab10688a6d68b6",
    "size": 687

For developers

How to test

$ git clone --recursive
$ cd ep3
$ cwltest --tool $PWD/ep3-runner --test test.yml
Test [1/1] Workflow example
All tests passed

ep3 internals

The ep3-runner command consists of the following internal commands:

  • ep3 init
    • Generates Petri nets for medal that represents a given CWL workflow (including internal states in workflow engines such as staging processes)
  • ep3 run
    • Executes a medal to run a workflow
  • ep3 list
    • Shows the output object for execution result
  • ep3 resume (Unimplemented)
  • ep3 stop (Unimplemented)