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.
Prerequisites
Section titled “Prerequisites”- 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.
Install
Section titled “Install”-
Clone and run the idempotent setup script:
Terminal window git clone https://github.com/NCAR/nwp-compose.gitcd nwp-compose./setup.shsetup.shcreates a.venv/, installs the pinnedcylc-flow==8.6.4, and runspip install -e .so thenwp-composeconsole script is available on PATH inside the venv. -
Activate the environment:
Terminal window source .venv/bin/activate -
Confirm:
Terminal window cylc --version # → 8.6.4nwp-compose --help # → the CLI surfacenwp-compose doctor # → preflight: is this node ready to run?
Shared-filesystem and quota overrides
Section titled “Shared-filesystem and quota overrides”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:
| Override | Redirects | Default |
|---|---|---|
NWPC_VENV_DIR | the .venv/ location | <repo>/.venv |
XDG_CACHE_HOME | the gist/HTTP cache | ~/.cache/nwp-compose |
XDG_DATA_HOME | the plugin component dir | ~/.local/share/nwp-compose |
CYLC_RUN_DIR | where Cylc writes run dirs | ~/cylc-run |
# Example: keep everything on scratch, off a quota-limited homeexport NWPC_VENV_DIR=/scratch/$USER/nwpc/venvexport XDG_CACHE_HOME=/scratch/$USER/.cacheexport CYLC_RUN_DIR=/scratch/$USER/cylc-run./setup.shWhy Cylc is pinned
Section titled “Why Cylc is pinned”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.)
- Quick start — generate and run a forecast in five commands.
- Tutorial: your first forecast — the guided version.