Cylc 8.0b3 is the final beta pre-release of Cylc 8. It is largely complete and can be used to manage real workflows, but it has not yet been heavily tested by users. Python 2 based Cylc 7 is stable and still available if needed for production systems.

Please report migration issues to the Cylc Discourse Forum (7-to-8 topic).

Quick Installation

Cylc runs on Unix-like systems including Linux and Mac OS.

Via Pip (+npm)


Requires Python 3.7+


We recommend using a virtual environment.

$ 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 metomi-rose

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.


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


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 (for task job scripts) which has a subtly different syntax.


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.

Advanced Installation

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


For examples of Conda environments and installation options see Conda Environments for examples and details.

The Cylc Components

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

Cylc Flow

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

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

Cylc install locations may fall into the following “roles”:

User Machines

Where users write workflows and interact with the command line.

Cylc Servers

Where Cylc schedulers run to manage workflows.

Job Hosts

Where task jobs run, e.g. supercomputers or clusters


These roles may overlap. For example, Cylc servers can also be job hosts.

Managing Environments

For Cylc to run, the correct environment must be activated. Cylc can not do this automatically. You may need to have multiple Cylc versions available too.

We recommend using a wrapper script named cylc to activate the correct environment before calling the environment’s cylc command.


Cylc comes with a wrapper that you can use with minimal adaptation. This should be installed somewhere in the system search $PATH such as /usr/local/bin.


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.


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

Bash Profile

Cylc task job scripts are bash scripts, which is good for manipulating files and processes, They invoke bash -l to allow environment configuration in login scripts.


Sites and users should ensure their bash login scripts configure the environment correctly for Cylc and do not write anything to stdout.