Troubleshooting
Pod stuck in ImagePullBackOff
Pod stuck in ImagePullBackOff
The image can’t be pulled — the GHCR pull secret is missing from the namespace, or its token
can’t read the package. Confirm the
imagePullSecrets name in your values matches a secret that
exists in the namespace, and that its token has read:packages (the operator’s pull secret
works). Recreate it with:Can't open the dashboard / connection refused
Can't open the dashboard / connection refused
The install doesn’t expose the UI outside the cluster — the pod is fine, it’s just not reachable
yet. Start a port-forward and keep the terminal open:then open http://localhost:8080. For shared team access, enable the
ingress behind SSO instead — see Access & Security.
"No LMCacheEngines found"
"No LMCacheEngines found"
engineNamespace doesn’t match the namespace where your engines actually run.Numbers sit at 0 (charts or GPU utilization)
Numbers sit at 0 (charts or GPU utilization)
The engines or GPUs are idle — utilization and hit rate only move under inference traffic.
(GPU memory stays allocated, so it can be non-zero while utilization reads 0.) If there
is traffic and charts are still flat, check that
prometheus.url is right.Trend charts empty, but Health and Quotas work
Trend charts empty, but Health and Quotas work
The engine metrics aren’t reaching the Prometheus the UI reads. Confirm the operator’s
observability is on (
observability.enabled=true on the operator chart) and that prometheus.url points at the
Prometheus those metrics land in. See
Configuration.Per-node charts collapse into one "Engine-wide" line
Per-node charts collapse into one "Engine-wide" line
Fleet-wide totals are still correct; the UI just can’t tell which node each metric came
from — usually because your metrics collector runs as one shared service instead of
per-node. Ask the Tensormesh team for the collector setting that restores per-node
attribution.
No per-GPU cards on the Fleet Map
No per-GPU cards on the Fleet Map
GPU telemetry isn’t connected — set
dcgmService (see
Configuration). Without it, node cards show one row per node;
everything else is unaffected.A second cluster shows nothing (multiple clusters)
A second cluster shows nothing (multiple clusters)
Cluster access is automatic only for the cluster the UI runs in. Each extra
clusters entry
needs its own apiUrl and an access token — supplied through a Kubernetes Secret wired in with
the chart’s extraEnvFrom, not in your values file. See
Configuration.FAQ
Can I change quotas, restart pods, or clear the cache from the UI?
Can I change quotas, restart pods, or clear the cache from the UI?
No — the UI observes only, by design. It names the failing component and the fix
(Health → Issues & Fixes); you act via
tmo-cli, kubectl, or
Helm.What load does it put on my cluster?
What load does it put on my cluster?
A handful of lightweight read requests per open page every 30 seconds, paused when the tab
is in the background. Nothing runs on your GPU nodes.
What happens when a data source is down?
What happens when a data source is down?
It depends on what’s unreachable. If the control plane can’t be reached, the monitoring
pages (Overview, Fleet Map, Metrics, Health) show an explicit error — “The control plane
didn’t respond” — with a Retry button, never zeros or mock data. If the cluster is
simply empty or idle, you get real zeros and a “No LMCacheEngines found” banner. If only
metric history is missing (Prometheus not connected), the trend charts are empty while
everything else works.

