GitOps source of truth for the Purdue Analysis Facility — a Kubernetes-based interactive analysis platform for high energy physics research at CMS experiment.
Everything the cluster runs is declared here and reconciled by Flux.
User documentation: analysis-facility.physics.purdue.edu Admin documentation: https://purdue-cms-tier2.gitlab.io/documentation
| Orchestration | Kubernetes on the Geddes cluster; Flux CD (roots) |
| Sessions | JupyterHub — JupyterLab and code-server interfaces, CILogon auth |
| Scale-out | Dask Gateway — Kubernetes and Slurm backends |
| User environment | the purdue-af image, pixi environments |
| Data | CVMFS, XRootD, XCache, EOS, Depot NFS; ServiceX for columnar delivery |
| Inference | SuperSONIC |
| Observability | Prometheus, Grafana, Loki, Pyroscope, Alloy + purpose-built exporters |
| Agents | MCP server exposing AF-specific tools to any MCP client |
Whether each component on the cluster is running what is on main
(which ref each root deploys;
).
Experimental
Images — which tag each one ships on: RELEASING.md.
Reading the badges:
deployed— no drift, the cluster has itawaiting release— validated, and only a release stands between it and the clustervalidating— CI has not finished on those commits yetfailed CI— do not release; the drift is broken- the trailing number is how many commits it has moved since it was deployed
- a leading
X.Y.Zis the deployed version, for images on a version stream
Recomputed hourly and after every CI run on main by
component-status.yml; the badge
data lives on the status
branch, so keeping it current never touches main.
How a change reaches the cluster, version rules and rollback: RELEASING.md.