Architecture
Comment la pile PNeX s'emboîte
PNeX est un seul workspace Rust. Les mêmes types (pnex-core) compilent nativement
pour le serveur et en WebAssembly pour l'app web — le contrat client-serveur est
vérifié à la compilation. Le même code d'interface est aussi livré en apps natives
pour Linux, Windows et Android.
Explorer l'architecture
Cliquez un bloc pour le détail, suivez une requête de bout en bout, ou allumez chaque niveau de sécurité.
Composants
| Composant | Technologie | Rôle |
|---|---|---|
| Edge TLS | nginx | HTTPS (443) pour navigateurs et apps natives, CA locale ou Let's Encrypt ; point d'entrée devices dédié (4443) en TLS mutuel, certificat client par appareil |
| Serveur | Loco (Axum, SeaORM) | API REST + WebSocket, workers, service de build firmware |
| Apps web, desktop & mobile | Dioxus (Rust) | Tous les écrans depuis un seul code : web (WebAssembly), desktop Linux (x86_64, ARM64), desktop Windows (x86_64), Android |
| Runtime de flows | EdgeLink vendored, binaire Rust headless | Exécute les flows visuels, supervisé et hot-reloadé par le serveur |
| Télémétrie | OpenObserve | Métriques et logs, isolation par organisation |
| Cache live | Valkey | Lectures instantanées de la dernière valeur, présence des appareils, mémoire partagée des flows |
| Identité | Rauthy | OIDC, provisioning automatique (JIT) |
| Stockage objet | Tout stockage S3 compatible (RustFS fourni) | Artefacts firmware, médiathèque, enregistrements caméra, documents |
| Vision & parole | Modèles ONNX exécutés en Rust (tract), sherpa-onnx / whisper.cpp | Détection et suivi d’objets, entraînement de détecteurs personnalisés, transcription ; aucun Python nulle part |
| Thermophysique | CoolProp (C++ vendored), in-process | Propriétés de fluides dans les nœuds et diagrammes |
Trois briques de données
PNeX s'appuie sur exactement trois briques de données : PostgreSQL (configuration, assets et file de jobs), OpenObserve (séries temporelles et logs) et Valkey (dernières valeurs live). La file et les workflows sont couverts par les workers Postgres et le runtime de flows. PostgreSQL est la seule base de données prise en charge.
Les fichiers (images firmware, médias, enregistrements, documents) vont dans un stockage objet compatible S3 : les installeurs fournissent RustFS, et tout autre service compatible S3 convient. L’ancien mode sur disque local est en cours de retrait : démarrez les nouvelles installations sur S3.
Séparation serveur / edge
Le serveur stocke, compile le firmware, caste les configurations — et n'écrit jamais un pin de sa propre initiative. Aujourd’hui les appareils tournent en mode connecté : les flows les pilotent via le serveur. Les appareils autonomes — config castée sur l’appareil, régulation locale qui survit aux coupures serveur ou internet — arrivent, suivis d’un mesh appareil-à-appareil. Voir flows.
Agents edge
Les ordinateurs et Raspberry Pi rejoignent PNeX comme agents edge, avec le même
modèle que les cartes : à l'enrôlement, l'agent reçoit un certificat client (les
précédents sont révoqués) et le nom du point d'entrée devices ; il s'y connecte en
https uniquement, en TLS mutuel (rustls), puis ouvre le même lien Noise. Après une
mise à jour au-delà de la 0.1.0-beta.7, ré-enrôlez chaque agent.

