Files
AI-Profile-Router/README.md
T

163 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-4B für Textbilder und Referenzbild-Bearbeitung auf der RTX 5080
- Qwen3-TTS 1.7B auf der RTX 3060 mit Piper als CPU-Fallback
- Whisper.cpp `large-v3-turbo` auf der CPU für lokale deutsche Spracherkennung
- Live-Dashboard mit 21 Tagen Detailhistorie 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.
## 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.
## 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.
## Endpunkte
- Router: `http://192.168.1.212:8081/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.
- 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).
## 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.
- Nur der kleine Profile Controller sieht 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/STANDARD_PROFILE_MATRIX.md](docs/STANDARD_PROFILE_MATRIX.md) – Profile
- [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.