Installation

Warning

Cylc 8.0b2 is an early full-system Cylc 8 preview release

It has a fully functional Python 3 workflow service and CLI that can run existing Cylc workflows.

But it is not production-ready yet.

Use the latest Cylc 7.9 (Python 2.7) or 7.8 (Python 2.6) release for production systems.

Quick Installation

Cylc runs on Unix systems including Linux and Mac OS.

Via Conda (recommended):

Via Pip (+npm):

$ conda install cylc-flow

# install the browser-GUI (optional)
$ conda install cylc-uiserver

# install Rose support (optional)
$ conda install cylc-rose
$ pip install cylc-flow

# install the browser-GUI (optional)
# (requires nodejs & npm)
$ pip install cylc-uiserver
$ npm install configurable-http-proxy

# install Rose support (optional)
$ pip install cylc-rose

Note

Requires Python 3.7+

Note

We recommend using a virtual environment.

Non-Python Requirements

These dependencies are not installed by Conda or pip:

  • bash

  • GNU coreutils

  • mail (optional: for automated email functionality)

These dependencies are installed by Conda but not by pip (you can use npm):

Installing On Mac OS

Cylc requires some extra packages to function on Mac OS, we recommend installing them using the Homebrew package manager:

brew install bash coreutils gnu-sed

You will need to prepend the coreutils and gnu-sed installations to your $PATH, follow the instructions in the brew install output.

Note

atrun (the at command) does not run out-of-the-box on Mac OS for security reasons and must be manually enabled.

Note

Newer version of Mac OS set zsh as the default shell (as opposed to bash). You do not need to change this but be aware that Cylc uses bash which has a subtly different syntax.

Warning

For Mac OS Versions 10.15.0 (Catalina) and higher SSH is disabled by default. The ability to SSH into your Mac OS box may be required for certain Cylc installations.

See the Apple support page for instructions on enabling SSH.

Site Installation

For multi-user installation we recommend using Conda and installing Cylc components only where required.

The Cylc Packages

Cylc is split into a number of packages providing different functionality:

Cylc Flow

Provides the scheduler “kernel” of Cylc along with the command-line.

Cylc UI Server

Provides the “Cylc Hub” and the browser-based “Cylc GUI”.

Cylc Rose

Provides support for Rose suite configurations in Cylc workflows.

Installation Types

The places where you would want to install Cylc fall into the following “roles”:

User Machines

The boxes where users write workflows and interact with the command line.

Cylc Servers

The boxes where workflows are run.

Job Hosts

The systems where jobs are run (e.g. supercomputers or clusters)

Note

There may be a mix of purposes between the different “roles”, for example it is possible to use job hosts as cylc servers and vice versa.

Managing Environments

In order for Cylc to run the correct environment must be activated. Cylc can not do this automatically.

We recommend using a wrapper script to activate the correct environment and call the cylc command.

An example can be found in usr/bin/cylc, this should be installed to a location in the system searchable $PATH e.g. /usr/local/bin.

Configuration

Cylc uses “sane and safe” defaults and is suitable for use “out of the box”, however, many things may need to be configured e.g:

  • Job hosts

  • Communication methods

  • User/Site preferences

Cylc Flow

Cylc Flow is configured by the global.cylc file which supports configuration of the system on both a site and user basis.

Note

Prior to Cylc 8, global.cylc was named global.rc, but that name is no longer supported.

Bash Profile

Cylc invokes bash -l to run job scripts so sites and users should ensure that their bash login scripts configure the environment correctly for use with Cylc and don’t source unwanted systems or echo to stdout.