203 lines
8.9 KiB
Markdown
203 lines
8.9 KiB
Markdown
# Athena AI
|
||
|
||
Stand: **20. September 2026**, auf Athena geprüft. Die Textprofil-Images verwenden
|
||
**llama.cpp 0.4.1** (`b29c606`).
|
||
Der [geprüfte Live-Stand](docs/LIVE_STATE.md) beschreibt Profile, GPUs und die
|
||
Abweichung zwischen dem bereitgestellten Stack und dem Git-Checkout.
|
||
Der [Update- und Aufräumbericht vom 15. September](docs/UPDATE_AUDIT_20260915.md)
|
||
enthält Versionsvergleich, Tests und Rückfallstand.
|
||
|
||
|
||
Athena ist die lokale Inferenzmaschine. Der Docker-Stack stellt
|
||
Qwen über eine kleine OpenAI-kompatible Router-API bereit und übernimmt lokale
|
||
Bild- und Sprachausgabe. **Hermes, OpenClaw und die Fach-MCPs laufen auf Unraid.**
|
||
|
||
Die [Router-Korrekturen vom 20. September](docs/ROUTER_AUDIT_20260920.md)
|
||
dokumentieren den ausgerollten Stand, reduzierte Statuslatenzen und Tests.
|
||
|
||
## Aktueller Aufbau
|
||
|
||
### Athena
|
||
|
||
- genau ein aktives llama.cpp-Profil: Fast, Medium, Large, Ultra oder Uncensored
|
||
- Profile Router auf Port 8081
|
||
- FLUX.2 Klein 9B FP8 Beta: Transformer/VAE auf RTX 5080, Textencoder auf RTX 3060
|
||
- Qwen3-TTS 1.7B auf der RTX 3060 hinter dem TTS-Gateway; kein Piper-Fallback
|
||
- Whisper.cpp `small` auf der CPU für lokale deutsche Spracherkennung
|
||
- EmbeddingGemma 300M Q8 auf der CPU für OpenClaws hybride Memory-Suche
|
||
- Live-Dashboard mit 21 Tagen Detailhistorie für GPUs und Slot-Kontextbelegung auf Port 8099
|
||
- Portainer CE als optionale Container-Ansicht auf Port 9443
|
||
- WireGuard-Gateway, Datenbackup und Athena-Operator
|
||
- keine produktive Hermes-, OpenWebUI- oder portable Fach-MCP-Instanz
|
||
|
||
### Unraid
|
||
|
||
- offizieller Hermes-Agent mit persistentem Appdata
|
||
- je ein eigener Container für ARR, Deemix, Navidrome, STRATO und
|
||
Nginx Proxy Manager
|
||
- MUA/Unraid-MCP als Unraid-Plugin
|
||
- Media-Tools als nachrüstbare Werkzeugkiste
|
||
- Sicherung durch das vorhandene Unraid-Appdata-Backup
|
||
|
||
Hermes nutzt Athenas Router unter `http://192.168.1.212:8081/v1`. Ein MCPHub
|
||
ist nicht mehr Bestandteil der produktiven Architektur.
|
||
|
||
## Verifizierte Bildauflösung auf dem Live-System
|
||
|
||
Der am 12. September geprüfte Live-Worker verwendet **FLUX.2 Klein 9B FP8
|
||
Beta**. Die frühere 4B-Angabe war veraltet. Im Auflösungstest
|
||
war **1024 × 1024 erfolgreich**, während **1280 × 1280 einen CUDA-OOM** auf
|
||
der RTX 5080 auslöste. Höhere Auflösungen sind damit nicht freigegeben;
|
||
Zwischenwerte wurden nicht getestet. Die produktive 1024-Begrenzung bleibt
|
||
bestehen. Messwerte, Testbedingungen und die Korrektur früherer optimistischer
|
||
Schätzungen stehen in [Auflösungstest vom 12. September](docs/FLUX_RESOLUTION_TEST_20260912.md).
|
||
|
||
## Installation des Repository-Stands
|
||
|
||
Der produktive Quellstand ist mit diesem Repository abgeglichen. Ein frischer
|
||
Clone enthält den Athena-Kern, die Spezialprofile sowie die LTX-Erweiterungen.
|
||
Modelle, Laufzeitdaten und geheime Konfiguration bleiben außerhalb von Git und
|
||
werden über die dokumentierten Sicherungen wiederhergestellt.
|
||
|
||
```bash
|
||
cp config/install.env.example /root/mike-ai-install.env
|
||
# Werte in /root/mike-ai-install.env eintragen und chmod 600 setzen
|
||
sudo ./install.sh --config /root/mike-ai-install.env
|
||
```
|
||
|
||
Das Installationsskript baut llama.cpp und die lokalen Images, lädt die
|
||
versionierten Modellartefakte und startet ausschließlich den Athena-Kern.
|
||
|
||
## Betrieb
|
||
|
||
```bash
|
||
# Konfiguration prüfen
|
||
./manage.sh validate
|
||
|
||
# Gesamten Athena-Kern gezielt aktualisieren
|
||
./manage.sh deploy core
|
||
|
||
# Nur einen Dienst ausrollen
|
||
./manage.sh deploy router
|
||
|
||
# Eindeutige Altcontainer entfernen
|
||
./manage.sh purge-legacy
|
||
|
||
# Read-only Ende-zu-Ende-Test
|
||
sudo ./smoke-test.sh
|
||
```
|
||
|
||
### Reasoning-Stufen
|
||
|
||
Der Router übersetzt die Auswahl eines OpenAI-kompatiblen Clients in echte,
|
||
pro Anfrage geltende llama.cpp-Denkbudgets. `Off` deaktiviert Thinking; die
|
||
aktiven Stufen sind auf 256 (Minimal), 768 (Low), 2048 (Medium), 4096 (High)
|
||
und 8192 Tokens (XHigh/Max/Ultra) begrenzt. Die Modellserver dürfen deshalb
|
||
kein festes `--reasoning-budget` setzen, da dieses die dynamischen Budgets
|
||
von llama.cpp übersteuern würde. Clients, die direkt
|
||
`thinking_budget_tokens` senden, behalten ihren expliziten Wert.
|
||
|
||
### Ein oder zwei Modell-Slots
|
||
|
||
Fast, Large, Ultra und Uncensored laufen mit einem Slot. Medium läuft seit dem
|
||
19. September in einem kontrollierten OpenClaw-Praxistest mit zwei Slots. Beide
|
||
Medium-Slots teilen sich durch `--kv-unified` **einen** 160.000-Token-KV-Pool;
|
||
es entstehen keine zwei unabhängigen 160K-Kontextfenster. Belegt ein Slot
|
||
beispielsweise 30.000 Token, stehen dem zweiten höchstens noch etwa 130.000
|
||
Token aus diesem Pool zur Verfügung. Das Dashboard zeigt diese aktuell
|
||
erreichbare Kapazität und den freien gemeinsamen Pool dynamisch an.
|
||
|
||
Die Live-Einstellung liegt auf Athena in `/etc/mike-ai/stack.env`:
|
||
|
||
```bash
|
||
MEDIUM_PARALLEL_SLOTS=2
|
||
```
|
||
|
||
Zum Umschalten wird nur Medium neu erstellt:
|
||
|
||
```bash
|
||
sed -i 's/^MEDIUM_PARALLEL_SLOTS=.*/MEDIUM_PARALLEL_SLOTS=1/' /etc/mike-ai/stack.env
|
||
cd /opt/mike-ai/stack
|
||
docker compose --env-file /etc/mike-ai/stack.env up -d --no-deps --force-recreate llama-medium
|
||
```
|
||
|
||
Für zwei Slots wird im ersten Befehl wieder `2` gesetzt. Der Compose- und
|
||
Installationsstandard bleibt bewusst `1`; damit wird der Versuchsstand bei
|
||
einer Neuinstallation nicht unbemerkt zur Vorgabe. Der aktuelle Live-Test mit
|
||
OpenClaw kann zwei gleichzeitige Anforderungen annehmen. Sehr große parallele
|
||
Prefills konkurrieren weiterhin um Rechenleistung und den gemeinsamen KV-Pool.
|
||
|
||
## Endpunkte
|
||
|
||
- Router: `http://192.168.1.212:8081/v1`
|
||
- Embeddings: `http://192.168.1.212:8082/v1`
|
||
- Athena-Dashboard: `http://192.168.1.212:8099`
|
||
|
||
Der Router stellt Sprache OpenAI-kompatibel bereit: Sprachausgabe über
|
||
`/v1/audio/speech` und Spracherkennung über `/v1/audio/transcriptions`. Das
|
||
Whisper-Modell liegt persistent im Docker-Volume `whisper-data`; Audiodaten
|
||
werden lokal auf Athena verarbeitet. Für OpenClaw Talk liegt der lokale
|
||
Realtime-Provider unter
|
||
[`integrations/openclaw-athena-talk`](integrations/openclaw-athena-talk). Er
|
||
verbindet Mikrofon → Athena Whisper → normalen OpenClaw-Agenten → aktives
|
||
Athena-TTS, sodass Modell, Werkzeuge und Memory auch im Sprachmodus erhalten
|
||
bleiben. Die Installation landet in OpenClaws persistentem Datenverzeichnis
|
||
und bleibt deshalb bei normalen Container-Updates bestehen.
|
||
|
||
OpenClaw wird über den Provider **llama.cpp → Existing llama-server** mit
|
||
`http://192.168.1.212:8081/v1` verbunden. Der Router beantwortet sowohl
|
||
`/models` als auch `/v1/models` mit allen fünf virtuellen Profilen. Dadurch
|
||
erkennt OpenClaw die vollständige Auswahl automatisch, während Laden,
|
||
Entladen und Umschalten weiterhin ausschließlich der Athena Profile Router
|
||
übernimmt.
|
||
|
||
OpenClaws Memory-Suche verwendet den separaten CPU-Dienst
|
||
`mike-ai-embedding`. Dadurch bleiben die GPUs vollständig für Qwen, Vision
|
||
und TTS verfügbar. Die verbindliche Konfiguration, Prüfung und
|
||
Wiederherstellung stehen in [OpenClaw Memory](docs/OPENCLAW_MEMORY.md).
|
||
- Portainer: `https://192.168.1.212:9443`
|
||
- Hermes-Dashboard auf Unraid: `http://192.168.1.2:9119`
|
||
|
||
Die Adressen sind nur über die vorgesehenen privaten Netze erreichbar.
|
||
|
||
## Ausgegliederte MCPs
|
||
|
||
- [ARR-MCP](https://git.casaderoll.de/michael/arr-mcp)
|
||
- [Deemix-MCP](https://git.casaderoll.de/michael/Deemix-MCP)
|
||
- [Strato-MCP](https://git.casaderoll.de/michael/Strato-MCP)
|
||
|
||
Weitere produktive Container verwenden ihre jeweiligen Upstream-Images und
|
||
Unraid-DockerMan-Templates. Details stehen in
|
||
[docs/MCP_SERVERS.md](docs/MCP_SERVERS.md).
|
||
|
||
## Wiederherstellung
|
||
|
||
Der Sicherungsumfang und die Grenzen eines Neuaufbaus aus dem Repository stehen
|
||
in [docs/RECOVERY.md](docs/RECOVERY.md). Der vor dem Update gesicherte Live-Quellstand dient als Rückfallstand.
|
||
|
||
## Sicherheitsregeln
|
||
|
||
- **Wichtigste Regel:** Der Host steht physisch in einer anderen Stadt.
|
||
Er wird niemals heruntergefahren oder neu gestartet, und es wird keine
|
||
Aktion ausgeführt, die seine Erreichbarkeit gefährdet (Details:
|
||
[docs/REMOTE_HOST_RULES.md](docs/REMOTE_HOST_RULES.md)).
|
||
- `config/install.env` ist lokal, Modus 0600, und wird ignoriert.
|
||
- API-, Controller-, WebUI- und WireGuard-Schlüssel entstehen erst am Host.
|
||
- Docker-Zugriff ist auf Verwaltungsdienste begrenzt; unter anderem benötigen
|
||
Profile Controller, Portainer und Backup Zugriff auf den Docker-Socket.
|
||
- llama.cpp veröffentlicht weder Port noch WebUI.
|
||
- Ein Blackhole-Fallback verhindert Traffic-Leaks bei WireGuard-Ausfall.
|
||
- Das Uni-Netz und das Heimnetz dürfen diesen Host nicht als Transit benutzen.
|
||
|
||
## Verbindliche Dokumentation
|
||
|
||
- [ATHENA.md](ATHENA.md) – kurze Betriebsanleitung
|
||
- [docs/LIVE_STATE.md](docs/LIVE_STATE.md) – tatsächlich bereitgestellte Profile und Versionen
|
||
- [docs/CONTAINER_INVENTORY.md](docs/CONTAINER_INVENTORY.md) – vorhandene Container
|
||
- [docs/STANDARD_PROFILE_MATRIX.md](docs/STANDARD_PROFILE_MATRIX.md) – Repository-Matrix, einschließlich nicht installiertem beta1
|
||
- [docs/MCP_SERVERS.md](docs/MCP_SERVERS.md) – produktive Werkzeuge
|
||
- [docs/RECOVERY.md](docs/RECOVERY.md) – Backup und Neuaufbau
|
||
- [docs/REMOTE_HOST_RULES.md](docs/REMOTE_HOST_RULES.md) – Regeln für den Remote-Host
|
||
|
||
Git enthält keine Secrets, Chatdaten oder Modellgewichte.
|