From 7e3377f93252405c7eca95b081bf2da981dfbd79 Mon Sep 17 00:00:00 2001 From: Bryce Zuccaro Date: Fri, 14 Aug 2026 10:53:26 -0600 Subject: [PATCH] docs: add README; verify plugin install and packaging --- README.md | 35 +++++++++++++++++++ com.bryce.llamawatch.sdPlugin/manifest.json | 37 +++++++++++++++++---- 2 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c922395 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# llama-watch + +A Stream Deck plugin (macOS) that monitors a llama-swap instance. + +## Actions + +- **In-Flight Monitor** — per-model color state: `OFF` / `LOADING` / `IDLE` / `ACTIVE` (pulsing red). Powered by the real-time `/api/events` SSE feed. +- **GPU Graph** — live line chart of a GPU metric (utilization %, VRAM %, temperature, power draw, fan speed) for one GPU or all GPUs, sampled every 5 s. + +Pressing either key opens `http:///ui` in your browser. + +## Install + +Double-click the packaged `.streamDeckPlugin`, or run: + +```bash +npm install +npm run build +streamdeck validate com.bryce.llamawatch.sdPlugin +``` + +## Develop + +```bash +npm run watch # hot-reload while the Stream Deck app is running +npm test # unit tests (node:test + tsx) +``` + +## Configure + +Per-key settings: base URL (default `http://localhost:9292`), optional API key, and the model / GPU / metric to watch. The model and GPU dropdowns are populated live from the instance. + +## Marketplace + +Assets are prepared for eventual submission (`imgs/plugin/icon.png` 256/512, action icons, category icon). The plugin only stores its settings locally; it reads GPU metrics and request status from the user's own llama-swap server and sends nothing elsewhere. diff --git a/com.bryce.llamawatch.sdPlugin/manifest.json b/com.bryce.llamawatch.sdPlugin/manifest.json index a7b0606..7cb39b0 100644 --- a/com.bryce.llamawatch.sdPlugin/manifest.json +++ b/com.bryce.llamawatch.sdPlugin/manifest.json @@ -10,8 +10,15 @@ "Icon": "imgs/actions/inflight/icon", "Tooltip": "Shows whether a model has a request in flight", "PropertyInspectorPath": "ui/inflight.html", - "Controllers": ["Keypad"], - "States": [{ "Image": "imgs/actions/inflight/key", "ShowTitle": false }] + "Controllers": [ + "Keypad" + ], + "States": [ + { + "Image": "imgs/actions/inflight/key", + "ShowTitle": false + } + ] }, { "Name": "GPU Graph", @@ -19,8 +26,15 @@ "Icon": "imgs/actions/gpu/icon", "Tooltip": "Live GPU metric graph", "PropertyInspectorPath": "ui/gpu.html", - "Controllers": ["Keypad"], - "States": [{ "Image": "imgs/actions/gpu/key", "ShowTitle": false }] + "Controllers": [ + "Keypad" + ], + "States": [ + { + "Image": "imgs/actions/gpu/key", + "ShowTitle": false + } + ] } ], "Category": "llama-watch", @@ -29,8 +43,17 @@ "Description": "Monitor llama-swap: in-flight requests per model and live GPU metric graphs.", "Icon": "imgs/plugin/icon", "SDKVersion": 2, - "Software": { "MinimumVersion": "7.1" }, - "OS": [{ "Platform": "mac", "MinimumVersion": "13" }], - "Nodejs": { "Version": "24" }, + "Software": { + "MinimumVersion": "7.1" + }, + "OS": [ + { + "Platform": "mac", + "MinimumVersion": "13" + } + ], + "Nodejs": { + "Version": "24" + }, "UUID": "com.bryce.llamawatch" }