Live btop-style CPU/memory/temperature/GPU monitor tab for the DeepSeek Harness web GUI.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-vitals
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:JoblessJoe/dsh-vitals
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A DeepSeek Harness (dsh) web GUI plugin that shows live hardware load right where you work: a self-contained, dependency-free companion to btop. Watch your GPU while your local model thinks, without leaving the chat.
dsh plugin --profile web add dsh-vitals
Restart dsh: CPU and GPU load appear in the session header, and the full Hardware tab sits next to Chat / Trajectory. Full details under Install.
What it shows
- CPU — overall utilisation, a live 60s sparkline, highest temperature reading, and per-core load (every physical core, any count) — with per-thermal-zone detail when there's more than one sensor
- Memory — used / available / total with utilisation %
- GPUs — one card each: name, temperature, utilisation, power draw, and VRAM (used / total)
Data is sampled host-side on every poll (~0.5 s) and rendered live.
How it works
- Host — a
GET-only route registered on the dsh web server (/plugins/dsh-vitals/data) that reads the OS's own sources with no privileged access and returns JSON. - Client — a single self-contained bundle that polls the route and draws the panels with inline styles (no CSS pipeline, no assets).
Where it shows up
Two access points, both live the moment the plugin is bundled — no setup:
- A mini widget in the session header, next to the "⋯" menu: CPU and per-GPU load as tiny bars, always visible while you chat. Hover for temps and VRAM; click to jump to the full tab.
- A full
Hardwaretab next to Chat / Trajectory at the top of the conversation view: per-core CPU, memory, temperatures and every GPU.
Platform support
Linux, macOS and Windows. Each signal uses the best unprivileged source the OS offers and hides itself when there is none:
| Signal | Linux | macOS | Windows |
|---|---|---|---|
| CPU load (overall + per core) | /proc/stat |
os.cpus() |
os.cpus() |
| Memory | /proc/meminfo |
vm_stat (counts cache as available, like Activity Monitor) |
os.freemem() |
| CPU temperature | /sys/class/thermal |
hidden (needs root) | WMI thermal zones, when the board exposes them (often needs dsh running as admin) |
| NVIDIA GPUs | nvidia-smi |
nvidia-smi |
nvidia-smi.exe (PATH or NVSMI folder) |
| Apple / other GPUs | — | ioreg utilisation + memory in use |
— |
Everything degrades gracefully: a missing source hides that panel or shows a placeholder instead of breaking the tab. Any number of GPUs and any CPU core count is supported.
Install
From your dsh web profile (web below is the profile name; use whichever
profile backs your web GUI):
dsh plugin --profile web add dsh-vitals
This installs the package into the profile and adds it to
dsh.profile.bundles for you — no manual package.json editing. (No local
dsh binary? Run the equivalent by hand from the profile directory, e.g.
~/.dsh/profiles/web/: pnpm add dsh-vitals, then add "dsh-vitals" to
that package.json's dsh.profile.bundles array yourself.)
The published package ships its built lib/ output, so no build step runs
on install — nothing else to do before restarting.
Restart your dsh web service and open the web GUI — see Where it shows up above for how to find it.
New bundles are registered from the profile's
bundlesarray, so a one-time service restart is required the first time you add it.
Building from source
Requires Node 20+. Dependencies are dev-only (esbuild); the published package has zero runtime npm dependencies.
git clone https://github.com/JoblessJoe/dsh-vitals.git
cd dsh-vitals
pnpm install
node scripts/build.mjs # emits lib/index.js + lib/client.js
package.json declares a build script, so pnpm build works too.
Configuration
None. The plugin reads whatever the host exposes; there is no config surface.
Security
The data route sits outside the dsh web server's /api trust fence, so it
enforces that fence itself: Sec-Fetch-Site: cross-site requests are rejected
(403) and only GET/HEAD are served (405 otherwise). All sources are read-only.
License
MIT
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8405
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8405
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
ccch1mneyyy/dsh-TUI★ 4088
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4076
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
omdsh-dev/DSH-better-sidebar★ 4009
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1423
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.