SIGN IN SIGN UP

v0.8.0: monitor vLLM and Ollama servers, with a tray icon per metric

Adds an inference-server half to the widget: any number of vLLM and Ollama
servers, configured in %LOCALAPPDATA%\ClaudeUsageWidget\servers.json, each
exposing whichever metrics you want as their own tray icon -- live tokens/sec,
live connections, queue depth, KV-cache occupancy, TTFT, requests/min.

The two hardcoded tray icons become a config-driven collection, and server
metrics get a third badge shape (hexagon) so the tray stays unambiguous when
several icons are green at once.

Notes on the parts that needed care:

- Rates come from counter deltas between scrapes. `tps` divides by the
  server's own decode time (how fast it generates while generating; the
  number benchmarks quote), `tps_wall` by wall-clock (what the box actually
  produced). A server restart is detected by any counter moving backwards
  and re-baselines rather than reporting a spike. Averages that belong to
  requests rather than to time -- TTFT, TPOT, cache hit rate -- hold their
  last value through an idle interval and fall back to lifetime figures on
  the first scrape.
- Ollama publishes no aggregate metrics at all (0.32.14: /metrics and
  /debug/vars are both 404), so it gets resident models, VRAM, installed
  count and reachability, plus live throughput only via an opt-in synthetic
  probe that refuses to touch a model which isn't already loaded.
- The hexagon draws smaller digits than the circle. The circle's boxes fit
  inside it by about a pixel, and a screenshot of the real tray showed them
  reading as a solid block against the slanted edges -- the same "fits but
  isn't legible" trap as the 3-digit fix in 0.7.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFVNrELtN4qRmV15szTU66
A
Arsen Apostolov committed
e1be0b06a45bfaff1333d88af9372b454ad1a74b
Parent: f2cb91e