Praesenz / Léa / Architecture¶
Architecture index. Follows the C4 model (Simon Brown) + a parallel per-stack split.
How to read this¶
Two orthogonal axes:
Axis 1 / Zoom level (C4)¶
| Level | Zoom | Where to find |
|---|---|---|
| L1 Context | Praesenz in its ecosystem (brands, retailers, PIM, GS1, ESL, customer) | context/ecosystem.md |
| L2 Containers | Internal blocks (Léa avatar, knowledge layer, orchestrator, WhatsApp bot...) | stacks/<stack>/containers.mmd |
| L3 Components | Detail of a container | stacks/<stack>/components-*.mmd |
| L4 Code | (rarely useful) | n/a |
Axis 2 / Stack / phase¶
| Stack | Status | Host | Link |
|---|---|---|---|
| 1A / Virbe Windows VM | Dev/QA opportunistic | uterrie (10.19.10.11) | stacks/stack-1a-virbe-windows/README.md |
| 1B / Linux containers UE5 | Dev/QA opportunistic | rancher2 (.249) | stacks/stack-1b-linux-containers/README.md |
| 2 / Multi-kiosk production | Target shape decided (V3), not built | per-site master → central HPC | stacks/stack-2-prod-future/README.md |
| 3 / Retail Media | Long-term vision | (n/a) | stacks/stack-3-retail-media/README.md |
| X | Pivot placeholder | n/a | stacks/stack-x/README.md |
Key point on Stack 1A vs 1B¶
These are not two sequential phases. They are two parallel experiments testing two opposite technical directions: - 1A = cloud-Virbe, fast integration, external dependency - 1B = local-first, full control, internal complexity
The goal is to decide Stack 2 prod based on what each pilot teaches. See crosscutting/stack-a-vs-b-comparison.md.
Legacy design docs¶
The folder architecture/stack-b/ contains the historical Stack B design docs (8 files migrated from the stack-b-design repo). They remain the most detailed design reference for Stack 1B today and should be consulted alongside stacks/stack-1b-linux-containers/.
ADR / architecture decisions¶
See decisions/003-magnet-inverse.md and following. Each ADR references the relevant stacks in its stacks: front-matter.
| # | Title | Status |
|---|---|---|
| 001 | Two parallel stacks (Windows VM vs Linux Containers) | Accepted |
| 002 | Local-first architecture (no cloud dependencies) | Accepted |
| 003 | Inverted magnet / the kiosk doesn't hail, it attracts | 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 | Two-phase scale (central mini-HPC beyond ~30 kiosks) | Accepted |
| 012 | Multi-enseigne go-to-market (Infomil lead) | Accepted |
| 013 | PIM source tiers extended (OFF → Salsify+Akeneo → Equadis+SI) | Accepted |
| 014 | In-store Phase 2 / RTX 4090 AI + GPU-rendering workers | Accepted |
Quick glossary¶
| Term | Meaning |
|---|---|
| PIM | Product Information Management. Brand-side product reference store (Salsify, Akeneo, Equadis). |
| ESL | Electronic Shelf Label (VusionGroup, Hanshow). |
| GS1 Digital Link | QR code that encodes EAN + enriched URL. EU 2027 standard. |
| OFF | Open Food Facts. Free public product database. |
| Kiosk state machine | Sleep / Wake / Display / Engage / Convert. See Golden Circle §3.1. |
| Inverted magnet | The customer approaches, the kiosk does not push. Product principle. |