# Aktuelle Architektur ```mermaid flowchart LR C[Hermes Desktop / Web / Mobil] --> H[Hermes Agent
Unraid] H -->|OpenAI API| R[Profile Router
Athena :8081] R --> P[Profile Controller] P --> Q[genau ein llama.cpp-Profil
Qwen Fast / Medium / Large / Ultra / Uncensored] R --> I[FLUX.2 Klein 9B FP8 Beta
RTX 5080 Transformer] I --> E[Qwen3-8B NF4 Textencoder
RTX 3060 während Bildauftrag] R --> T[Qwen3-TTS RTX 3060
Normalisierungs- und Streaming-Gateway] R --> STT[Whisper.cpp ggml-small
CPU, lokale Spracherkennung] P --> SP[Exklusive Spezialworker
Musik / Trennung / Voice / RVC / 3D] SP --> TR[TRELLIS.2 4B Q8
trellis.cpp, RTX 5080] H --> U[MUA / Unraid MCP] H --> A[ARR-MCP] H --> D[Deemix-MCP] H --> N[Navidrome-MCP] H --> S[STRATO-MCP] H --> X[Nginx-Proxy-Manager-MCP] U --> MT[Media-Tools
ffmpeg / ffprobe / yt-dlp] W[WireGuard-Gateway
Athena] -->|DNS-Proxy| R W -->|DNS-Proxy :8099| B[Athena Dashboard
internes Frontend-Netz] W -->|DNS-Proxy :9443| PRT[Portainer
internes Frontend-Netz] W -->|DNS-Proxy :8013| TRUI[Trellis Studio
Bild zu GLB] W -->|DNS-Proxy| O[Athena Operator] K[Backup alle 5 Stunden] --> DATA[/data und /etc/mike-ai] ``` ## Verantwortung - **Unraid** hält Hermes, Chats, Skills, Fach-MCPs und deren Appdata. - **Athena** rechnet: Text, Bild und Sprache; Router und Dashboard koordinieren und beobachten die Inferenz. - **MUA** verwaltet Unraid. **Athena Operator** bleibt auf den Athena-Host begrenzt. - Der Router ist die einzige Modelladresse, die Hermes kennen muss. - GPU-intensive Spezialdienste sind gegenseitig exklusiv. Der Router speichert Modus und Rückkehrprofil; der Profile Controller startet nur eindeutig gelabelte Worker. - Dashboard und Portainer besitzen eigene Netzwerk-Namespaces. Das WireGuard-Gateway löst ihre stabilen Compose-Dienstnamen bei jeder Verbindung neu auf; seine konkrete Container-ID ist damit irrelevant. ## Dynamische Qwen-Profile Der Profile Router hält immer nur ein Qwen-Profil aktiv. Ein Wechsel lädt dasselbe 27B-Modell mit der zum Profil gehörenden GPU-Aufteilung und Kontextgröße: | Profil | Kontextfenster | | --- | ---: | | Fast | 76.800 Token | | Medium | 160.000 Token | | Large | 192.000 Token | | Ultra | 262.144 Token | | Uncensored | 80.000 Token | ## Exklusiver Bildmodus Text- und Bildinferenz teilen sich dieselben GPUs und laufen deshalb nicht gleichzeitig. Der Wechsel ist transaktional: 1. Router merkt sich das aktive Textprofil. 2. Profile Controller stoppt alle llama.cpp-Profile und Qwen3-TTS. 3. Bild-Worker lädt Qwen3-8B als NF4-Textencoder auf die RTX 3060 und den FLUX.2-Klein-9B-FP8-Transformer auf die RTX 5080. 4. Nach dem Prompt-Encoding werden die Embeddings zur RTX 5080 übertragen. 5. Vor dem VAE-Decoding werden Textencoder und Transformer freigegeben. 6. Der Worker wird gestoppt; anschließend starten Qwen3-TTS und das vorherige Textprofil wieder. Während der exklusiven Bildphase steht kein TTS bereit. Der Bild-Worker ist lazy und besitzt `restart: "no"`; im normalen Textbetrieb belegt er daher keinen VRAM. Container werden über eindeutige Docker-Labels gefunden, nicht über zufällige Container-IDs. Die visuelle Fassung liegt als `athena-architecture-map.png` neben dieser Datei. Eine zweite Detailkarte, `athena-gpu-allocation-map.png`, zeigt die profilabhängige Layer-Verteilung auf RTX 5080 und RTX 3060. Die PNG-Karten zeigen noch den Stand vor dem 9B-Bildpfad; die aktuelle textuelle Beschreibung in diesem Dokument ist verbindlich. ## TRELLIS.2 3D-Modus Der Modus `trellis` stoppt die anderen GPU-Worker und startet genau den mit `com.mike-ai.trellis-worker=trellis2-q8` markierten Container. trellis.cpp 0.6.0 sieht ausschließlich die Host-GPU 1, die RTX 5080. Q8-Gewichte liegen unter `/data/models/trellis2-q8`, Runtime und Ausgaben unter `/data/trellis-studio`. Die UI ist intern `trellis-studio:8080` und wird vom WireGuard-Gateway auf `192.168.1.212:8013` weitergeleitet. Sie erzeugt GLB; regulärer Qualitätsmodus ist 1024 Pixel. Die vollständigen Regeln für Erweiterungen, Rückbau und Fehlersuche stehen in [`../for_ki.md`](../for_ki.md).