Files
mission-control/README.md
T

3.4 KiB

Mission Control

Eine schlanke Steuerzentrale für deinen lokalen llama-swap-Stack auf dem Bosgame M5. Ein FastAPI-Backend + ein HTML-Dashboard. Kein Build-Schritt, keine Datenbank.

Was sie kann

  • Modelle & Ports sehen — liest llama-swap (/running, /v1/models) + deine config.yaml
  • Modell holen — lädt eine GGUF-Datei von HuggingFace (hf download) als Hintergrund-Job mit Live-Log
  • Einpflegen — schreibt das Modell automatisch in deine config.yaml; llama-swap lädt mit -watch-config neu
  • Wartung — Container/Toolbox aktualisieren, Modelle aus dem Speicher werfen
  • Schnelltest — Chat-Box, um ein Modell zu wecken und zu prüfen

Was sie bewusst nicht macht: Chat-Logs, Inferenz-Monitoring im Detail — dafür hat llama-swap schon /ui und /log. Mission Control ergänzt nur, was fehlt.

Voraussetzungen

  • Python 3.11+
  • hf CLI installiert (pip install -U "huggingface_hub[cli]")
  • ein laufendes llama-swap — gestartet mit -watch-config, sonst greift das Auto-Einpflegen nicht

Installation

sudo mkdir -p /opt/mission-control && sudo chown $USER /opt/mission-control
cp -r app.py static /opt/mission-control/
cd /opt/mission-control
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
uvicorn app:app --host 0.0.0.0 --port 9000

Dann im Browser im LAN: http://<bosgame-ip>:9000

Als Dienst (Autostart)

Pfade in mission-control.service anpassen, dann:

sudo cp mission-control.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now mission-control

Konfiguration (Umgebungsvariablen)

Variable Default Zweck
MC_LLAMA_SWAP_URL http://127.0.0.1:8080 wo llama-swap lauscht
MC_CONFIG_PATH /etc/llama-swap/config.yaml die llama-swap-Config
MC_MODELS_DIR /srv/models wohin GGUFs geladen werden
MC_CMD_TEMPLATE siehe unten Startbefehl pro Modell
MC_UPDATE_CMD (leer) Befehl für „Container aktualisieren"
MC_DEFAULT_TTL 300 Sekunden bis Auto-Unload
MC_TOKEN (leer) optionales Zugriffs-Token

Wichtig: MC_CMD_TEMPLATE an deinen Start anpassen

Das ist der Befehl, der pro Modell in die config.yaml geschrieben wird. {model} und {ctx} werden von Mission Control ersetzt, ${PORT} bleibt stehen (das ersetzt llama-swap selbst).

Direkt auf dem Host (llama-server im PATH):

llama-server -m {model} --host 127.0.0.1 --port ${PORT} -c {ctx} -ngl 999 -fa 1 --no-mmap

Über den kyuz0-Container (distrobox) — Beispiel, an deinen Toolbox-Namen anpassen:

distrobox enter llama-vulkan-radv -- llama-server -m {model} --host 127.0.0.1 --port ${PORT} -c {ctx} -ngl 999 -fa 1 --no-mmap

-fa 1 (Flash Attention) und --no-mmap sind auf Strix Halo Pflicht, sonst drohen Crashes/Slowdowns.

⚠️ Sicherheit

Mission Control führt Shell-Befehle aus (Downloads, Updates) und schreibt deine Config. Niemals offen ins Internet hängen. Betrieb nur im vertrauenswürdigen LAN. Wenn du trotzdem etwas Schutz willst, setz MC_TOKEN und trag es oben rechts im Dashboard ein. Für echten Remote-Zugriff: per SSH-Tunnel oder Tailscale, nicht per Portfreigabe.

API (falls du es skripten willst)

GET /api/status · POST /api/download · POST /api/register · POST /api/unload[?model=] · POST /api/update · POST /api/chat · GET /api/jobs · GET /api/jobs/{id}