diff --git a/docs/plan-local-llm-router.md b/docs/plan-local-llm-router.md index ee2397a..849c91f 100644 --- a/docs/plan-local-llm-router.md +++ b/docs/plan-local-llm-router.md @@ -213,6 +213,24 @@ deckt `llama-swap` innerhalb eines Hosts (B0.5). Waechst die Flotte: erst den billigen Heartbeat-Teil; fuer echte Orchestrierung Docker Swarm / Nomad nehmen statt selbst einen Scheduler zu bauen. +### ENTSCHIEDEN: manuelle Platzierung + read-only GPU-Dashboard (kein Auto) + +Statt Auto-Controller (Semi-Auto verworfen — Host wechselt selten, Komplexitaet +lohnt nicht): +- **Pin = Docker Compose Profiles.** Services kriegen `profiles: [...]`, jeder + Host setzt `COMPOSE_PROFILES=` in der `.env`; `docker compose up` + startet nur die eigenen. „In Config gepinnt", nativ, kein Code. +- **Verschiebe-Regel:** `up` auf neuem Host + `docker compose rm -sf ` auf + altem (sonst holt `restart: unless-stopped` den Dienst beim Reboot zurueck → + Broadcast-Kollision; Profile gelten nur beim `up`, nicht beim Daemon-Restart). +- **GPU-Dashboard in Diagnostic (read-only):** jeder GPU-Host sendet periodisch + einen Heartbeat via RVS (Host, GPU-Util, VRAM frei/belegt, laufende + GPU-Container). Diagnostic zeigt pro Host VRAM-Balken + Dienste + „Host X hat + N GB frei". Kein Start/Stop, nur Sicht + Hinweis wohin verschiebbar. +- **Zukunft (Gamebox3, 4×3060 = 48 GB):** neuer Host, eigenes Profil, `up` → + erscheint im Dashboard; grosses lokales LLM oder FLUX-Vollausbau dorthin. + Ohne Orchestrator. + ## Nicht-Ziele - Kein echter Gemini-Live-Duplex-Klon (Text-Modell als Hirn).