mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 22:14:43 +02:00
* feat(stt): auto-start via `stt --install-service` (phase 6) Ajoute `stt --install-service` / `--uninstall-service` : génère et active un service systemd --user (lié à graphical-session.target) qui lance le HUD + voix à l'ouverture de session. Le kiosk existant (ui.kiosk) fournit l'« écran Jarvis ». - cli : _service_unit (génération du unit, fonction pure testable), _cmd_install_service (écrit le unit + import-environment DISPLAY/WAYLAND + daemon-reload/enable/start), _cmd_uninstall_service. - Docs : admin/ia/stt.md (phase 6 → ✅, section Auto-start + caveat DISPLAY), stt/README. - Bump client 0.2.1 → 0.3.0. Phase 6 de la roadmap STT. Reste : test sur poste, outils Hermes (7). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa * feat(stt): app de bureau (fenêtre type Discord) + auto-update Rend STT lançable comme une application de bureau et ajoute la mise à jour intégrée. - Mode fenêtre « app » : _open_browser ouvre le HUD en fenêtre chromeless (--app=, type Discord) en plus du kiosk plein écran ; support Brave ajouté. Sélection via --window {app,kiosk,none} ou [ui].window_mode. - stt --install-desktop / --uninstall-desktop : entrée .desktop + icône (stt/hud/icon.svg, aussi favicon du HUD) → STT dans le menu/dock, lance --window app. - stt --update : pipx reinstall depuis la source git (via clé SSH), affiche « ancienne → nouvelle » ; stt --version. - Docs (admin/ia/stt.md, stt/README) + config (window_mode) + bump 0.3.0 → 0.4.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa * fix(stt): détection navigateur cross-distro (AlmaLinux/Fedora + Debian/Ubuntu) _open_browser tente les binaires natifs (rpm + deb : brave-browser / chromium / chromium-browser / google-chrome…) puis Flatpak (com.brave.Browser, org.chromium.Chromium, com.google.Chrome…), sinon repli sur le navigateur par défaut. systemd --user, lanceurs .desktop et pipx sont déjà identiques sur les deux familles. Doc : note de compatibilité distros. Bump 0.4.0 → 0.4.1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa * docs(stt): journal 2026-06-18 + PROGRESS + ligne STT du CLAUDE.md - progress/2026-06-18.md : HUD avancé, auto-start, app de bureau, auto-update, cross-distro - PROGRESS.md : entrée du jour - CLAUDE.md : ligne STT enrichie (HUD, auto-start, app de bureau, auto-update) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa * feat(stt): fenêtre app autonome (profil + WM class dédiés, hors session Brave) Le mode app s'attachait à la session Brave de l'utilisateur (même profil/icône) → « ça sent le Brave ». On lance désormais une instance séparée : --class=STT-Funk + --user-data-dir dédié (~/.local/share/stt/app-profile), et le .desktop déclare StartupWMClass=STT-Funk → fenêtre autonome avec sa propre icône de barre des tâches. (Flatpak : --class seul, sandbox.) Une vraie fenêtre native (pywebview) reste une option ultérieure. Bump 0.4.1 → 0.4.2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa --------- Co-authored-by: Claude <noreply@anthropic.com>
4 KiB
4 KiB
STT — Assistant vocal "Jarvis" de Funk
Assistant vocal type Jarvis pour le homelab Funk, en architecture client-serveur :
server/— STT-server : orchestrateur AI dans le cluster k8s. Reçoit les requêtes des clients et route l'inférence vers LiteLLM (Qwen3 / Claude). Mémoire centralisée (futur).client/— commandesttinstallable sur le poste : capture micro, STT (Whisper), TTS (Piper), HUD graphique. Envoie le texte au serveur (URL paramétrable).
📐 Conception complète :
admin/ia/stt.md.
LAN / *.lab.local
┌─ POSTE ──────────┐ ┌─ CLUSTER k8s (ns ai) ──────────────┐
│ client `stt` │ HTTP │ STT-server (Deployment) │
│ • micro + Whisper│ ─────▶ │ POST /v1/ask → LiteLLM │
│ • Piper (TTS) │ ◀───── │ (→ s01 192.168.10.1:4000) │
│ • HUD web │ reply │ Ingress: stt.lab.local │
└───────────────────┘ └──────────────┬──────────────────────┘
▼
LiteLLM :4000 (s01)
→ Qwen3 (g01) / Claude
Client — installation (poste)
pipx install "git+ssh://git@github.com/Alkatrazz24/Funk-lab.git@<branche>#subdirectory=stt/client"
stt --setup # génère ~/.config/stt/stt.toml (dont [server] url)
stt --text # chat texte simple (sans micro ni HUD) — idéal pour tester
stt # voix + HUD ; dis "Ok Hermès …"
stt --model claude # choisir le modèle : hermes (défaut) | claude | qwen | opus
stt --install-service # auto-start au login (systemd --user, kiosk « écran Jarvis »)
stt --install-desktop # ajoute STT au menu des applis → fenêtre dédiée (type Discord)
stt --window app # ouvre le HUD en fenêtre app (sinon : kiosk plein écran)
stt --update # met à jour depuis git (plus de désinstall/réinstall manuel)
En mode texte : commandes /model <nom>, /models, /quit.
Prérequis voix : micro, Piper + voix dans ~/.local/share/piper/, aplay (alsa-utils).
Serveur — déploiement (cluster)
- Image : le workflow
.github/workflows/build-stt-server.yml(push touchantstt/server/) build l'image taguéesha-<commit>et, surmain, met à jour le manifest avec ce tag (commitci(stt): image → …). Plus de:latestni derollout restartmanuel. - ArgoCD :
k8s/apps-of-apps/apps/stt.yaml→ déploiek8s/apps/stt/depuismain. Le bump du tag par la CI suffit à déclencher un nouveau pod (déploiement déterministe). - Le serveur joint LiteLLM (s01, hors cluster) en IP directe
192.168.10.1:4000(même pattern qu'open-webui — pas de Service/Endpoints intermédiaire). - Image privée : le Deployment référence un
imagePullSecretghcr-pull. À créer une fois dans le nsai(même pratique queghostfolio-secret, non versionné) :kubectl create secret docker-registry ghcr-pull \ --docker-server=ghcr.io \ --docker-username=Alkatrazz24 \ --docker-password=<PAT_ghcr_read:packages> \ -n ai
Structure
stt/
├── client/ # commande `stt` (pipx) — voix + HUD
│ ├── pyproject.toml
│ ├── config/ # stt.example.toml + thèmes/avatars/voix
│ └── stt/ # cli, config, voice/, api.py (→ serveur), ui/ (HUD), hud/
└── server/ # STT-server (conteneur) — API + orchestration AI
├── pyproject.toml
├── Dockerfile
├── memory/ # mémoire distillée GitHub (futur, server-side)
└── stt_server/ # app.py (FastAPI), brain.py (→ LiteLLM), config.py