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) + deineconfig.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-swaplädt mit-watch-configneu - 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+
hfCLI 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-mmapsind 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}