calibanconfig

Caliban supports customization through a file called .calibanconfig.json that lives in your project’s directory. Features are limited for now, but stay tuned for more.

Custom Apt Packages

Caliban provides support for custom aptitude packages inside your container. To require custom apt packages, create a file called .calibanconfig.json inside your project’s directory.

The .calibanconfig.json should contain a single JSON dictionary with an "apt_packages" key. The value under this key can be either a list, or a dictionary with "gpu" and "cpu"' keys. For example, any of the following are valid:

# This is a list by itself. Comments are fine, by the way.
{
     "apt_packages": ["libsm6", "libxext6", "libxrender-dev"]
}

This works too:

# You can also include a dictionary with different deps
# for gpu and cpu modes. It's fine to leave either of these blank,
# or not include it.
{
    "apt_packages": {
        "gpu": ["libsm6", "libxext6", "libxrender-dev"],
        "cpu": ["some_other_package"]
    }
}

These values will do what you expect and run apt-get install <package_name> for each package. Packages are alphabetized, so changing the order won’t invalidate Docker’s build cache.

Custom Base Images

For details on Caliban’s base images, see What’s the Base Docker Image?.

You can specify a custom base image for Caliban to use in your .calibanconfig.json file by adding an entry with the base_image key as follows:

{
    "base_image": "gcr.io/blueshift-playground/blueshift:gpu-ubuntu1804-py38-cuda101"
}

You can also specify different base images for cpu and gpu modes as follows:

{
    "base_image": {
        "cpu": "gcr.io/blueshift-playground/blueshift:cpu-ubuntu1804-py38",
        "gpu": "gcr.io/blueshift-playground/blueshift:gpu-ubuntu1804-py38-cuda101"
    }
}