8fd00d1887
Mission Control proxyt jetzt zum Nous-Hermes-Agent-Server statt zum Eigenbau-Agenten: - routers/hermes.py: Chat-WS streamt als Proxy zu :8642 (OpenAI-API), WS-Contract (thinking/token/done/error) beibehalten -> HermesPanel unveraendert, kein Frontend-Build noetig. Status meldet Hermes-Health. - config.py: HERMES_API_URL + HERMES_API_KEY (Key aus ~/.hermes/.env); HERMES_SIMPLE/COMPLEX_MODEL entfernt (Routing macht Hermes selbst). - hermes_agent.py geloescht (ReAct-Loop, tote Tools, DuckDuckGo, Fake-Stream). - CLAUDE/README/ROADMAP aktualisiert; Phasen 2+3 abgehakt. Lokaler Smoke-Test: App importiert, /api/hermes/status liefert 200. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
115 lines
4.6 KiB
Markdown
115 lines
4.6 KiB
Markdown
# Mission Control
|
|
|
|
Persönliche Steuerzentrale für einen lokalen LLM-Stack auf dem Bosgame M5.
|
|
FastAPI-Backend + Svelte 5-Frontend. Kein Cloud-Zwang, keine Datenbank-Abhängigkeit.
|
|
|
|
## Was es kann
|
|
|
|
**LLM-Stack verwalten**
|
|
- Modelle & Status sehen (llama-swap `/running`, `/v1/models`, `config.yaml`)
|
|
- Modelle von HuggingFace laden — als Hintergrund-Job mit Live-Log
|
|
- Automatisch in llama-swap einpflegen (`-watch-config`)
|
|
- Optimale Kontextfenster berechnen (hardware-aware, `hw_math`)
|
|
|
|
**Cookbook**
|
|
- Use-Case-getrieben: Coding · Chat · Vision · Agenten · Schnell & sparsam
|
|
- Hardware-Ampel pro Setup, „Beste Wahl für dein System"
|
|
- 1-Klick „Komplettes Setup installieren"
|
|
|
|
**Wartung & Server**
|
|
- OS-Updates, Dienste steuern (llama-swap, Mission Control), Reboot
|
|
- Live-Logs (journalctl via WebSocket)
|
|
- Self-Update-Button (git pull → rsync → restart)
|
|
|
|
**Verbinden**
|
|
- Copy-Paste-Configs für Cline, OpenCode, Zed, Continue, Jan AI, OpenWebUI — inkl. Download-Links
|
|
- LAN-IP Override für NPM-Proxy-Setups (localStorage)
|
|
- Gedächtnis-MCP: alle Tools teilen dasselbe persistente Gedächtnis
|
|
|
|
**Gedächtnis** *(v7/v8.3)*
|
|
- SQLite-Datenbank mit 5 Kategorien: `user` · `instruction` · `stable` · `versioned` · `ephemeral`
|
|
- MCP-Server (`mcp_memory.py`): Cline, OpenCode, Claude Code teilen dasselbe Gedächtnis
|
|
- Import aus Cloud-KIs (Claude/Gemini/ChatGPT): zeilenweise einfügen → Batch-POST
|
|
- Temporäre Einträge (ephemeral) nach 7 Tagen automatisch gelöscht
|
|
|
|
**Hermes Agent** *(v8)*
|
|
- Lokaler KI-Assistent direkt im Browser — Text und Sprache
|
|
- Whisper STT (lokal, CPU) + Piper TTS (weibliche Stimme Kerstin)
|
|
- Tool Calling: Dateien lesen, Befehle ausführen, System abfragen, Web suchen
|
|
- Gedächtnis-Integration: Hermes kennt dich und deinen Stack von Anfang an
|
|
- Chat-History überlebt Browser-Reload · Stopp-Button · Verlauf löschen
|
|
- Setup-Wizard für Piper + Windows SSH-Zugriff
|
|
|
|
## Voraussetzungen
|
|
|
|
- Python 3.11+
|
|
- `llama-swap` laufend mit `-watch-config`
|
|
- `hf` CLI (`pip install -U "huggingface_hub[cli]"`)
|
|
- Für Voice: `faster-whisper` + Piper Binary (Anleitung im Hermes-Tab)
|
|
|
|
## Schnellstart (Bosgame)
|
|
|
|
```bash
|
|
sudo mkdir -p /opt/mission-control && sudo chown $USER /opt/mission-control
|
|
git clone http://192.168.178.153:3000/Hitonabi/mission-control.git ~/mission-control
|
|
rsync -a --exclude='.git' ~/mission-control/ /opt/mission-control/
|
|
cd /opt/mission-control
|
|
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
|
|
```
|
|
|
|
Als Dienst:
|
|
```bash
|
|
sudo cp mission-control.service /etc/systemd/system/
|
|
sudo systemctl daemon-reload && sudo systemctl enable --now mission-control
|
|
```
|
|
|
|
Browser im LAN: `http://192.168.178.151:9000`
|
|
|
|
## Konfiguration
|
|
|
|
Alle Einstellungen über Umgebungsvariablen in der systemd-Unit:
|
|
|
|
| Variable | Default | Zweck |
|
|
|---|---|---|
|
|
| `MC_LLAMA_SWAP_URL` | `http://127.0.0.1:8080` | llama-swap URL |
|
|
| `MC_CONFIG_PATH` | `/etc/llama-swap/config.yaml` | llama-swap Config |
|
|
| `MC_MODELS_DIR` | `/srv/models` | GGUF-Ablageort |
|
|
| `MC_TOKEN` | leer | Auth-Token (optional) |
|
|
| `MC_UPDATE_CMD` | leer | Engine-Update-Befehl |
|
|
| `MC_SOURCE_DIR` | `~/mission-control` | Self-Update Quelle |
|
|
| `MC_MEMORY_DB` | `{MODELS_DIR}/mission-control-memory.db` | Gedächtnis-Datenbank |
|
|
| `HERMES_API_URL` | `http://127.0.0.1:8642/v1` | Hermes-Agent-Server (OpenAI-API) |
|
|
| `HERMES_API_KEY` | aus `~/.hermes/.env` | API-Key des Hermes-Servers (sonst Env) |
|
|
| `HERMES_WINDOWS_HOST` | leer | Windows-PC IP für SSH-Zugriff |
|
|
| `PIPER_BIN` | `/opt/mission-control/piper/piper` | Piper TTS Binary |
|
|
| `PIPER_VOICE` | `.../de_DE-kerstin-low.onnx` | Piper Stimme |
|
|
| `WHISPER_MODEL` | `medium` | Whisper Modell-Größe |
|
|
|
|
## Sicherheit
|
|
|
|
- Ausschließlich im vertrauenswürdigen LAN betreiben
|
|
- `MC_TOKEN` setzen für minimalen Schutz
|
|
- Für Remote-Zugriff: SSH-Tunnel oder Tailscale, niemals direktes Port-Forwarding
|
|
- Hermes-SSH-Key hat nur Zugriff auf explizit freigegebene Windows-Pfade
|
|
|
|
## Architektur
|
|
|
|
```
|
|
Browser (Windows PC)
|
|
├── Svelte 5 UI (static/dist/main.js)
|
|
└── WebSocket (Live-Metriken, Hermes-Chat, Logs)
|
|
|
|
FastAPI (Bosgame :9000)
|
|
├── routers/models.py LLM-Verwaltung
|
|
├── routers/system.py Live-Metriken (psutil/sysfs)
|
|
├── routers/maintenance.py Updates, Logs, Neustart
|
|
├── routers/cookbook.py Modell-Empfehlungen
|
|
├── routers/memory.py Gedächtnis (SQLite)
|
|
├── routers/hermes.py Agent-Chat, Voice (Whisper/Piper)
|
|
└── ...
|
|
|
|
llama-swap (:8080) Inference (Qwen3-Familie)
|
|
SQLite Gedächtnis (/srv/models/mission-control-memory.db)
|
|
mcp_memory.py MCP-Server für Cline/OpenCode/Claude Code
|
|
```
|