Live · Real-time PVE telemetry

The real-time
command center for Proxmox VE.

Real-time Proxmox VE monitoring with a sci-fi cyberpunk UI. Six views over VMs, containers, nodes, storage, and Ceph — with API failover across nodes, on a single Linux box.

Self-hosted Single Linux box API failover Apache 2.0
Three-second install

One line. systemd-managed. Service-user-isolated.

The installer creates a dedicated jt-proxense user, drops a hardened systemd unit, and starts the service.

Linux Debian · Ubuntu · RHEL · Rocky · Arch · openSUSE

Requires sudo and Python 3.10+.

$curl -fsSL https://raw.githubusercontent.com/jasoncheng7115/jt-proxense/main/install.sh | sudo bash
After install: Sign in with the one-time admin password the installer prints, then add your PVE clusters in Settings → Clusters — no config-file editing, saved and hot-reloaded automatically. Default URL: http://<your-server>:8098/.
Update

Re-run the installer — idempotent, config and data are preserved.

$curl -fsSL https://raw.githubusercontent.com/jasoncheng7115/jt-proxense/main/install.sh | sudo bash
Uninstall

Removes the service, program and data completely (irreversible).

$curl -fsSL https://raw.githubusercontent.com/jasoncheng7115/jt-proxense/main/uninstall.sh | sudo bash
Migrate

Export one encrypted bundle (config, database, keys) on the old host → install on the new host, then import.

$sudo jt-proxense export-config bundle.enc # old host
$sudo jt-proxense import-config bundle.enc --force # new host (install first)
See it move

Live cluster telemetry, on-screen.

Music: “Heroic Age” Kevin MacLeod (incompetech.com), licensed under Creative Commons: By Attribution 4.0.

Open full screen in a new tab ↗

One cluster, seen and operated

Look at it the way you need to — then act on it.

Switch between views with a keystroke — each a different lens on the same live state. When you need to act, the controls are in the same place, behind the same auth and audit trail.

Dashboard

Global overview. Resource gauges, infrastructure totals, and per-cluster health at a glance.

Nodes

ECG-style metric monitors per node. CPU / memory / I/O traced as live waveforms.

Matrix

Every VM as a coloured tile. Filter by state, sort by load, group by node — at any density.

Radar

Anomaly-detection radar. Spikes, threshold breaches, and offline nodes pop into view.

Storage

Treemap of every storage pool, sized by capacity, coloured by usage. Pressure becomes visible.

Ceph

Ceph cluster topology with live IOPS. OSDs, pools, and recovery state on one canvas.

Matrix thumbnail preview

Live framebuffer screenshot for every running guest, group-able by node / type / tag. QEMU via a minimal RFB 3.8 client; LXC via termproxy + a vt100 emulator so CT cards show real shell output, not black boxes. Click any card for a full-size view with a CRT-static loading effect.

Cross-cluster migration

Wizard that introspects the source VM, picks an endpoint on the target cluster, fetches the TLS fingerprint, and lays out disk + NIC mappings. Validation, dry-run pre-checks, online / offline modes, and bandwidth limits. Admin-only; QEMU-only (PVE's API limit). Lock-recovery toast with copy-paste qm unlock hint when migration fails.

Storage content browse

Click any file-level storage → tabs by content type (Backups / ISO / CT templates / Snippets / Import / Disk images / CT root) — only the tabs the storage actually carries. Sortable list, search, delete with audit. Block-level storages (RBD / LVM / ZFSpool) get a list-only view.

Telegraf line-protocol receiver

InfluxDB v2 endpoint at /api/v2/write (token-auth, gzip-tolerant). Per-host ring buffer of the most recent samples, exposed via /api/telegraf/{hosts,host}. Bring your own Telegraf outputs.influxdb_v2 on each PVE host, get supplemental metrics surfaced alongside the API-polled ones.

v0.2 — auth + control plane

Now with accountability.

Opt-in authentication, audit log, role-based access, VM & LXC lifecycle, all under the same cyberpunk skin. Default behavior unchanged from v0.1 — flip a flag to enable each layer.

Authentication

Argon2id passwords + 12 h sessions, optional PAM backend (system accounts), TOTP 2FA with 8 backup codes. Per-IP brute-force rate limit.

Audit log

Append-only SQLite audit trail. Every login, role change, config edit, VM action recorded. CSV export, date filter, expandable detail rows.

RBAC by VM pattern

Three roles (viewer / operator / admin), scoped per-cluster AND per-VM. Match by name (web-*) or tag (tag:prod). Highest-rank match wins.

VM + LXC control

start / stop / shutdown / reboot / suspend / migrate. Bulk operations across mixed VM and CT vmids in one request. Disabled by default — explicit opt-in.

Emergency CLI

If you ever lock yourself out: jt-proxense auth disable works without the service running. Reset passwords, clear lost authenticators, fix bad config — all offline. Hit "too many attempts"? jt-proxense unlock clears the per-IP login rate limit (it never touches passwords).

311 tests, ~3.5 min

pytest covers migrations, auth, audit triggers, role gating, VM + CT dispatch, RBAC, host-upgrade state machine, mocked PVE. Runs in CI on every push.

v0.4 – v0.8 — Fleet operations

From one cluster to a whole estate.

Proactive health, scheduled backups, rolling upgrades, exports and accounts — the day-to-day of running a fleet, not just watching one.

Health monitor + Corosync

One page aggregates every proactive check across all clusters: node down, high CPU / mem, storage nearly full, Ceph warnings, cert expiry, pending updates, HA + replication state — plus log-derived hardware findings (ECC / MCE / OOM / disk I/O / fs corruption scanned from each node's syslog). A dedicated Corosync panel shows quorum, votes, per-node link status and ring latency.

Backup schedules, PBS-aware

Read and manage cluster-level vzdump cron jobs, plus fire an ad-hoc backup from a modal. When the target is a Proxmox Backup Server the compression box disappears (PBS dedups) and PBS extras surface: notes-template, protected, mail-on-failure. Per-VM backup history with restore + verify.

User management + 2FA

Full RBAC from the WebUI: create local users, grant roles per cluster and per VM-pattern, enrol / reset TOTP, re-issue backup codes, disable / delete. Local, PAM and LDAP backends; every mutating action lands in the append-only audit log.

ZFS pool lifecycle

The stock WebUI can create a pool and then leaves you at the CLI forever. This is the other half: replace a disk (including the ESP work a boot disk needs), add vdevs and log / cache / special devices, RAIDZ online expansion, a multi-vdev pool builder, scrub and TRIM, plus a blast-radius view — which PVE storages and guests die with this pool. The topology is drawn, not listed: pool → vdev → individual disks, with HDD/SSD/NVMe marks and redundancy pips showing how many more failures the group can take. Reads go through the PVE API — no SSH, no changes to the node; only maintenance needs SSH, and every action is previewed with ZFS's own dry run and confirmed by typing the pool name.

Rolling host upgrade

Batch orchestrator: per-host evacuate → apt dist-upgrade (fully unattended) → admin-confirmed reboot → optional migrate-back. Three evac modes (auto / manual / in-place), Ceph-aware (sets noout, waits for all PGs active+clean between hosts), with a live status board that flags any failed node.

Export to OVA / Hyper-V

Convert a QEMU VM to a VMware/VirtualBox OVA or a Hyper-V VHDX, run on the node over SSH with an internal job queue (conversions outlive the browser tab). Tool auto-install + latest-version check, free-space preflight, streamed download, outputs auto-purged after 24 h.

Node ops + fleet SSH

Per-node network-interface viewer (NIC / bridge / bond link + speed), NTP/chrony config, disks + SMART, services, syslog. One-click SSH-key propagation: authorise one node by hand, fan the host key to the rest over inter-node SSH. Add / remove whole cluster connections from Settings — no config.yaml editing, hot-reloaded.

Screen wall

Twenty-one shots from a real workspace.

Click any tile to enlarge. IPs, emails and tokens are blurred.

Global dashboard
DashboardCluster galaxy, every cluster live
Node ECG monitors
NodesPer-node live ECG metric traces
VM matrix grid
Matrix · gridEvery guest a tile, VM / CT tagged
Matrix table view
Matrix · tableSortable, filterable, column picker
Matrix thumbnail view
Matrix · thumbnailsLive console previews per guest
Matrix heatmap view
Matrix · heatmapLoad hot-spots at a glance
Right-click context menu
Right-click menuAct on any guest in place
noVNC console
ConsolenoVNC framebuffer in-browser
Anomaly radar
RadarAnomalies sweep into view
Storage list
StoragePools with usage bars
Storage treemap
Storage · treemapCapacity proportional, usage coloured
Ceph cluster
CephTopology, IOPS + OSD latency
Health monitor with corosync
HealthProactive checks + Corosync ring
Cluster operation log
TasksCluster operation log + live detail
Backup schedules
BackupsScheduled vzdump jobs
User management
UsersRBAC, 2FA, role grants
ZFS pool management
ZFS poolsTopology drawn: pool → vdev → disks, with redundancy pips
ZFS disk inventory
ZFS disk inventoryHDD / SSD / NVMe, by-id and what claims each disk
Root pool boot mirror pre-flight
Boot mirrorReplacing a root-pool disk: every pre-flight shown, the exact commands, and a typed confirmation
Resilver progress
Resilver progressHours-long rebuild tracked server-side — close the tab and come back to it
Host upgrade orchestrator
Host upgradeRolling batch orchestrator
Settings panel
SettingsA real settings UI — cluster connections, alerting and appearance, without hand-editing YAML
Traditional Chinese locale
i18nSame UI, 繁體中文