From cb33a20694c1dee7971ba4e899cfe86951d48e43 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 5 Apr 2026 19:46:16 +0200 Subject: [PATCH] docs: update README with XTTS, auto-update, watchdog, TTS settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Architecture: Added XTTS v2 (Gaming-PC) and auto-update flow - Diagnostic: Thinking indicator, cancel button, TTS tab, voice cloning - App: Play button, chat search, auto-update, voice speed settings - RVS: Auto-update APK distribution over WebSocket - Watchdog: 2min warning → 5min doctor --fix → 8min container restart - Roadmap: Phase 1 fully completed, updated Phase 2+3 Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 135 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 114 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 28b2440..63f409e 100644 --- a/README.md +++ b/README.md @@ -29,11 +29,18 @@ ARIA hat zwei Rollen: ┌─────────────────────────────────────────────────────────┐ │ RVS — Rendezvous-Server │ │ Node.js WebSocket Relay (Docker, Rechenzentrum) │ -│ Reiner Relay — kennt keine Tokens, leitet durch │ +│ Relay + Auto-Update (APK-Verteilung) │ │ rvs/docker-compose.yml │ -└───────────────────────┬─────────────────────────────────┘ - │ WebSocket Tunnel - ▼ +└───────────┬───────────────────────────┬─────────────────┘ + │ WebSocket Tunnel │ WebSocket Tunnel + ▼ ▼ +┌───────────────────────────┐ +│ Gaming-PC (optional) │ +│ RTX 3060, Docker+WSL2 │ +│ XTTS v2 (natuerliche │ +│ Stimmen, Voice Cloning) │ +│ xtts/docker-compose.yml │ +└───────────────────────────┘ ┌─────────────────────────────────────────────────────────┐ │ ARIA-VM (Proxmox, Debian 13) — ARIAs Wohnung │ │ Basissystem + Docker. Rest richtet ARIA selbst ein. │ @@ -66,13 +73,14 @@ ARIA hat zwei Rollen: └─────────────────────────────────────────────────────────┘ ``` -**Drei separate Deployments:** +**Vier separate Deployments:** | Was | Wo | Wie | |-----|----|-----| | RVS | Rechenzentrum | `cd rvs && docker compose up -d` | | ARIA Core | Debian 13 VM | `docker compose up -d && ./aria-setup.sh` | -| Android App | Stefans Handy | APK installieren, QR-Code scannen | +| XTTS v2 (optional) | Gaming-PC (GPU) | `cd xtts && docker compose up -d` | +| Android App | Stefans Handy | APK installieren (Auto-Update via RVS) | --- @@ -314,13 +322,19 @@ Erreichbar unter `http://:3001`. Teilt das Netzwerk mit aria-core. ### Features - **Status-Karten**: Gateway (Handshake), RVS (TLS-Fallback), Proxy (Auth) -- **Chat-Test**: Nachrichten direkt an ARIA senden (Gateway oder via RVS) +- **Chat-Test**: Nachrichten direkt an ARIA senden (Gateway oder via RVS), Vollbild-Modus +- **"ARIA denkt..." Indikator**: Zeigt live was ARIA gerade tut (Denken, Tool, Schreiben) +- **Abbrechen-Button**: Stoppt laufende Anfragen + doctor --fix - **Session-Verwaltung**: Sessions auflisten, wechseln, erstellen, loeschen - **Chat-History**: Wird beim Laden und Session-Wechsel angezeigt (read-only aus JSONL) +- **TTS-Diagnose Tab**: Stimmen testen, Status pruefen, Fehler anzeigen +- **Einstellungen**: TTS-Engine (Piper/XTTS), Stimmen, Speed, Highlight-Trigger, Betriebsmodi +- **XTTS Voice Cloning**: Audio-Samples hochladen, eigene Stimme erstellen - **Claude Login**: Browser-Terminal zum Einloggen in den Proxy - **Core Terminal**: Shell in aria-core (openclaw CLI) -- **Container-Logs**: Echtzeit-Logs aller Container (gefiltert nach Tab) +- **Container-Logs**: Echtzeit-Logs aller Container (gefiltert nach Tab + Pipeline) - **SSH Terminal**: Direkter SSH-Zugang zu aria-wohnung +- **Watchdog**: Erkennt stuck Runs (2min Warnung → 5min doctor --fix → 8min Container-Restart) ### Session-Verwaltung @@ -340,10 +354,13 @@ API-Endpoint fuer andere Services: `GET http://localhost:3001/api/session` - **Sprachaufnahme**: Push-to-Talk (halten) oder Tap-to-Talk (tippen, Auto-Stop bei Stille) - **VAD (Voice Activity Detection)**: Erkennt 1.8s Stille und stoppt automatisch - **STT (Speech-to-Text)**: Audio wird in der Bridge per Whisper transkribiert, transkribierter Text erscheint im Chat -- **Wake Word**: Toggle-Button (Ohr-Symbol) aktiviert kontinuierliches Mikrofon-Monitoring -- **TTS-Wiedergabe**: ARIA antwortet per Lautsprecher (Ramona/Thorsten) -- **Datei- und Bild-Upload**: Bilder inline im Chat, Dateien mit Icon + Name + Groesse -- **Anhaenge**: Bridge speichert Dateien in Shared Volume (`/shared/uploads/`), ARIA kann darauf zugreifen +- **TTS-Wiedergabe**: ARIA antwortet per Lautsprecher (Piper oder XTTS v2) +- **Play-Button**: Jede ARIA-Nachricht kann nochmal vorgelesen werden +- **Chat-Suche**: Lupe in der Statusleiste filtert Nachrichten live +- **Datei- und Bild-Upload**: Bilder inline im Chat (Vollbild-Tap), Dateien mit Icon + Name + Groesse +- **Anhaenge**: Bridge speichert in Shared Volume, ARIA kann darauf zugreifen, Re-Download ueber RVS +- **Einstellungen**: TTS Engine, Stimmen, Speed pro Stimme, Speicherort, Auto-Download, GPS +- **Auto-Update**: Prueft beim Start auf neue Version, Download + Installation ueber RVS - GPS-Position (optional) - QR-Code Scanner fuer Token-Pairing @@ -374,19 +391,31 @@ cd android ``` Das Script macht alles in einem Schritt: -1. Fragt Gitea-Kennwort ab (wird nirgends gespeichert) -2. Baut die Release-APK -3. Erstellt Git Tag + pusht -4. Erstellt Gitea Release -5. Laedt APK als Asset hoch +1. Setzt Versionsnummern (package.json, build.gradle, SettingsScreen) +2. Fragt Gitea-Kennwort ab (wird nirgends gespeichert) +3. Baut die Release-APK +4. Git Commit + Tag + Push +5. Erstellt Gitea Release + laedt APK hoch +6. Kopiert APK auf RVS-Server (Auto-Update, optional) Voraussetzung in `.env`: ```bash GITEA_URL=https://gitea.hackersoft.de GITEA_REPO=stefan/aria-agent GITEA_USER=stefan +RVS_UPDATE_HOST=root@aria-rvs # Optional: fuer Auto-Update ``` +### Auto-Update + +Die App prueft beim Start ob eine neuere Version auf dem RVS liegt. +Der Update-Flow: +1. `./release.sh 0.0.3.0` → APK wird auf RVS kopiert (via scp) +2. Alternativ: `git pull` auf dem RVS-Server → APK in `rvs/updates/` +3. App sendet `update_check` mit aktueller Version +4. RVS vergleicht → sendet `update_available` +5. App zeigt Dialog → Download ueber WebSocket → Installation + ### Audio-Pipeline (Spracheingabe) ``` @@ -454,6 +483,11 @@ aria-data/ │ ├── aria.env ← Voice Bridge Config │ └── diag-state/ ← Diagnostic persistenter State │ +│ (im Shared Volume /shared/config/): +│ ├── voice_config.json ← TTS-Einstellungen (Stimme, Speed, Engine) +│ ├── highlight_triggers.json ← Highlight-Trigger Woerter +│ └── chat_backup.jsonl ← Nachrichten-Backup (on-the-fly) +│ └── ssh/ ← SSH Keys fuer VM-Zugriff ├── id_ed25519 ← Private Key (generiert von aria-setup.sh) ├── id_ed25519.pub ← Public Key (muss in VM authorized_keys!) @@ -469,7 +503,7 @@ tar -czf aria-backup-$(date +%Y%m%d).tar.gz aria-data/ ## RVS — Rendezvous-Server -Laeuft im Rechenzentrum. Reiner Relay — kennt keine Tokens, speichert nichts. +Laeuft im Rechenzentrum. WebSocket Relay + Auto-Update Server. Wer sich mit dem gleichen Token verbindet, landet im gleichen Room. ```bash @@ -477,10 +511,60 @@ cd rvs docker compose up -d ``` +**Features:** +- WebSocket Relay (alle Message-Types: chat, audio, file, config, xtts, update, etc.) +- Auto-Update: APK-Verteilung an Apps ueber WebSocket +- Heartbeat + tote Verbindungen aufraeumen + +**Auto-Update APK bereitstellen:** +```bash +# APK in updates/ legen (manuell oder via release.sh) +cp ARIA-v0.0.3.0.apk ~/ARIA-AGENT/rvs/updates/ +# RVS erkennt die Version aus dem Dateinamen +``` + **Multi-Instanz:** Mehrere ARIA-VMs koennen denselben RVS nutzen — jede mit eigenem Token. --- +## XTTS v2 — GPU TTS Server (optional) + +Laeuft auf einem separaten Rechner mit NVIDIA GPU (z.B. Gaming-PC mit RTX 3060). +Verbindet sich ueber RVS mit der ARIA-Infrastruktur — kein VPN noetig. + +### Voraussetzungen + +- Docker Desktop mit WSL2 (Windows) oder Docker mit NVIDIA Runtime (Linux) +- NVIDIA Container Toolkit +- GPU mit mindestens 4GB VRAM (6GB+ empfohlen) + +### Setup + +```bash +cd xtts +cp .env.example .env +# .env mit RVS-Verbindungsdaten fuellen (gleiche wie auf der ARIA-VM) +docker compose up -d +# Erster Start laedt ~2GB Model herunter +``` + +### Features + +- **Natuerliche Stimmen**: Deutlich bessere Qualitaet als Piper +- **Voice Cloning**: Eigene Stimme mit 6-10s Audio-Sample +- **16 Sprachen**: Deutsch, Englisch, Franzoesisch, etc. +- **RVS-Integration**: Bridge waehlt automatisch XTTS wenn verfuegbar + +### Stimme klonen + +In der Diagnostic unter Einstellungen → Sprachausgabe → XTTS: +1. TTS Engine auf "XTTS v2" stellen +2. "Stimme klonen" → Audio-Dateien hochladen (WAV/MP3, min. 6-10s) +3. Name vergeben → "Stimme erstellen" +4. Neue Stimme in der Auswahl verfuegbar + +--- + ## Docker Volumes | Volume | Pfad im Container | Zweck | @@ -491,7 +575,7 @@ docker compose up -d | `./aria-data/ssh` (bind) | `/root/.ssh`, `/home/node/.ssh` | SSH Keys | | `./aria-data/brain` (bind) | `/home/node/.openclaw/workspace/memory` | Gedaechtnis | | `./aria-data/skills` (bind) | `/home/node/.openclaw/workspace/skills` | Skills | -| `aria-shared` | `/shared` (Core + Bridge) | Datei-Austausch (Uploads von App) | +| `aria-shared` | `/shared` (Core + Bridge + Proxy + Diag) | Datei-Austausch, Config, Uploads | | `./aria-data/config/diag-state` (bind) | `/data` (Diagnostic) | Persistenter State (aktive Session) | --- @@ -569,8 +653,15 @@ docker exec aria-core ssh aria-wohnung hostname - [x] Android App (Chat + Sprache + Uploads) - [x] Tool-Permissions (alle Tools freigeschaltet) - [x] SSH-Zugriff auf VM (aria-wohnung) -- [x] Diagnostic Web-UI +- [x] Diagnostic Web-UI + Einstellungen - [x] Session-Verwaltung + Chat-History +- [x] Stimmen-Einstellungen (Ramona/Thorsten, Speed, Highlight-Trigger) +- [x] TTS satzweise fuer lange Texte +- [x] Datei-/Bild-Upload mit Shared Volume +- [x] Watchdog (stuck Run Erkennung + Auto-Fix + Container-Restart) +- [x] Auto-Update System (APK via RVS) +- [x] Chat-Suche, Play-Button, Abbrechen-Button +- [x] XTTS v2 Integration (GPU, Voice Cloning, remote ueber RVS) ### Phase 2 — ARIA wird produktiv @@ -578,7 +669,8 @@ docker exec aria-core ssh aria-wohnung hostname - [ ] Gitea-Integration - [ ] VM einrichten (Desktop, Browser, Tools) - [ ] Heartbeat (periodische Selbst-Checks) -- [ ] Lokales LLM als Wächter (Triage vor Claude-Call) +- [ ] Lokales LLM als Waechter (Triage vor Claude-Call) +- [ ] Auto-Compacting / Memory-Verwaltung ### Phase 3 — Erweiterungen @@ -586,3 +678,4 @@ docker exec aria-core ssh aria-wohnung hostname - [ ] Desktop Client (Tauri) - [ ] bKVM Remote IT-Support - [ ] Porcupine Wake Word (on-device "ARIA" in der App) +- [ ] Claude Vision direkt (Bildanalyse ohne Dateipfad-Umweg)