zMon
zMon monitors zCFD runs in a browser: a React frontend (Vite + TypeScript) and a
FastAPI backend, shipped together as the zmon Python wheel. zui mounts the same
backend (from zmon.main import mount) in its zCFD Dashboard tab.
Project Structure
frontend/- React frontend application (Vite + TypeScript)zmon/- Python package: the API, and thezmoncommand that serves it with the built frontendzmon-setup- Prepares and runs the Python backendzmon-wheel- Builds the distributable wheel, frontend includedzmon-dev- Runs the backend and the Vite dev server for local development
Running zMon needs Python, and zutil (i.e. a zCFD environment) to open control files; report CSVs open without it. Bun is only needed to build or develop the frontend.
Running zMon
zMon is a pip-installable Python package, so it can ship inside zCFD, mount into zui's zCFD Dashboard tab, and be installed standalone to monitor jobs on a remote cluster. See docs/packaging-plan.md for the design.
One command does everything — create the virtualenv, install the package, build the frontend, and launch:
./zmon-setup /path/to/case.py
It works from any directory (/path/to/zMon/zmon-setup mycase.py is fine, and
relative case paths resolve against wherever you ran it), and re-running is
instant because each step is skipped when it's already done. --setup-only
prepares everything without launching.
Bun is not needed to run zMon, and zmon-setup will build the frontend with the
existing frontend/node_modules if bun isn't installed. Bun is still the
frontend build tool when it is available.
Launching serves the API and the built SPA on an unused port chosen by the OS and
opens a browser. Add --no-browser to just print the URL. Useful flags:
--port N— pin the port (for an SSH tunnel). AlsoZMON_PORT.--host— defaults to127.0.0.1; anything else exposes the file browser to other users on the machine.--exit-when-idle— shut down when no browser is connected (the old standalone behaviour). Off by default: it is unsafe behind an SSH tunnel.
Run the tests with:
./.venv/bin/python -m unittest discover -s tests
The API is served under /api/monitor. A host app embeds zMon with
zmon.main.mount(app), which adds the API and the SPA at /monitor/; the page
then takes #token=…, ?file=… and ?theme=… from its URL. zui's Monitor tab
works this way — see "zui integration" in
docs/packaging-plan.md for the contract.
Development Instructions
From the root of the project, install the frontend dependencies once:
bun install
Then start the backend and the Vite dev server together:
./zmon-dev /path/to/case.py
This runs the Python backend from this checkout (python3 -m zmon.cli --port 3001 --no-browser, arguments passed through; set PYTHON to use another interpreter)
and the Vite dev server via bun run --filter frontend dev, which proxies /api
to the backend. Open the URL Vite prints (usually http://localhost:5173), not
the one the backend prints. The backend does not auto-reload; restart
zmon-dev after Python changes.
To run either side individually:
python3 -m zmon.cli --port 3001 --no-browser # backend only
bun run --filter frontend dev # frontend only
Releasing to PyPI
- Stable release: run the Release App workflow from
main. It bumps the version, tagsvX.Y.Z, opens the release PR, creates a GitHub release (notes only, no attachments), and dispatches Publish to PyPI against that tag. The wheel on PyPI is the only distributable. - Feature trial: run the Trial Release workflow with a feature branch — or
main, to trial it ahead of a stable release — selected under "Use workflow from". It tags the branch head as the next alpha (e.g.v1.6.0a1, derived from the latest stable tag) and publishes it as a PyPI pre-release. Testers install it withpip install zmon==1.6.0a1(orpip install --pre zmon); plainpip install zmonstill gets the latest stable release. - Re-publishing a tag by hand:
gh workflow run pypi.yml --ref vX.Y.Z— the ref must be the tag, not a branch.
Metadata
Release files for zmon 1.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zmon-1.6.3-py3-none-any.whl | Python 3 | none | any | Details for zmon-1.6.3-py3-none-any.whl |
Release files / zmon-1.6.3-py3-none-any.whl
| Download URL | zmon-1.6.3-py3-none-any.whl |
|---|---|
| Size | 566.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
47bf3ca85c44008374344db277757057ae28317e3458bf0375f7017ec02f99bc
|
|
BLAKE2b-256 checksum How to use checksums |
ba42a2a370060b248cf7327ab406d8a5d3084dfc24a4e23173898b4afd94cda6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logSecurity for zmon 1.6.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 1 file in this release has been uploaded with provenance metadata.
Attestation for zmon-1.6.3-py3-none-any.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.