Cromwell CLI

This program was created to:
- Facilitate the installation and configuration of a Cromwell Server with a local backend using Docker.
- Provide the functionality to reuse already processed jobs by default, via the Call Cache mechanism.
- Provide ways to interact with the server, such as submitting, querying, and inspecting jobs.
- Familiarize myself with the Go language.
The Broad Institute has its own CLI, be sure to check it out.
But don't forget to give us a star if ours has been helpful 😉
Quickstart
You can download the binary from the releases page for your platform or install it by running the following command:
curl https://raw.githubusercontent.com/lmtani/cromwell-cli/main/install.sh | bash
It's allowed to install the binary in any location, but you will need to set variable PREFIX when running the install script.
curl https://raw.githubusercontent.com/lmtani/cromwell-cli/main/install.sh | PREFIX=/home/taniguti/bin bash
This way you don't need to provide privileged access.
Features
- Start Cromwell Server locally
- List workflows by name
- Submit a workflow
- Abort a workflow
- Navigate through workflow metadata
- Get metadata
- Get outputs
- Get inputs
- Make requests to a remote Cromwell Server protected by IAP (Google Identity Aware Proxy)
- For Google Cloud backend jobs: estimate resource usage
- Have a cool name
Examples
Local server deploy
You need to open a new terminal after starting the server. Press CTRL+c when you want to shut it down.

Submit workflow

Query workflows


Cromwell behind Google Identity Aware Proxy
This is a very specific use case, but it's here. If you are using a Cromwell server behind Google Identity Aware Proxy (IAP), you can use the --iap flag to make requests to it. You will need to provide the expected audience of the token, which is the client_id of your oauth. For example:
You will also need to set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your Google service account JSON file.
GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/google/service-account.json
HOST="https://your-cromwell.dev"
AUDIENCE="Expected audience"
cromwell-cli --host "${HOST}" --iap "${AUDIENCE}" query