A Paseo 0.8+ plugin that shows GPU utilization, temperature, VRAM, and power from Prometheus. The composer stays clear during normal operation and only shows a GPU pill when temperature needs attention.
Requires Paseo: >=0.8.0 — from this plugin's own paseo-plugin.json.

Manifest JSON
{
"id": "paseo-prometheus-status",
"requirements": {
"paseo": ">=0.8.0"
}
}paseo plugin add infectiousstupidity/paseo-prometheus-statusFrom the plugin's README
Paseo can install this plugin directly from GitHub. You do not need to clone the repository or run npm install first.
Recommended GitHub shorthand:
paseo plugin add infectiousstupidity/paseo-prometheus-status
Or use the full Git URL:
paseo plugin add https://github.com/infectiousstupidity/paseo-prometheus-status.git
Verify that it is running:
paseo plugin ls paseo-prometheus-status
Paseo tracks the repository's default branch, so later updates are also handled directly by Paseo:
paseo plugin update paseo-prometheus-status
Configure the plugin in Settings → Plugins → GPU status, then open the GPU status panel from Paseo's workspace/Explorer panel launcher or search for Open GPU status in the Command Center.
README
A Paseo 0.8+ plugin that shows GPU utilization, temperature, VRAM, and power from Prometheus. The composer stays clear during normal operation and only shows a GPU pill when temperature needs attention.
Paseo can install this plugin directly from GitHub. You do not need to clone the repository or run npm install first.
Recommended GitHub shorthand:
paseo plugin add infectiousstupidity/paseo-prometheus-status
Or use the full Git URL:
paseo plugin add https://github.com/infectiousstupidity/paseo-prometheus-status.git
Verify that it is running:
paseo plugin ls paseo-prometheus-status
Paseo tracks the repository's default branch, so later updates are also handled directly by Paseo:
paseo plugin update paseo-prometheus-status
Configure the plugin in Settings → Plugins → GPU status, then open the GPU status panel from Paseo's workspace/Explorer panel launcher or search for Open GPU status in the Command Center.
The composer pill is alert-only:
75°C: hidden.75–84°C: shown in the warning color while GPU utilization is above 0%.85°C or hotter: always shown in the danger color, even if utilization has fallen to 0%.The critical-temperature override is intentional. A dangerously hot idle GPU should not disappear just because utilization reads zero.
Press the pill to open the full GPU status panel. The panel shows utilization, temperature, VRAM, and power for each GPU.
Prometheus is the only data source. By default, the plugin reads these NVIDIA DCGM Exporter metrics:
DCGM_FI_DEV_GPU_UTILDCGM_FI_DEV_GPU_TEMPDCGM_FI_DEV_FB_USED, DCGM_FI_DEV_FB_FREE, and DCGM_FI_DEV_FB_RESERVEDDCGM_FI_DEV_POWER_USAGEThe plugin connects only to the configured Prometheus endpoint. It does not connect directly to GPU hosts.
The composer alert currently uses the plugin's built-in 75°C warning and 85°C critical thresholds. These are the same thresholds used by the status panel.
Prometheus alerting rules can also be used as a single source of truth, but the threshold itself is not part of the normal GPU metric. Prometheus exposes active alert rules through the synthetic ALERTS metric. Supporting that cleanly would require the plugin to know which alert rule or labels represent GPU temperature warnings and critical alerts.
Open Settings → Plugins → GPU status. The native Paseo settings screen lets you configure:
Saving updates the plugin immediately. You do not need to reload Paseo.
The settings are stored in paseo-prometheus-status.json:
%USERPROFILE%\.paseo\paseo-prometheus-status.json~/.paseo/paseo-prometheus-status.json$PASEO_HOME/paseo-prometheus-status.jsonThe file can still be edited by hand if needed:
{
"prometheusUrl": "http://prometheus.example:9090",
"selector": "job=\"dcgm-exporter\",instance=\"gpu-host.example:9400\"",
"hostLabel": "Inference server",
"showHostLabelInPill": false
}
selector is inserted inside the label braces of the built-in Prometheus queries. Do not include the braces yourself.
With showHostLabelInPill set to false, an active alert pill shows a compact summary such as GPU 42% · 78°C. Set it to true to include the host label.
The Advanced queries section can replace any built-in query. Leave a field blank to keep the default.
The matching JSON properties are:
{
"gpuQuery": "DCGM_FI_DEV_GPU_UTIL{job=\"dcgm-exporter\"}",
"gpuTimestampQuery": "timestamp(DCGM_FI_DEV_GPU_UTIL{job=\"dcgm-exporter\"})",
"temperatureQuery": "DCGM_FI_DEV_GPU_TEMP{job=\"dcgm-exporter\"}",
"memoryUsedQuery": "DCGM_FI_DEV_FB_USED{job=\"dcgm-exporter\"}",
"memoryTotalQuery": "DCGM_FI_DEV_FB_USED{job=\"dcgm-exporter\"} + DCGM_FI_DEV_FB_FREE{job=\"dcgm-exporter\"} + DCGM_FI_DEV_FB_RESERVED{job=\"dcgm-exporter\"}",
"powerQuery": "DCGM_FI_DEV_POWER_USAGE{job=\"dcgm-exporter\"}"
}
By default, freshness uses the source timestamp of the GPU utilization metric. If a custom utilization query changes that behavior, set gpuTimestampQuery to a query that returns each GPU's source timestamp in Unix seconds with the same GPU identity labels.
Environment variables are available for containers and automated deployments. They override matching saved settings:
PASEO_PROMETHEUS_URLPASEO_PROMETHEUS_SELECTORPASEO_PROMETHEUS_HOST_LABELPASEO_PROMETHEUS_SHOW_HOST_LABEL_IN_PILLPASEO_PROMETHEUS_GPU_QUERYPASEO_PROMETHEUS_GPU_TIMESTAMP_QUERYPASEO_PROMETHEUS_GPU_TEMPERATURE_QUERYPASEO_PROMETHEUS_GPU_MEMORY_USED_QUERYPASEO_PROMETHEUS_GPU_MEMORY_TOTAL_QUERYPASEO_PROMETHEUS_GPU_POWER_QUERYThe settings screen shows which environment variables are overriding saved values. Restart the Paseo daemon after changing environment variables.
The plugin refreshes every 10 seconds. A sample older than 30 seconds is shown as stale. A missing or unreachable Prometheus URL is shown as offline in the full status panel.
The server part of this plugin runs with the same permissions as the Paseo daemon. It writes one configuration file and makes HTTP or HTTPS requests to the configured Prometheus URL. It does not run shell commands or connect directly to GPU hosts.
Use HTTPS when Prometheus traffic crosses a network you do not trust. The plugin does not support custom authentication headers. Credentials placed directly in prometheusUrl are stored as plain text in the configuration file.
On macOS and Linux, settings saved through the plugin are written with mode 0600. Windows uses the normal permissions of the current account.
This branch targets Paseo 0.8 and later. It does not include a v0.7 compatibility entry.
npm ci
npm run typecheck
npm run lint
npm run format:check
npm test
paseo plugin install /absolute/path/to/paseo-prometheus-status
After source changes:
npm run typecheck
npm test
paseo plugin reload paseo-prometheus-status
paseo plugin ls paseo-prometheus-status
MIT. See LICENSE.
Scanned 10 Sep 2026, 16:24 UTC at commit 6722d00766a7be7e6cfeaac7b867a05e4c72e596.
Scanned 10 Sep 2026, 16:25 UTC from infectiousstupidity/paseo-prometheus-status.