diff --git a/CLAUDE.md b/CLAUDE.md index 239c768..3f1f145 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -11,7 +11,7 @@ FastAPI-Backend + Vanilla-JS-Dashboard. **Leitprinzip: KISS — kein Build-Schri - **`auth.py`** — optionale Token-Auth (`X-MC-Token`). - **`jobengine.py`** — In-Memory-Job-System (Threads + Subprocess) mit Live-Log; fährt Downloads/Updates. - **`llamaswap.py`** — spricht `llama-swap` an (`/running`, `/v1/models`, unload) und liest/schreibt dessen `config.yaml` per `ruamel.yaml` (Kommentare bleiben erhalten). -- **`routers/*.py`** — ein Router je Bereich. Aktuell: `models.py` (`status`, `download`, `register`, `unload`, `chat`), `jobs.py` (`jobs`), `maintenance.py` (`update`). Alle Endpoints unter `/api/*`. +- **`routers/*.py`** — ein Router je Bereich. Aktuell: `models.py` (`status`, `download`, `register`, `unload`, `chat`), `jobs.py` (`jobs`), `maintenance.py` (`update`), `system.py` (`status`). Alle Endpoints unter `/api/*`. **Frontend** (`static/`, dünne Hülle + ES-Module, kein Build): - **`index.html`** — nur Gerüst: Sidebar-Nav, Topbar, Alert-Banner, ein `.view`-Container je Bereich (Hash-Routing). Lädt `css/*` und `js/main.js` als Modul. diff --git a/ROADMAP.md b/ROADMAP.md index 9600c27..c961391 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -12,20 +12,19 @@ CSS, neues Dashboard-Layout (Sidebar-Nav, Topbar, Alert-Banner, Hero, KPI-Kachel Modell-Listen, Aktivitäts-Stream) angelehnt an `docs/mission-control-overview.png`. Bestehende Funktionen 1:1 migriert, Endpoint-URLs unverändert. Architektur + Deploy-Weg stehen in **CLAUDE.md**. +**✅ Schritt 2 erledigt & live** — *Feature 3: Live-Auslastung*. `system.py` Router mit `psutil` und sysfs für CPU/RAM/Disk/GPU/Temp. + **Reihenfolge (abgestimmt):** Design/Architektur zuerst (✅), dann Quick Wins, Security-Brocken zuletzt: -`1 (✅) Fundament → [2] Feature 3 Live-Auslastung ← NÄCHSTES → Feature 6 → Feature 1 → Feature 4 → Feature 7 → Feature 2`. +`1 (✅) Fundament → 2 (✅) Feature 3 Live-Auslastung → [3] Feature 6 Mehr LLM-Metriken ← NÄCHSTES → Feature 1 → Feature 4 → Feature 7 → Feature 2`. **Arbeitsweise je Schritt:** neuer `routers/.py` + `js/panels/.js` + Nav-Eintrag, sauber degradierend. Bauen + Smoke-Test auf Windows, dann push→pull→rsync→restart auf den Bosgame (CLAUDE.md „Entwickeln & Deployen"). Ein Commit je Schritt. **Ich (KI) habe key-basierten SSH-Zugang zum Bosgame und kann selbst deployen+restarten.** -**→ Nächster Schritt konkret = Feature 3 (Live-Auslastung).** Quellen auf dem Bosgame geprüft — `amd-smi`/`rocm-smi` -fehlen, daher **sysfs + psutil**: -- CPU/RAM/Disk via `psutil` (zu `requirements.txt` hinzufügen — im Prod-`/opt/.venv` noch nicht drin) oder `/proc`-Fallback. -- GPU-Speicher: `/sys/class/drm/card1/device/mem_info_{gtt,vram}_{used,total}` (Bytes; GTT-Pool ≈133 GB). -- Temperatur: hwmon mit `name`=`amdgpu` (GPU, `temp1_input` in m°C) bzw. `k10temp` (CPU). -- ⚠️ hwmon-Index **und** `card*`-Nummer nicht hardcoden — über `name`/Existenz auflösen (nicht reboot-stabil). -- Panel füllt die „n/a"-Plätze: KPI-Karte „System-Last" + „Stack-Gesundheit"-Zeile „Auslastung (RAM/GPU/Disk)". +**→ Nächster Schritt konkret = Feature 6 (Mehr LLM-Metriken).** +- Fähigkeiten pro Modell anzeigen (Text / Bild / Code) +- Tokens/Sek, Kontextgröße, Quant, Dateigröße auf Platte +- Status pro Modell: geladen / idle / Ladezeit --- @@ -44,9 +43,9 @@ Aktuell gibt es nur "Container aktualisieren" + "Alles aus dem Speicher". Ziel: - [ ] Zugang über SSH bzw. SSH-Key, sauberes Credential-Handling - ⚠️ **Security-kritisch**: SSH-Zugang in einer Web-UI — Auth + strikte LAN-Bindung Pflicht. -### 3. Live-Auslastung im Dashboard ← **NÄCHSTER SCHRITT** (Details im Projektstand oben) -- [ ] CPU / RAM / GPU-VRAM+GTT / Temperatur live anzeigen -- [ ] Quellen: **sysfs + psutil** — `amd-smi`/`rocm-smi` sind auf dem Bosgame NICHT installiert! +### 3. Live-Auslastung im Dashboard (✅ Erledigt) +- [x] CPU / RAM / GPU-VRAM+GTT / Temperatur live anzeigen +- [x] Quellen: **sysfs + psutil** — `amd-smi`/`rocm-smi` sind auf dem Bosgame NICHT installiert! GPU-Mem: `/sys/class/drm/card1/device/mem_info_*`; Temp: hwmon-`name` `amdgpu`/`k10temp`. ### 4. Cookbook + "Modell holen" verschmelzen @@ -59,7 +58,7 @@ Aktuell gibt es nur "Container aktualisieren" + "Alles aus dem Speicher". Ziel: - [ ] Feinschliff pro Feature (jeder neue Bereich nutzt die bestehenden Komponenten/Tokens). - [ ] Referenz liegt als `docs/mission-control-overview.png` (vom User nachzulegen; Design ist daran angelehnt). -### 6. Mehr LLM-Metriken +### 6. Mehr LLM-Metriken ← **NÄCHSTER SCHRITT** - [ ] Fähigkeiten pro Modell anzeigen (Text / Bild / Code) - [ ] Tokens/Sek, Kontextgröße, Quant, Dateigröße auf Platte - [ ] Status pro Modell: geladen / idle / Ladezeit