From d6e0762a283c04d8d1d5884ac4e52b6d5bcba07c Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Sat, 20 Jun 2026 21:12:45 +0200 Subject: [PATCH] Doku: Projektstand + Deploy-Workflow fuer Uebergabe aktualisiert - CLAUDE.md: "Entwickeln & Deployen" auf Windows->Gitea->Bosgame umgestellt (key-basiertes SSH als hitonabi, rsync nach /opt, sudo-Restart) - ROADMAP.md: Projektstand-Sektion (Schritt 1 live auf :9000, Reihenfolge, naechster Schritt = Feature 3 mit geprueften sysfs/psutil-Quellen) - Feature 3 + 5 Status praezisiert Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 40 ++++++++++++++++++++++++++++++---------- ROADMAP.md | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 63 insertions(+), 15 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 92db666..239c768 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -30,17 +30,37 @@ FastAPI-Backend + Vanilla-JS-Dashboard. **Leitprinzip: KISS — kein Build-Schri - **3 Modelle / 5 Rollen**: `coder`, `scout`, `vision` (Qwen3-Familie). Modelle werden geswappt, nicht parallel geladen. - **Mission Control**: Produktiv unter `/opt/mission-control` (als Dienst), Source-Repo unter `~/mission-control`. -## Entwickeln +## Entwickeln & Deployen -- **Niemals direkt in `/opt` arbeiten.** Dev-Instanz aus der Source auf einem anderen Port starten: - ```bash - cd ~/mission-control && python3 -m venv .venv && . .venv/bin/activate - pip install -r requirements.txt - uvicorn app:app --host 0.0.0.0 --port 9001 --reload - ``` - Dann `:9001` = Spielwiese, `:9000` = stabil. -- **Ausrollen**: `sudo cp -r ~/mission-control/. /opt/mission-control/ && sudo systemctl restart mission-control` -- **Logs**: `journalctl -u mission-control -f` +**Wo entwickelt wird:** primär auf einem **Windows-PC** (Repo z. B. `F:\Coding Stuff\mission-control`), +Zielsystem ist der **Linux-Bosgame**. Lokal nur Smoke-Test (rendert/bootet sauber?), echter +Funktionstest nur auf dem Bosgame (dort läuft llama-swap). + +**Lokaler Smoke-Test (Windows):** +```bash +python -m venv .venv && .venv/Scripts/python -m pip install -r requirements.txt +.venv/Scripts/python -m uvicorn app:app --port 9001 +``` +Ohne llama-swap ist alles im Offline-Zustand (rote Pill, Warn-Banner) — das ist erwartet. + +**Bosgame-Zugang (SSH, key-basiert, passwortlos):** +```bash +ssh -i ~/.ssh/id_ed25519_hermes -o IdentitiesOnly=yes hitonabi@192.168.178.151 +``` +User ist **`hitonabi`** (klein!). `sudo` braucht ein Passwort (kein passwortloses sudo). + +**Deploy-Kette (Windows → Gitea → Bosgame):** +1. Lokal bauen + Smoke-Test → `git push` (origin = Gitea `http://192.168.178.153:3000/Hitonabi/mission-control.git`). +2. Bosgame: `cd ~/mission-control && git pull --ff-only` (Source-Repo). +3. Nach `/opt` ausrollen — **ohne sudo** (`hitonabi` besitzt `/opt/mission-control`), `.venv` ausnehmen: + ```bash + rsync -a --exclude='.git' --exclude='.venv' --exclude='__pycache__' --exclude='*.pyc' ~/mission-control/ /opt/mission-control/ + ``` +4. `sudo systemctl restart mission-control` (Passwort nötig). Prod = `:9000`, Dev-Spielwiese = `:9001`. +5. **Niemals direkt in `/opt` arbeiten.** Logs: `journalctl -u mission-control -f`. + +Statische Dateien werden je Request frisch von Platte gelesen → UI-Änderungen wirken schon nach +rsync; **Python-Code-Änderungen brauchen den Restart**. ## Konventionen diff --git a/ROADMAP.md b/ROADMAP.md index 4f1e811..9600c27 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -4,6 +4,31 @@ --- +## Projektstand (Stand 2026-06-20) + +**✅ Schritt 1 erledigt & live auf `:9000`** — *SoC-Refactor + Design 2.0 als Fundament* (Commit `3649394`). +Backend in Helfer + `routers/*` zerlegt, Frontend in ES-Module (`js/core` + `js/panels`) + ausgelagertes +CSS, neues Dashboard-Layout (Sidebar-Nav, Topbar, Alert-Banner, Hero, KPI-Kacheln, Health-Signale, +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**. + +**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`. + +**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)". + +--- + ## Features ### 1. Server-Management ("Update-Panel 2.0") @@ -19,17 +44,20 @@ 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 -- [ ] CPU / RAM / GPU-VRAM (GTT) / Temperatur live anzeigen -- [ ] Quellen: sysfs (`mem_info_gtt_used` etc.), `amd-smi` / `rocm-smi` +### 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! + GPU-Mem: `/sys/class/drm/card1/device/mem_info_*`; Temp: hwmon-`name` `amdgpu`/`k10temp`. ### 4. Cookbook + "Modell holen" verschmelzen - [ ] Rezept-basiertes Einpflegen (Odysseus-Style): kuratierte Modell-Rezepte (Repo, Datei, ctx, Flags) per Klick installierbar - [ ] "Modell holen" wird Teil des Cookbooks statt separates Formular ### 5. Design 2.0 -- [ ] UI-Redesign -- [ ] Referenz: `builderz-labs/mission-control` → `docs/mission-control-overview.png` +- [x] **Grundgerüst + Design-Sprache in Schritt 1 umgesetzt** (Sidebar-Nav, Topbar, Hero, getönte + KPI-Kacheln, Health-Signale, Listen, Aktivitäts-Stream, Alert-Banner) — Tokens in `css/base.css`. +- [ ] 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 - [ ] Fähigkeiten pro Modell anzeigen (Text / Bild / Code)