https://github.com/cylc/cylc-uiserver
A Jupyter Server extension that serves the cylc-ui web application for monitoring and controlling Cylc workflows.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.6%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
A Jupyter Server extension that serves the cylc-ui web application for monitoring and controlling Cylc workflows.
Basic Info
- Host: GitHub
- Owner: cylc
- License: gpl-3.0
- Language: Python
- Default Branch: master
- Homepage: https://cylc.org
- Size: 26.1 MB
Statistics
- Stars: 19
- Watchers: 7
- Forks: 20
- Open Issues: 93
- Releases: 27
Topics
Metadata Files
README.md
Cylc UI Server
This project contains the Cylc UI Server which serves the Cylc UI and communicates with running Cylc Schedulers. It also bundles the GUI.
Cylc Website | Contributing | Developing | Forum
Introduction
The functionality in this repository is required to run the Cylc web user interface.
This repository provides the following components of the Cylc system.
- The UI
This is the Cylc web app that provides control and monitoring functionalities for Cylc workflows.
Note The UI is developed in a separate repository https://github.com/cylc/cylc-ui
- The UI Server
This is a web server which serves the Cylc web UI. It connects to running workflows and workflow databases to provide the information the UI displays. It is a Jupyter Server.
- The Hub
In multi-user setups this launches UI Servers, provides a proxy for running server and handles authentication. It is a JupyterHub server.
Installation
For more information on the Cylc components and full-stack Cylc installations see the Cylc documentation.
For Single-User Setups
Install:
| Conda/Mamba (preferred) | Pip |
| --- | --- |
| conda install cylc-uiserver-base | pip install cylc-uiserver |
Then start your server:
bash
cylc gui
For Multi-User Setups
Install:
| Conda/Mamba (preferred) | Pip + Npm |
| --- | --- |
| conda install cylc-uiserver | pip install cylc-uiserver[hub] |
| | npm install configurable-http-proxy |
Then start your hub:
bash
cylc hub
List Of Packages
There are a few different packages to suit different needs.
| Tool | Package | Description | Cylc UI Server | Jupyter Hub | Configurable HTTP Proxy | | --- | --- | --- | --- | --- | --- | | pip | cylc-uiserver | Single user | :heavycheckmark: | :x: | :x: | | conda | cylc-uiserver-base | Single user | :heavycheckmark: | :x: | :x: | | conda | cylc-uiserver-hub-base | Multi user (without proxy) | :heavycheckmark: | :heavycheckmark: | :x: | | pip | cylc-uiserver[hub] | Multi user (without proxy) | :heavycheckmark: | :heavycheckmark: | :x: | | conda | cylc-uiserver | Multi user | :heavycheckmark: | :heavycheckmark: | :heavycheckmark: |
The Configurable HTTP Proxy package (Node JS) provides the reverse proxy
that Jupyter Hub requires to collate user's servers behind a single URL. It can
be installed via conda install configurable-http-proxy but is not available
via pip (because it requires Node JS)
Other proxies including the Traefik Proxy (Python) can also fulfil this purpose, see list of Jupyter Hub proxies.
Installing Jupyter Hub Separately
The easiest way to get going with Cylc and Jupyter Hub is to install and deploy
them together and launch Jupyter Hub via the cylc hub command.
bash
conda install cylc-uiserver
cylc hub
However, you can also deploy Jupyter Hub separately from the servers it
deploys (e.g. Jupyter Lab or Cylc UI Server) and launch it via the jupyterhub
command.
If you are deploying Jupyter Hub separately from Cylc UI Server, these configurations may be relevant:
- The Jupyter Hub
spawner.cmddetermines the command that Jupyter Hub runs in order to start a user's server. You may wish to use a wrapper script to activate the required environment. - The Jupyter Server
ServerApp.jpserver_extensionsconfiguration determines what Jupyter Server Extensions (e.g. Jupyter Lab or Cylc UI Server) are activated when Jupyter Server starts. The default behaviour is to activate any installed extensions, however, if overridden, you may need to explicitly list cylc-uiserver here. - The Cylc
jupyter_config.py
file contains the default Cylc configuration. This applies to hubs started by
cylc hubcommand but not by thejupyterhubcommand. You may want to include some of the configurations from this file in your Jupyter Hub configuration.
Running
The Cylc UIServer is a Jupyter Server extension (like JupyterLab).
For Single-User Setups
Run as a standalone server using a URL token for authentication:
```bash
launch the Cylc GUI and open a browser tab
$ cylc gui
alternatively the same app can be opened with the jupyter command
$ jupyter cylc ```
Note By default, authentication is provided by the URL token. Alternatively, a password can be configured (see Jupyter Server docs).
There is no per-user authorisation, so anyone who has the URL token has full access to the server.
For Multi-User Setups
Run a central JupyterHub server
under a user account with the privileges required to spawn cylc processes as
other users.
```bash
launch the Cylc Hub
(the default URL is http://localhost:8000)
$ cylc hub ```
Users then authenticate with the hub which launches and manages their UI Server.
Configuring
Hub
The Cylc Hub will load the following files in order:
1) System Config
These are the Cylc defaults which are hardcoded within the repository.
(<python-installation>/cylc/uiserver/jupyter_config.py)
2) Site Config
This file configures the Hub/UIS for all users. The default path can be
changed by the CYLC_SITE_CONF_PATH environment variable.
(/etc/cylc/uiserver/jupyter_config.py)
3) User Config
This file
(~/.cylc/uiserver/jupyter_config.py)
Alternatively a single config file can be provided on the command line.
bash
cylc hub --config
Warning If specifying a config file on the command line, the system config containing the hardcoded Cylc default will not be loaded.
Note The hub can also be run using the
jupyterhubcommand, however, you must source the configuration files manually on the command line.
See the JupyterHub documentation for details on configuration options.
UI Server
See the Cylc documentation for all Cylc-specific configuration options.
The Cylc UI Server is a
Jupyter Server extension.
Jupyter Server can run multiple extensions. To control the extensions that
are run use the ServerApp.jpserver_extensions configuration, see the
Jupyter Server configuration documentation.
By default the Cylc part of the UI Server log is written to
~/.cylc/uiserver/uiserver.log.
UI
The UI can be configured via the "Settings" option in the Dashboard.
Currently these configurations are stored in the web browser so won't travel around a network and might not persist.
Developing
Contributions welcome:
- Read the contributing page.
- Development setup instructions are in the developer docs.
- Involved change proposals can be found in the admin pages.
- Touch base in the developers chat.
1) Install from source into your Python environment:
bash
pip install -e .[all]
Note If you want to run with a development copy of Cylc Flow you must install it first else
pipwill download the latest version from PyPi.
2) For UI development follow the developer instructions for the cylc-ui project, then set the following configuration so Cylc uses your UI build (rather than the default bundled UI build):
python
# ~/.cylc/uiserver/jupyter_config.py
import os
c.CylcUIServer.ui_build_dir = os.path.expanduser('~/cylc-ui/dist')
Note about testing: unlike cylc-flow, cylc-uiserver uses the
pytest-tornasync plugin
instead of pytest-asyncio.
This means you should not decorate async test functions with
@pytest.mark.asyncio.
Copyright and Terms of Use
Copyright (C) 2019-2025 NIWA & British Crown (Met Office) & Contributors.
Cylc is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Cylc is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Cylc. If not, see GNU licenses.
Owner
- Name: The Cylc Workflow Engine
- Login: cylc
- Kind: organization
- Email: hilary.oliver@niwa.co.nz
- Location: Wellington, New Zealand
- Website: https://cylc.github.io
- Repositories: 20
- Profile: https://github.com/cylc
A workflow engine for cycling systems.
GitHub Events
Total
- Create event: 34
- Release event: 4
- Issues event: 31
- Watch event: 4
- Delete event: 28
- Issue comment event: 122
- Push event: 51
- Pull request review comment event: 124
- Pull request review event: 195
- Pull request event: 99
- Fork event: 1
Last Year
- Create event: 34
- Release event: 4
- Issues event: 31
- Watch event: 4
- Delete event: 28
- Issue comment event: 122
- Push event: 51
- Pull request review comment event: 124
- Pull request review event: 195
- Pull request event: 99
- Fork event: 1
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Bruno Kinoshita | k****w@a****g | 187 |
| Oliver Sanders | o****s@m****k | 159 |
| Ronnie Dutta | r****a@m****k | 112 |
| github-actions[bot] | g****s@n****m | 81 |
| Mel Hall | m****l@m****k | 50 |
| David Sutherland | d****w@g****m | 31 |
| Hilary Oliver | h****r@g****m | 30 |
| dependabot[bot] | 4****] | 17 |
| Tim Pillinger | t****r@m****k | 14 |
| Min RK | b****k@g****m | 6 |
| Mark Dawson | m****n@m****k | 5 |
| Christopher Bennett | c****t@m****k | 4 |
| Stephen McVeigh | s****1@g****m | 1 |
| David Matthews | d****s@m****k | 1 |
| Mark Dawson | m****n@m****n | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 114
- Total pull requests: 338
- Average time to close issues: 6 months
- Average time to close pull requests: 18 days
- Total issue authors: 15
- Total pull request authors: 15
- Average comments per issue: 1.84
- Average comments per pull request: 1.08
- Merged pull requests: 265
- Bot issues: 3
- Bot pull requests: 131
Past Year
- Issues: 26
- Pull requests: 103
- Average time to close issues: 11 days
- Average time to close pull requests: 8 days
- Issue authors: 8
- Pull request authors: 8
- Average comments per issue: 0.65
- Average comments per pull request: 0.52
- Merged pull requests: 75
- Bot issues: 3
- Bot pull requests: 49
Top Authors
Issue Authors
- oliver-sanders (69)
- MetRonnie (14)
- ColemanTom (7)
- dwsutherland (5)
- jarich (4)
- datamel (3)
- hjoliver (2)
- dependabot[bot] (2)
- kinow (2)
- jfrost-mo (1)
- jimc101 (1)
- ejhyer (1)
- github-actions[bot] (1)
- dpmatthews (1)
- ScottWales (1)
Pull Request Authors
- github-actions[bot] (96)
- MetRonnie (86)
- oliver-sanders (64)
- dependabot[bot] (35)
- wxtim (15)
- dwsutherland (10)
- ChrisPaulBennett (7)
- ScottWales (5)
- kinow (5)
- markgrahamdawson (5)
- datamel (5)
- hjoliver (2)
- jfrost-mo (1)
- JAllen42 (1)
- minrk (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 4
-
Total downloads:
- pypi 265 last-month
-
Total dependent packages: 5
(may contain duplicates) -
Total dependent repositories: 1
(may contain duplicates) - Total versions: 50
- Total maintainers: 5
pypi.org: cylc-uiserver
Cylc UI Server
- Homepage: https://github.com/cylc/cylc-uiserver/
- Documentation: https://cylc-uiserver.readthedocs.io/
- License: GPL
-
Latest release: 1.7.1
published 6 months ago
Rankings
Maintainers (5)
conda-forge.org: cylc-uiserver-base
This project contains the Cylc UI Server. A JupyterHub-compatible application, used to display the Cylc UI (or simply UI) to users, and to communicate with Workflow Services (WFS).
- Homepage: https://github.com/cylc/cylc-uiserver
- License: GPL-3.0-only
-
Latest release: 1.1.0
published over 3 years ago
Rankings
conda-forge.org: cylc-uiserver
This project contains the Cylc UI Server. A JupyterHub-compatible application, used to display the Cylc UI (or simply UI) to users, and to communicate with Workflow Services (WFS).
- Homepage: https://github.com/cylc/cylc-uiserver
- License: GPL-3.0-only
-
Latest release: 1.1.0
published over 3 years ago
Rankings
conda-forge.org: cylc-uiserver-hub-base
This project contains the Cylc UI Server. A JupyterHub-compatible application, used to display the Cylc UI (or simply UI) to users, and to communicate with Workflow Services (WFS).
- Homepage: https://github.com/cylc/cylc-uiserver
- License: GPL-3.0-only
-
Latest release: 1.1.0
published over 3 years ago
Rankings
Dependencies
- actions/checkout v2 composite
- actions/setup-python v2 composite
- cylc/release-actions/build-python-package v1 composite
- cylc/release-actions/check-shortlog v1 composite
- cylc/release-actions/stage-1/checkout-pr-branch v1 composite
- cylc/release-actions/stage-1/create-release-pr v1 composite
- cylc/release-actions/stage-1/sanitize-inputs v1 composite
- cylc/release-actions/stage-1/set-python-package-version v1 composite
- cylc/release-actions/stage-1/update-changelog-release-date v1 composite
- actions/checkout v2 composite
- actions/create-release v1 composite
- actions/setup-python v2 composite
- cylc/release-actions/build-python-package v1 composite
- cylc/release-actions/stage-2/bump-dev-version v1 composite
- cylc/release-actions/stage-2/comment-on-pr v1 composite
- cylc/release-actions/stage-2/get-version-from-pr v1 composite
- pypa/gh-action-pypi-publish v1.4.2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- cylc/release-actions/build-python-package v1 composite
- actions/checkout v2 composite
- cylc/release-actions/check-shortlog v1 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- codecov/codecov-action v3 composite
- actions/checkout v2 composite
- cylc/release-actions/checkout-copyright-branch v1 composite
- cylc/release-actions/configure-git v1 composite
- cylc/release-actions/create-pr v1 composite
- actions/checkout v2 composite
- cylc/release-actions/configure-git v1 composite
- cylc/release-actions/create-pr v1 composite