Kliko is a specification, validator and parser for the Scientific Compute Container specification. Kliko is written in Python.

This documentation is intended for the developer who wants to package up a piece of software into a Kliko container.


Development of Kliko is done on github. You can install Kliko inside a docker container or just on your system:

$ python install

or from pypi:

$ pip install kliko

Why Kliko?

Kliko was born out of our needs to have a more formal and uniform way of scheduling batch compute tasks on arbitrary public and private cloud platforms. Docker is perfect for encapsulating and distributing software, but the input output flow is not defined. Kliko is an attempt to create a standard way to define compute input, output and parameters.

Kliko assumes your problem looks like this:


Kliko containers can be chained up in a sequence, for example using Luigi. An other use case is to simplify the parameterized scheduling of compute tasks using RODRIGUES.

Getting started

Creating a Kliko container

  • Create a Docker container from your application
  • Create a script /kliko in the container that can parse and use a /parameters.json file.
  • Add a kliko.yml file to the root of the container which defines the valid fields in the parameters file.
  • You can validate your kliko file with the kliko-validate script installed by the kliko Python library.

Running a kliko container

You can run a kliko container in various ways. The most simple way is to use the kliko-run script which is installed on your system when you install Kliko. Use kliko-run <image-name> --help to see a list of accepted parameters.

If you already have a parameters file you can also run the container manually:

$ docker run -v $(pwd)/parameters.json:/parameters.join:ro -v $(pwd)/input:/input:ro -v $(pwd)/output:/output:rw <image-name> /kliko

Finally you can also run kliko images and visualise results using RODRIGUES, a web based kliko runner.


Contributions are more than welcome! If you experience any problems let us know in the bug tracker. We accept patches in the form of github pull requests. Please make sure your code works with python 2 and python3, and is pep8 compatible. Also make sure the test suit actually passes all tests. We use docker in some of the tests so you need to have that installed and configured.


Note that before you run the test suite you have to create a klikotest docker image by running make in the examples folder.