Update README.md
This commit is contained in:
parent
0724aa4376
commit
c200075b83
1 changed files with 97 additions and 0 deletions
97
README.md
97
README.md
|
|
@ -1,2 +1,99 @@
|
|||
# server-monitor-dash
|
||||
|
||||
A case-mounted touchscreen monitoring dashboard for self-hosted AI/inference
|
||||
servers, built with [Textual](https://textual.textualize.io/). CPU, GPU, and
|
||||
memory telemetry rendered "supercar dash" style — dense, glanceable, colour
|
||||
thresholded — rather than a plain systems-monitoring readout.
|
||||
|
||||
Runs directly under a TTY autologin session. No X, no display server, and no
|
||||
GPU vendor lock-in for the interface itself (though GPU telemetry currently
|
||||
assumes `nvidia-smi` — see **Status** below).
|
||||
|
||||
---
|
||||
|
||||
## Why
|
||||
|
||||
Most server monitoring tools are built for a terminal you're SSH'd into, not
|
||||
a small screen physically mounted in a case that someone actually looks at.
|
||||
This project is the opposite bet: build something that's genuinely nice to
|
||||
glance at from across a room, on a 5" panel, on hardware that's otherwise
|
||||
running unattended.
|
||||
|
||||
## Features
|
||||
|
||||
- **Live telemetry**: per-core CPU utilization, memory usage, GPU
|
||||
temperature/utilization/power/fan speed
|
||||
- **Threshold-driven colour** (green → amber → red) on key gauges, rather
|
||||
than flat, undifferentiated numbers
|
||||
- **Rolling history sparkline** for GPU temperature trend
|
||||
- **Idle-blank behaviour**: screen goes solid black after 15 minutes with no
|
||||
touch/key input, to protect the physical panel from always-on burn-in over
|
||||
years of continuous operation — any input wakes it immediately
|
||||
- **Tabbed layout**: Dashboard (functional), Request Assistance and Switch to
|
||||
X (stubs — see Roadmap)
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.9+
|
||||
- [Textual](https://textual.textualize.io/) (`pip install textual
|
||||
--break-system-packages`, or via `pipx`)
|
||||
- `nvidia-smi` on `PATH` for GPU telemetry (CPU/memory panels work without
|
||||
it — GPU panel degrades gracefully to zero rather than crashing if
|
||||
`nvidia-smi` is unavailable or fails)
|
||||
|
||||
## Running
|
||||
|
||||
```bash
|
||||
python3 server_dash.py
|
||||
```
|
||||
|
||||
Intended to run under a dedicated, unprivileged monitoring user's autologin
|
||||
TTY session — not as root, and not as the account used for anything else on
|
||||
the box.
|
||||
|
||||
## Status
|
||||
|
||||
This is an early, working prototype — the CPU/memory/GPU telemetry panel is
|
||||
functional and tested; the two additional tabs are placeholders, not yet
|
||||
implemented:
|
||||
|
||||
| Tab | Status |
|
||||
|---|---|
|
||||
| Dashboard | Working — live CPU/mem/GPU telemetry |
|
||||
| Request Assistance | Stub — will send a scripted notification email |
|
||||
| Switch to X | Stub — will invoke a narrowly-scoped, sudoers-gated VT switch to a separate login, for on-demand GPU tuning access via a real X session |
|
||||
|
||||
Not yet fully compliant with CE OS script conventions (no test gates, no
|
||||
cleanup trap) — this is explicitly a prototype for iterating the interface
|
||||
design, not a hardened production deployment. See the script's own header
|
||||
comment for current detail.
|
||||
|
||||
## Design notes
|
||||
|
||||
- **GPU vendor**: currently NVIDIA-only via `nvidia-smi`. AMD/Intel GPU
|
||||
support would need an equivalent backend behind the same `read_gpu_stats()`
|
||||
interface — contributions welcome.
|
||||
- **Colour thresholds** (`TEMP_THRESHOLDS`, `UTIL_THRESHOLDS` in-script) are
|
||||
currently fixed defaults, not yet configurable per-deployment. Worth
|
||||
externalizing to a config file if this is deployed across multiple
|
||||
machines with different thermal profiles.
|
||||
- **No hard dependency on a specific display size** — built for a 5"
|
||||
case-mounted touchscreen, but Textual's layout should adapt reasonably to
|
||||
other terminal sizes; untested on anything else so far.
|
||||
|
||||
## Roadmap
|
||||
|
||||
- [ ] Wire up Request Assistance (scripted outbound email, hostname in body)
|
||||
- [ ] Wire up Switch to X (sudoers-scoped `chvt` wrapper, see script comment)
|
||||
- [ ] Externalize colour thresholds to a config file
|
||||
- [ ] Bring up to full CE OS script compliance (test gates, cleanup trap)
|
||||
- [ ] Consider a non-NVIDIA GPU backend
|
||||
|
||||
## License
|
||||
|
||||
See [LICENSE](./LICENSE).
|
||||
|
||||
---
|
||||
|
||||
*Built standing on the shoulders of billions of dwarves.*
|
||||
*Created by John A. Hoeven with the ethical assistance of Claude AI.*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue