Skip to content
/ pumbaa Public

Command-line interface for Cromwell server

License

Notifications You must be signed in to change notification settings

lmtani/pumbaa

Repository files navigation

Pumbaa

Go Report Card codecov DeepSource

This project is a command-line interface (CLI) for the Cromwell Server, designed with the following objectives:

  • Simplify the process of installing and configuring a local backend for the Cromwell Server using Docker.
  • Enable reuse of already processed jobs via the Call Cache mechanism, set by default.
  • Provide an interface for interacting with the server, such as submitting, querying, and inspecting jobs.
  • Serve as a personal learning experience with the Go language.

The Broad Institute has its own CLI for Cromwell, which is worth checking out.

However, if you found our project helpful, don't forget to give us a star 😉.

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/pumbaa/main/assets/install.sh | bash

You can install the binary in any location by setting the PREFIX variable to your desired installation directory when running the script:

curl https://raw.githubusercontent.com/lmtani/pumbaa/main/assets/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

Obs: the examples below are from a previous release, but the commands are the same. I will update them soon.

Local server deploy

You need to open a new terminal after starting the server. Press CTRL+c when you want to shut it down. asciicast

Submit workflow

asciicast

Query workflows

asciicast

Navigate through workflow metadata

asciicast

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"
pumbaa --host "${HOST}" --iap "${AUDIENCE}" query