Skip to content

Installation

nwp-compose installs entirely in user space. There is no system package, no service, and no elevated step. If you can git clone and write to a directory, you can install it.

  • Python 3.12+ — required by the pinned cylc-flow (8.6.4). 3.12 is the floor; newer minors work.
  • git and a POSIX shell (bash/zsh). macOS and Linux are first-class; Windows users should use WSL.

No compiler, no root, no Docker daemon.

  1. Clone and run the idempotent setup script:

    Terminal window
    git clone https://github.com/NCAR/nwp-compose.git
    cd nwp-compose
    ./setup.sh

    setup.sh creates a .venv/, installs the pinned cylc-flow==8.6.4, and runs pip install -e . so the nwp-compose console script is available on PATH inside the venv.

  2. Activate the environment:

    Terminal window
    source .venv/bin/activate
  3. Confirm:

    Terminal window
    cylc --version # → 8.6.4
    nwp-compose --help # → the CLI surface
    nwp-compose doctor # → preflight: is this node ready to run?

On HPC login nodes, $HOME is often small or on slow NFS, and a Cylc virtual environment is 200–400 MB. nwp-compose honors environment overrides so state never has to live where it would bust a quota. Set these before setup.sh / your first run:

OverrideRedirectsDefault
NWPC_VENV_DIRthe .venv/ location<repo>/.venv
XDG_CACHE_HOMEthe gist/HTTP cache~/.cache/nwp-compose
XDG_DATA_HOMEthe plugin component dir~/.local/share/nwp-compose
CYLC_RUN_DIRwhere Cylc writes run dirs~/cylc-run
Terminal window
# Example: keep everything on scratch, off a quota-limited home
export NWPC_VENV_DIR=/scratch/$USER/nwpc/venv
export XDG_CACHE_HOME=/scratch/$USER/.cache
export CYLC_RUN_DIR=/scratch/$USER/cylc-run
./setup.sh

cylc-flow==8.6.4 is pinned for reproducibility. Newer 8.x versions are likely fine, but Cylc has had behavioral shifts between minors, so bumping the pin is a reviewed change, not an automatic upgrade. (Jinja2 is correspondingly pinned <3.2 to match Cylc’s own constraint.)