196 lines
8.3 KiB
Markdown
196 lines
8.3 KiB
Markdown
# Athena AI
|
||
|
||
Athena ist die lokale Inferenzmaschine. Der reproduzierbare Docker-Stack stellt
|
||
Qwen über eine kleine OpenAI-kompatible Router-API bereit und übernimmt lokale
|
||
Bild- und Sprachausgabe. **Hermes und die Fach-MCPs laufen auf Unraid.**
|
||
|
||
## 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 für Textbilder und Referenzbild-Bearbeitung:
|
||
Transformer auf RTX 5080, Qwen3-8B-NF4-Textencoder auf RTX 3060
|
||
- Qwen3-TTS 1.7B auf der RTX 3060 mit Piper als CPU-Fallback
|
||
- Whisper.cpp `ggml-small` auf der CPU für lokale deutsche Spracherkennung
|
||
- Live-Dashboard mit 21 Tagen Detailhistorie auf Port 8099
|
||
- Dashboard-Umschaltung zwischen LLM-Betrieb, ACE-Step-Musikstudio,
|
||
BS-RoFormer-Stimmtrennung, OmniVoice und X-VC
|
||
- 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.
|
||
|
||
## Installation – ein Befehl
|
||
|
||
```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.
|
||
FLUX.2 Klein 9B ist bei Hugging Face zugriffsbeschränkt. Vor der Installation
|
||
müssen die Bedingungen beider BFL-Repositories akzeptiert und ein Token in der
|
||
unter `HF_TOKEN_FILE` konfigurierten, nur für root lesbaren Datei abgelegt sein.
|
||
Der Token wird ausschließlich als Read-only-Datei in den Download-Container
|
||
eingehängt und weder in `stack.env` noch in Git kopiert.
|
||
|
||
## 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
|
||
|
||
Produktiv laufen alle Profile mit einem Slot. Damit erhält ein einzelner Chat
|
||
den vollständigen Profilkontext und die bewährte Ausgabegeschwindigkeit. Die
|
||
Einstellung liegt auf Athena in `/etc/mike-ai/stack.env`:
|
||
|
||
```bash
|
||
MEDIUM_PARALLEL_SLOTS=1
|
||
```
|
||
|
||
Für einen späteren erneuten Paralleltest genügt es, den Wert auf `2` zu setzen
|
||
und ausschließlich das aktuell betroffene Profil neu zu erstellen:
|
||
|
||
```bash
|
||
sed -i 's/^MEDIUM_PARALLEL_SLOTS=.*/MEDIUM_PARALLEL_SLOTS=2/' /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
|
||
```
|
||
|
||
Zurück zum stabilen Ein-Slot-Betrieb geht es mit denselben zwei Befehlen und
|
||
`MEDIUM_PARALLEL_SLOTS=1`. `--kv-unified` ist bereits im Compose-Stack gesetzt.
|
||
Zwei Slots wurden direkt am Router erfolgreich getestet; Hermes verwaltete zwei
|
||
gleichzeitig aktive Chats jedoch nicht zuverlässig. Deshalb bleibt ein Slot der
|
||
Standard, bis Hermes' Sitzungsfehler behoben ist.
|
||
|
||
### Bildgenerierung mit FLUX.2 Klein 9B FP8 Beta
|
||
|
||
Ein Bildauftrag verwendet beide GPUs exklusiv. Der Profile Controller stoppt
|
||
zuerst das aktive llama.cpp-Profil und Qwen3-TTS. Anschließend läuft der
|
||
FP8-Transformer auf der RTX 5080 und der in NF4 geladene Qwen3-8B-Textencoder
|
||
auf der RTX 3060. Vor dem VAE-Decoding werden Transformer und Textencoder
|
||
freigegeben. Nach dem Bildauftrag stoppt der Router den Bild-Worker und stellt
|
||
Qwen3-TTS sowie das zuvor aktive Textprofil automatisch wieder her. Piper
|
||
bleibt währenddessen als CPU-Fallback verfügbar.
|
||
|
||
Die Beta ist derzeit bewusst auf `1024x1024`, vier Schritte, Guidance `1.0`,
|
||
einen parallelen Auftrag und maximal vier lokale Referenzbilder begrenzt.
|
||
Details, Installation, Prüfung und Rollback stehen in
|
||
[docs/FLUX_9B_BETA.md](docs/FLUX_9B_BETA.md).
|
||
|
||
## Endpunkte
|
||
|
||
- Router: `http://192.168.1.212:8081/v1`
|
||
- Athena-Dashboard: `http://192.168.1.212:8099`
|
||
- Musikstudio, Original UI (stabil): `http://192.168.1.212:7862`
|
||
- Musikstudio, Community UI (experimentell): `http://192.168.1.212:7861`
|
||
- Spuren trennen (BS-RoFormer + Demucs, 2/4/6 Stems): `http://192.168.1.212:8007`
|
||
- Voice Studio (OmniVoice, Text zu Stimme): `http://192.168.1.212:8008`
|
||
- Voice Changer (X-VC, Audio zu Audio): `http://192.168.1.212:8009`
|
||
|
||
Der Betriebsmodus lässt sich dort direkt umschalten. In Hermes funktionieren
|
||
außerdem `/athena music`, `/athena stems`, `/athena voice`,
|
||
`/athena voicechange`, `/athena llm` und `/athena status`; Details stehen in
|
||
[docs/OPERATING_MODES.md](docs/OPERATING_MODES.md).
|
||
|
||
Der Router stellt Sprache OpenAI-kompatibel bereit: Sprachausgabe über
|
||
`/v1/audio/speech`, natives Qwen-PCM-Streaming über
|
||
`/v1/audio/speech/pcm-stream` 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.
|
||
|
||
Für Hermes liegt unter `integrations/hermes-qwen3-stream` ein optionales,
|
||
persistentes Backend-Plugin. Es nutzt den nativen PCM-Strom und verkürzt den
|
||
Beginn der Sprachausgabe, ohne den Modellrouter oder die Textprofile zu ändern.
|
||
Bildgenerierung läuft über `/v1/images/generations`; Hermes verwendet dafür den
|
||
persistenten Benutzer-Provider `athena-local` mit dem Modellnamen
|
||
`FLUX.2-klein-9B-fp8-beta`. Seine versionierte Quelle und Installationshinweise
|
||
liegen unter
|
||
[`integrations/hermes-athena-image`](integrations/hermes-athena-image).
|
||
- 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
|
||
|
||
Nach einer frischen Debian-Installation und erneut eingehängtem `/data`:
|
||
|
||
```bash
|
||
sudo ./install.sh --config /root/mike-ai-install.env
|
||
sudo ./restore.sh --check /data/docker-backups/athena-latest.tar.gz
|
||
sudo ./restore.sh /data/docker-backups/athena-latest.tar.gz
|
||
sudo ./smoke-test.sh
|
||
```
|
||
|
||
Der genaue Sicherungsumfang steht in [docs/RECOVERY.md](docs/RECOVERY.md).
|
||
|
||
## Verbindliche Dokumentation
|
||
|
||
- [ATHENA.md](ATHENA.md) – kurze Betriebsanleitung
|
||
- [docs/STANDARD_PROFILE_MATRIX.md](docs/STANDARD_PROFILE_MATRIX.md) – Profile
|
||
- [docs/CONTAINER_INVENTORY.md](docs/CONTAINER_INVENTORY.md) – alle Container, Modelle und Aufgaben
|
||
- [docs/TESTED_MODELS.md](docs/TESTED_MODELS.md) – zentrale Testhistorie und Sperrliste gegen Doppeltests
|
||
- [docs/MCP_SERVERS.md](docs/MCP_SERVERS.md) – produktive Werkzeuge
|
||
- [docs/RECOVERY.md](docs/RECOVERY.md) – Backup und Neuaufbau
|
||
- [docs/FLUX_9B_BETA.md](docs/FLUX_9B_BETA.md) – 9B-Bildpfad, Test und Rollback
|
||
|
||
Git enthält keine Secrets, Chatdaten oder Modellgewichte.
|