Minimal MacBook vitals monitor: one API + one terminal-style HTML page.
Live stats for battery, RAM, network throughput, top processes, and Claude Code usage limits — dark monospace UI that polls while the tab is open.
- Battery — percent, charging/low state, time remaining, cycle count
- Clock — local time
HH:mm:ssand dateD-Month, YYYY(stacked above network) - Network — download / upload rates on the active interface
- Memory — total / used / free, pressure state, swap when active
- Processes — top 7 apps by RAM (grouped, expandable; CPU %, uptime)
- Containers — own card when any container is running (name · uptime); hidden otherwise so processes go full width; 60s poll + sync
- Claude Code — 5-hour + weekly usage % and reset times (60s poll + sync; full
/usagedump in a modal) - Smart polling — vitals every 1.5s while the tab is active, 10s when hidden; Claude + containers every 60s
macOS + Node.js + Yarn. Then:
yarn startThat installs dependencies, typechecks, builds, and serves the app at http://localhost:4141 (port hardcoded).
| Piece | Choice |
|---|---|
| Runtime | Node.js (ESM) |
| Language | TypeScript → build/ |
| HTTP | Hono + @hono/node-server |
| Metrics | systeminformation |
| Package manager | Yarn |
