Status — 2026-06-02¶
Snapshot live de l'état Praesenz / Léa. Mis à jour à chaque drift significatif (pas chaque commit).
Pour le détail tâches : voir TASKS.md. Pour les décisions : voir architecture/decisions/.
Briefing V3 Infomil (2026-05-29) : la topologie par site, le moteur de lip-sync, le budget de latence, le modèle de scale et le go-to-market multi-enseignes sont actés. Voir ADR 009–013.
Architecture¶
Architecture indexée architecture/ avec C4 model (Simon Brown) + axe parallèle per-stack.
| Stack | Statut | Hôte | Réf |
|---|---|---|---|
| 1A / Virbe Windows VM | Dev/QA opportuniste | uterrie (10.19.10.11) | architecture/stacks/stack-1a-virbe-windows/ |
| 1B / UE5 Linux containers | Dev/QA opportuniste, en cours | uterrie (10.19.10.11) | architecture/stacks/stack-1b-linux-containers/ |
| 2 / Multi-kiosk production | Cible, n'existe pas encore | TBD | architecture/stacks/stack-2-prod-future/ |
| 3 / Retail Media | Vision long terme | n/a | architecture/stacks/stack-3-retail-media/ |
| X | Pivot placeholder | n/a | architecture/stacks/stack-x/ |
1A et 1B sont des expériences parallèles testant deux directions opposées (cloud-Virbe vs local-first), pas deux phases séquentielles. Voir ADR 001 et crosscutting/stack-a-vs-b-comparison.md.
ADR (architecture decisions)¶
| # | Titre | Statut |
|---|---|---|
| 001 | Two parallel stacks (Windows VM vs Linux Containers) | Accepted |
| 002 | Local-first architecture (no cloud dependencies) | Accepted |
| 003 | Inverted magnet (le kiosk attire, ne hèle pas) | Accepted |
| 004 | Stack 1B local-first as Stack 2 prod target | Accepted |
| 005 | PIM-native architecture (agnostic of retailer SI) | Accepted |
| 006 | 3-tier data supply (OFF / Salsify / retailer) | Superseded by 013 |
| 007 | ESL broadcast as real-time price truth | Proposed |
| 008 | Pilot retailer N°1 / Picard | Accepted (extended by 012) |
| 009 | Per-site master + GPU-less thin workers | Accepted |
| 010 | NeuroSync lip-sync (replaces Audio2Face) | Accepted |
| 011 | Fleet central mini-HPC (> ~30 kiosks) | Accepted |
| 012 | Multi-enseigne go-to-market (Infomil lead) | Accepted |
| 013 | PIM source tiers extended (Akeneo + Equadis) | Accepted |
| 014 | In-store Phase 2 (RTX 4090 AI + GPU-render workers) | Accepted |
Topologie (3 tiers)¶
- Phase 1 — petit magasin (ADR-009) : 1 master GPU 16 GB VRAM (pipeline IA complet LLM+RAG+STT+TTS+NeuroSync+UE5, stack RKE2·Fleet·Harbor·Prometheus·Grafana, 3 avatars max) + 1 à 4 workers sans GPU (écran, micro/HP, capteur de passage, flux WebRTC depuis le master). Routeur 5G managé, LAN câblé, switch managé, UPS, patch panel. Full-local, WAN maintenance seulement.
- Phase 2 — magasin plus grand (ADR-014) : 1 GPU central RTX 4090 gère STT → LLM/RAG → TTS → NeuroSync lip-sync pour tous les workers ; chaque worker a un GPU classique et fait le rendering UE5 en local (audio+animation streamés sur le LAN, pas de pixel streaming). Le nombre d'avatars scale avec les workers.
- Fleet — >~30 kiosks (ADR-011) : central mini-HPC NVIDIA 48 GB, modèles lourds partagés.
Live snapshot (uterrie)¶
Lu depuis uterrie:/var/lib/praesenz/state.json (source de vérité, écrit par gpu-mode.sh).
| Champ | Valeur |
|---|---|
| Stack actif (GPU mode) | B (driver nvidia, audio snd_hda_intel) |
| VMs | win11-kiosk shut off / site-a-vm shut off / site-b-vm shut off |
Containers UE5 (u5-*) |
n/a (idle, pas démarrés) |
| Dernier refresh | 2026-05-16T02:37 |
Refresh sans muter : ssh tofix@uterrie 'sudo gpu-mode.sh status'.
Stack 1A / Virbe Windows VM (Pilot)¶
| Composant | Statut | Notes |
|---|---|---|
| EIB image (SL Micro 6.2) | Done | Auto-install USB, GPU passthrough, KubeVirt |
| Windows 11 VM (KubeVirt) | Done | Unattended install, RDP, GPU Code 43 fixé |
| Virbe Kiosk app | Done | Tourne sur node 248 (Stack A historique) |
| Rancher import | Done | Cluster visible dans Rancher |
| Directional audio | Research | Audfly Alpha-160 sélectionné |
Bascule : ssh tofix@uterrie 'sudo gpu-mode.sh stack-a' (GPU vfio-pci, Windows VM boot).
Stack 1B / UE5 Linux containers (en cours)¶
Roadmap détaillée : roadmaps/engineering.md.
Phase 1 / Avatar en container (current)¶
| Composant | Statut | Notes |
|---|---|---|
| UE5 5.5 built from source | Done | /mnt/build-data/ue5-build (32 cores Linux) |
| MetaHuman Léa (ex-"Gavin") | Done | /mnt/build-data/kiosk/ |
| Pixel Streaming WebRTC | Done | Visible dans le browser |
| Linux packaging (Shipping) | Done | Build/Linux/, 4.2 Go |
| Containerize Linux build (Podman + GPU CDI) | In flight | Dockerfile prêt, à builder + tester |
| Push image Harbor | Pending | Suit la containerization |
Phase 2 / Pipeline conversationnel¶
| Composant | Statut | Notes |
|---|---|---|
Orchestrator (FastAPI, /chat + /conversation WS) |
Done | |
| STT (speaches, OpenAI-compatible) | Validated | |
| LLM (Ollama qwen2.5:14b) | Validated | Sur Mac actuellement |
| TTS (Kokoro via speaches) | In flight | À valider end-to-end |
| RAG (Qdrant) | Pending | Ingestion docs sommelier persona |
| Wire orchestrator -> UE5 (WebSocket) | Pending | Bloquant pour démo end-to-end |
Phase 3 / Lip-sync + animations (pending)¶
| Composant | Statut | Notes |
|---|---|---|
| Moteur lip-sync : NeuroSync | Selected | Remplace Audio2Face (ADR-010), pas de NIM Nvidia |
| Intégration NeuroSync dans UE5 | Pending | |
| Tuning par persona (sommelier, fromager, traiteur, boucher) | Pending | |
| Wire TTS Kokoro -> NeuroSync -> blend shapes -> MetaHuman | Pending | Saut qualitatif "avatar plausible" |
| Idle animations (Mixamo) | Pending | Breathing, weight shift, head nod |
| Animation state machine | Pending | Idle / Listening / Thinking / Speaking |
Phase 4 / Production readiness (pending)¶
Helm chart validé sur RKE2, Fleet GitOps, DCGM monitoring, kiosk thin client SLE Micro + Chromium, latence end-to-end 1.0-1.8s (pipeline), NetworkPolicies, image versioning.
Phase 5 / Scale (pending)¶
Per-site : 1 master GPU 16 GB + workers sans GPU (ADR-009). Au-delà de ~30 kiosks : central mini-HPC NVIDIA 48 GB (12-15 avatars), edge workers (ADR-011). Multi-kiosk Elemental + Fleet, analytics pipeline, white-label.
Bloqueurs actifs¶
- Containerization UE5 (Phase 1) / Pixel Streaming validé en bare-metal, pas encore en container. Bloque tout le reste de la Phase 1B en GitOps.
- WebSocket orchestrator <-> UE5 (Phase 2) / pipeline conversationnel et avatar coexistent mais ne se parlent pas encore.
- Lip-sync NeuroSync (Phase 3) / moteur sélectionné (remplace Audio2Face), intégration UE5 + tuning par persona à faire. C'est le saut qualitatif "avatar plausible".
- Latence end-to-end / budget acté 1.0-1.8s, à mesurer en pipeline complet.
Documentation et briefings¶
| Surface | URL | Notes |
|---|---|---|
| Site doc live (Cloudflare) | https://praesenz-docs.cledorze.com | Public, NDA-safe |
| Site doc LAN | https://praesenz-docs.cledorze.lan | Interne |
| Repo source | http://gitea.cledorze.lan/praesenz/product | Privé, LAN-only |
| Briefing bundle portable (latest) | http://gitea.cledorze.lan/praesenz/product/releases | Auto-release HTML standalone, PDF watermarké via deploy/share/make-share.sh "<recipient>" |
CI/CD doc : push main / Gitea Actions / build MkDocs / publish + release share bundle (HTML toujours, PDF si Chrome dispo sur le runner).
Prochaines étapes (ordre suggéré)¶
- Containeriser UE5 Linux build et tester Pixel Streaming depuis le container, push Harbor
- Valider TTS Kokoro end-to-end (speaches)
- Wirer orchestrator -> UE5 via WebSocket
- Intégrer NeuroSync dans UE5 + tuning par persona
- Helm chart + Fleet GitOps pour déploiement RKE2