Commit Graph
100 Commits
Author SHA1 Message Date
Mikei386 933d2a6e7d Fix OpenWebUI GitHub MCP session expiry 2026-08-23 18:00:04 +02:00
Mikei386 80b73fe136 Make recovery reference self-updating 2026-08-23 17:34:49 +02:00
Mikei386 3dbb66037d Add self-maintaining Athena platform context MCP 2026-08-23 17:31:05 +02:00
Mikei386 64d36ad838 Document Qwen operator context and safety model 2026-08-23 17:05:02 +02:00
Mikei386 825f4ed469 Add official read-only GitHub MCP 2026-08-23 16:55:40 +02:00
Mikei386 111ccaa543 Document verified data-disk recovery kit 2026-08-23 16:22:05 +02:00
Mikei386 c226af7bc7 Add self-contained data-disk reinstall kit 2026-08-23 16:20:37 +02:00
Mikei386 ddae3e9bad Record verified Athena recovery point 2026-08-23 16:14:49 +02:00
Mikei386 404073340c Make recovery archive validation pipe-safe 2026-08-23 16:04:38 +02:00
Mikei386 c229ee3685 Fix recovery database archive name 2026-08-23 16:00:30 +02:00
Mikei386 5a51940e60 Keep OpenWebUI online during recovery backups 2026-08-23 15:54:54 +02:00
Mikei386 3d528f2716 Add encrypted bare-metal recovery workflow 2026-08-23 15:48:41 +02:00
Mikei386 e5dffbc2ba Fix Navidrome schemas for llama.cpp 2026-08-23 15:29:46 +02:00
Mikei386 a8a12d2ec1 Document optional Last.fm discovery 2026-08-23 15:25:32 +02:00
Mikei386 9ccb23cc5e Add isolated Navidrome MCP service 2026-08-23 15:06:32 +02:00
Mikei386 fea4a83582 Clarify Sonarr search download behavior 2026-08-23 14:50:08 +02:00
Mikei386 09634a27f9 Add approved Sonarr release grabs 2026-08-23 14:38:42 +02:00
Mikei386 76bfc65978 Stabilize German TTS sentence chunking 2026-08-23 14:14:46 +02:00
Mikei386 06e1a7029a Normalize wind speed units for German TTS 2026-08-23 13:58:04 +02:00
Mikei386 c60031c957 Stop tool status audio before final speech 2026-08-23 13:56:18 +02:00
Mikei386 727827ac32 Add spoken tool progress acknowledgements 2026-08-23 13:54:39 +02:00
Mikei386 4ae8ab948e Keep German domain endings natural in TTS 2026-08-23 13:33:20 +02:00
Mikei386 d726afff70 Normalize structured German TTS input 2026-08-23 13:30:46 +02:00
Mikei386 a067b79ed2 Stabilize German XTTS speech output 2026-08-23 13:16:17 +02:00
Mikei386 f90fc93f9c Add XTTS primary voice with Piper fallback 2026-08-23 12:22:59 +02:00
Mikei386 16a6288a4d Add WireGuard-only SSH recovery path 2026-08-23 08:55:06 +02:00
Mikei386 0887e4ba90 Pin Athena LAN interface by permanent MAC 2026-08-23 07:04:48 +02:00
Mikei386 2ef894160a Add final Qwen3.8 runtime and uncensored profile 2026-08-23 00:10:53 +02:00
Mikei386 1a9d94d22f docs: plan guarded Home Assistant admin MCP 2026-08-22 22:22:35 +02:00
Mikei386 ced8d36a0c Add native chat background and guarded HA YAML access 2026-08-22 22:12:14 +02:00
Mikei386 b338c91878 fix: expose aurora theme in chat workspace 2026-08-22 21:46:28 +02:00
Mikei386 ec84d0d2e8 Require current tool evidence in model prompts 2026-08-22 21:23:48 +02:00
Mikei386 af6abf54ae Add SSH-only emergency access fallback 2026-08-22 21:08:58 +02:00
Mikei386 e7b6739d85 Document successful VPN reboot recovery 2026-08-22 20:50:46 +02:00
Mikei386 0e5876f1a9 Add fail-closed WireGuard container gateway 2026-08-22 20:48:49 +02:00
Mikei386 2f3bdde8b0 Ensure primary network starts at boot 2026-08-22 19:29:32 +02:00
Mikei386 ce5bbc2e69 Add unattended host recovery safeguards 2026-08-22 19:27:34 +02:00
Mikei386 2eb99c643c Return generated images to OpenWebUI as base64 2026-08-22 18:56:12 +02:00
Mikei386 b70382e29f Expose FLUX image generation in all profiles 2026-08-22 18:46:51 +02:00
Mikei386 952331cdc7 Keep OpenWebUI provider credentials synchronized 2026-08-22 18:45:13 +02:00
Mikei386 6f30ec4972 Use English system prompts for MikeAI profiles 2026-08-22 18:39:35 +02:00
Mikei386 5366c4ca51 Use OpenWebUI image model compatibility alias 2026-08-22 18:32:42 +02:00
Mikei386 81cacf4b4b Configure OpenWebUI for FLUX hot swap 2026-08-22 18:21:39 +02:00
Mikei386 eb03bc3d42 Release FLUX CUDA context immediately 2026-08-22 18:15:28 +02:00
Mikei386 69f18f42d1 Wait for FLUX worker readiness 2026-08-22 18:12:48 +02:00
Mikei386 b00e882063 Fit FLUX hot swap within 16 GiB VRAM 2026-08-22 18:10:07 +02:00
Mikei386 364ac6b83e Add venv support to FLUX worker image 2026-08-22 17:45:50 +02:00
Mikei386 facc224c1b Install FLUX dependencies in isolated venv 2026-08-22 17:45:27 +02:00
Mikei386 7ac93befc4 Add RTX 5080 FLUX hot-swap worker 2026-08-22 17:40:32 +02:00
Mikei386 8267a85a96 Offload vision projector to RTX 3060 2026-08-22 17:19:56 +02:00
Mikei386 7513a0c912 Guide profiles to verify uncertain facts on web 2026-08-22 12:07:34 +02:00
Mikei386 a9c7a414a0 Enable local web MCP for all profiles 2026-08-22 11:54:50 +02:00
Mikei386 d86727b231 Fix web MCP DNS and crawler runtime 2026-08-22 11:49:47 +02:00
Mikei386 95ed583a66 Provision OpenWebUI workspace model presets 2026-08-22 11:37:30 +02:00
Mikei386 41b9c17f0f Define four-profile production matrix with Medium default 2026-08-22 11:30:38 +02:00
Mikei386 977f8f5c76 Validate Pure quant for 256K Ultra profile 2026-08-22 11:01:13 +02:00
Mikei386 f52cf14069 Add tested 256K Ultra profile 2026-08-22 10:44:14 +02:00
Mikei386 a194a2941d Improve MCP tool selection guidance 2026-08-21 20:34:40 +02:00
Mikei386 6f14f62dd1 Persist Piper settings in restored OpenWebUI 2026-08-21 17:27:26 +02:00
Mikei386 a5cf11582a Add reproducible Piper TTS service 2026-08-21 17:02:32 +02:00
Mikei386 53dfffc289 Reveal animated Open WebUI background 2026-08-21 16:38:34 +02:00
Mikei386 c0cbeb0f15 Add global Midnight Aurora Open WebUI theme 2026-08-21 15:28:39 +02:00
Mikei386 6edf1fe462 Add reviewed OpenWebUI quick actions 2026-08-21 15:23:28 +02:00
Mikei386 16c83ca7d6 Add OpenWebUI stability and privacy guards 2026-08-21 15:12:00 +02:00
Mikei386 422c4fac9e Disable OpenWebUI follow-up generation 2026-08-21 14:59:42 +02:00
Mikei386 9a40758c7f Make OpenWebUI reasoning filter order reproducible 2026-08-21 14:56:39 +02:00
Mikei386 bf90698b99 Document Athena rebuild and clarify tool volume ownership 2026-08-21 14:35:52 +02:00
Mikei386 934a4d8ced Restore OpenWebUI with its matching image 2026-08-21 14:28:44 +02:00
Mikei386 0c21aed7af Automate reference host data restore 2026-08-21 14:11:45 +02:00
Mikei386 a2c2ee7570 Make model permissions usable by inference 2026-08-21 14:07:09 +02:00
Mikei386 bea144c91e Make fresh router startup reliable 2026-08-21 14:03:32 +02:00
Mikei386 868b89be1d Allow router to initialize fresh volume ownership 2026-08-21 14:00:40 +02:00
Mikei386 16be3e606f Start web search only from tool stack 2026-08-21 13:57:01 +02:00
Mikei386 ccf0efd059 Avoid redundant TinySearch browser install 2026-08-21 13:55:07 +02:00
Mikei386 29d65dc223 Use readable Docker build progress 2026-08-21 13:39:06 +02:00
Mikei386 db6e93296d Fix CUDA driver linking in llama.cpp image 2026-08-21 13:38:28 +02:00
Mikei386 d754d35229 Heal legacy NVIDIA keyring permissions 2026-08-21 13:22:46 +02:00
Mikei386 e9c91ea4aa Allow apt to read NVIDIA toolkit keyring 2026-08-21 13:22:12 +02:00
Mikei386 42e2aad3a6 Use embedded MTP tensor for IQ4-MIX profiles 2026-08-21 13:18:45 +02:00
Mikei386 057920b941 Install current NVIDIA driver from official repository 2026-08-21 13:12:37 +02:00
Mikei386 4089bb46e6 Add approval-bound Sonarr episode search 2026-08-21 10:57:33 +02:00
Mikei386 f0d552ef58 Containerize MCP tool services 2026-08-20 23:54:02 +02:00
Mikei386 3ab9628088 Document centralized isolated MCP tool plane 2026-08-20 21:42:40 +02:00
Mikei386 e83c0e2c70 Add reproducible Docker and WireGuard host bootstrap 2026-08-20 21:23:16 +02:00
Mikei386 cb07779f5a Replace vision hotswap with native multimodal profiles 2026-08-20 14:24:56 +02:00
Mikei386 8a45a0d851 Optimize Qwen fast profile for vision and 76K context 2026-08-20 14:11:25 +02:00
Mikei386 fd4a3055e8 Rebuild profile router as secure recoverable v2 2026-08-20 13:41:00 +02:00
Mikei386 bdd6c08643 Document complete recovery requirements and reference state 2026-08-20 13:05:27 +02:00
Mikei386 0e4a9de5ba Expand router into reproducible local AI platform 2026-08-20 12:56:53 +02:00
Mikei386 fedcb0b6d3 Cleanup: letzter Kokoro-Reference entfernt 2026-08-19 22:02:59 +02:00
Mikei386 800d83a91b Cleanup: alte Kokoro-Dateien entfernt 2026-08-19 22:02:49 +02:00
Mikei386 d399d2b4f7 TTS: Kokoro → XTTS-v2 (CPU-only, Claribel Dervla)
- Neues xtts_worker.py: Coqui XTTS-v2, HTTP-API auf Port 8085
- Router: TTS_WORKER_URL → 8085, TTS_MODEL → xtts-v2, TTS_VOICES → claribel
- deploy: mike-ai-xtts.service, install.sh + deploy.sh aktualisiert
- Tests: 54/54 bestanden (mock_tts_worker + test_local.sh auf XTTS umgestellt)
- README: TTS-Section auf XTTS-v2 aktualisiert
- Kokoro-Service gestoppt und deaktiviert (Dateien bleiben als Backup)
2026-08-19 22:01:58 +02:00
Mikei386 ed471196d4 router: HTTP/1.1 chunked Transfer-Encoding-Unterstützung
- Zentrale _read_body() Helper für Content-Length und chunked encoding
- _read_chunked_body(): hex Chunk-Größen, Chunk Extensions, 0-Chunk,
  Trailer, MAX_UPLOAD_SIZE (50 MB Default)
- Malformed chunked encoding → HTTP 400
- _transcribe(), _speech(), _image_generate(), _forward() nutzen Helper
- Temporäres STT-DEBUG-Logging entfernt
- 16 Regressionstests (dev/test_chunked.py):
  Content-Length, chunked, Multi-Chunk, Boundary über Chunk-Grenzen,
  Chunk Extensions, 0-Chunk mit Trailer, malformed Chunk Size,
  Uploadgrößenlimit, Open-WebUI-artiger WebM-Request
2026-08-19 16:31:22 +02:00
Mikei386 e81f2ab515 router: Multipart-Parser auf email.parser.BytesParser umgestellt
- Robustes MIME-Parsing mit Standardbibliothek (email.parser.BytesParser)
- Handhabt quoted und unquoted Boundaries (Open-WebUI-Kompatibilität)
- Beliebiges Feldreihenfolge, zusätzliche Header, binäre Payloads
- Regressionstests: dev/test_multipart.py (8 Tests)
- Fix für Open-WebUI HTTP 400 bei POST /v1/audio/transcriptions
2026-08-19 14:37:24 +02:00
Mikei386 51ef07c874 router: deutsche Spracherkennung mit whisper.cpp (CPU-only)
- STT-Worker (stt_worker.py): langlebiger HTTP-Service auf Port 8084
  - whisper-cli als Subprozess (CPU-only, 8 Threads)
  - Audio-Vorbereitung via ffmpeg (WebM/Opus/M4A → 16 kHz WAV)
  - Nativ: WAV, MP3, OGG, FLAC
  - Health-Endpunkt: GET /status
  - Transkription: POST /transcribe (Multipart-Form-Data)

- Router-Integration:
  - POST /v1/audio/transcriptions (OpenAI-kompatibel)
  - GET /v1/audio/models (whisper-1, kokoro-german)
  - GET /v1/audio/voices (martin, victoria)
  - /status mit stt-Section
  - model=whisper-1 akzeptiert
  - response_format: json, verbose_json

- systemd-Service: mike-ai-whisper.service
  - Boot-Start, Restart on failure, journald
  - CPU-only, kein GPU-Lock

- Deploy-Dateien aktualisiert (deploy.sh, install.sh)
- Mock-STT-Worker für lokale Tests (dev/mock_stt_worker.py)
- Tests ergänzt: STT Status, WAV, language=de, unbekanntes Modell,
  Worker down, Recovery, Audio-Modelle, Audio-Voices,
  STT+Qwen parallel, STT+TTS parallel
- README.md: STT-Section mit Endpunkten, Benchmarks, Doku

Benchmarks (CPU-only, 8 Threads):
  7.3 s Audio → 8.9 s (RTF 1.22×)
  30 s Audio → 16.8 s (RTF 0.56×)
  50 s Audio → 18.5 s (RTF 0.37×)
  RAM: ~1.7 GB (Modell), Worker: ~20 MB
2026-08-19 13:53:22 +02:00
Mikei386 ff064685ce router: TTS auf offiziellen Kikiri-Deutsche-Pfad umgestellt
Ersetzt die alte Implementierung (kokoro 0.7.16 + espeak.EspeakG2P)
durch den offiziellen Kikiri-Deutsche-Inferenzpfad:

- semidark/kokoro-Fork (0.9.4) mit lang_code='d'
- semidark/misaki-Fork (0.9.4) mit misaki.de.DEG2P
  (Text-Normalisierung + espeak-ng + Aussprache-Overrides)
- Verbessertes Chunking (Split an Satzgrenzen, 400 Zeichen)
- repo_id='hexgrad/Kokoro-82M' für KModel/KPipeline

Änderungen:
- router/tts_worker.py: KModel/KPipeline API aktualisiert,
  Monkey-Patching entfernt, Docstring aktualisiert
- deploy/install.sh: semidark-Forks installieren (misaki[de],
  kokoro --no-deps, spacy für misaki.en-Import)
- README.md: G2P-Pfad, Chunking, Python-Pakete, Python-3.13-Hinweis

Getestet: 43/43 lokale Tests, E2E auf Zielsystem (WAV/MP3,
LAN-Zugriff, parallele Qwen/TTS-Operation, Chat intakt).
2026-08-19 13:09:29 +02:00
Mikei386 6db10fbc3f router: deutsche Sprachausgabe mit Kokoro-82M (CPU-only)
Fügt einen OpenAI-kompatiblen TTS-Endpunkt POST /v1/audio/speech hinzu.
Die Synthese läuft in einem separaten, langlebigen Worker
(mike-ai-kokoro.service) mit eigenem Venv (CPU-only torch) und hält die
Modelle dauerhaft im RAM (niedrige Warm-Start-Latenz).

- Zwei deutsche Stimmen: kikiri-german-martin, kikiri-german-victoria
  (Apache 2.0, je ~327 MB) unter /opt/mike-ai/models/kokoro/
- Deutsche G2P über espeak-ng (phonemizer), kein spacy/thinc 9.x nötig
  (kokoro mit --no-deps + misaki ohne [en], Python 3.13-kompatibel)
- Formate: mp3 (Default), wav, flac, pcm; speed 0.5-2.0
- /status um tts.*-Felder erweitert (reachable, ready, voices, ...)
- TTS ohne GPU-Lock: blockiert weder Qwen/llama.cpp noch FLUX
- systemd-Unit mike-ai-kokoro.service (Start beim Boot)
- install.sh/deploy.sh um Kokoro-Venv + Modell-Download erweitert
- Mock-TTS-Worker + 11 TTS-Tests (insgesamt 43, alle bestanden)
- Hörproben (je ~40 s) + Benchmark (RTF ~0.23, ~4.3x Echtzeit)

Kein Push – erst nach User-Freigabe.
2026-08-19 12:05:09 +02:00
Mikei386 fdaaef98cc router: Metadaten pro Bild speichern (Sidecar-JSON)
- prompt, seed, width, height, size, steps, guidance, quality, seconds,
  model, created
- /images zeigt die Metadaten (falls vorhanden)
2026-08-19 09:01:34 +02:00
Mikei386 7c5bbe2ffb router: Bildgenerierung mit FLUX.2 [klein] 4B Base (GPU-Hotswap)
- POST /v1/images/generations (OpenAI-kompatibel, prompt/size/n/seed/quality)
- quality: standard=30 Steps (Default), high=50 Steps
- Größen: 1024x1024, 1536x1024, 1024x1536, 1920x1088, 1088x1920
- GPU-Hotswap: Qwen stoppen -> FLUX laden -> Bild -> FLUX entladen -> Qwen
  wiederherstellen (exakt vorheriges Profil)
- Zentrales GPU/Modell-Lock (Profilwechsel und Bild teilen sich das Lock)
- Chat-Requests warten während Bild-Job (kein 502), Timeout CHAT_WAIT_TIMEOUT
- Robuste Recovery: try/finally, Worker-Beendigung, VRAM-Check, Qwen-Readiness
- /status: image.phase, image.worker, image.model_loaded, qwen.available,
  qwen.active_chats
- GET /images, GET /images/<datei> (validiert, nur images/-Verzeichnis)
- image_worker.py: FLUX-Worker (eigener Prozess, JSON-Protokoll, bf16 +
  enable_model_cpu_offload)
- deploy: venv (torch/diffusers/transformers/accelerate), Modell-Download,
  Image-Dir, systemd-Unit mit Image-Umgebungsvariablen
- dev: Mock-Worker, fake-systemctl, Benchmarks (GPU-Resident, Offload, Steps,
  Quality-Compare), 32 lokale Tests
- README: Bildgenerierung, Hotswap, Recovery, Benchmarks (RTX 5080),
  Python-Pakete

Benchmarks (RTX 5080, 16 GB, CPU-Offload):
- 512x512 / 10 Steps: ~9.3 s
- 1024x1024 / 30 Steps: ~31.3 s
- 1024x1024 / 50 Steps: ~45.3 s
- 1920x1088 / 50 Steps: ~91 s
- Peak-VRAM: ~8.4-8.9 GB
- Hotswap-Gesamtzeit: ~41-42 s (1024x1024 / 30 Steps)
2026-08-19 08:51:37 +02:00
Mikei386 c5d92acd93 router: Readiness-Check wartet auf geladenes Modell (ctx-match) 2026-08-18 22:58:50 +02:00