Produit : IA USB HomeChat (Assistant IA Souverain & Analyse Documentaire RAG 100% Hors-Ligne)
Éditeur : DIIAGMA LIMITED (Dublin, Ireland)
Niveau d'Étanchéité Visé : Circuit Fermé / Boucle Locale 127.0.0.1 Exclusive (Air-Gapped)
Accessibilité & Ergonomie : UI/UX 100% bilingue (Français / Anglais) · Moteur d'inférence multilingue (Français, Anglais, Espagnol, Allemand)
Chat_usb.db.| Composant Matériel / Système | Spécification Minimale Obligatoire | Recommandation Optimale |
|---|---|---|
| Système d'Exploitation | Microsoft Windows 11 (64-bit) | Windows 11 Pro / Enterprise (64-bit) avec BitLocker actif |
| Mémoire Vive (RAM) | 16 Go de RAM | 32 Go de RAM ou plus (DDR4/DDR5) |
| Jeu d'instructions CPU | Support AVX2 (Intel Core 4e gen+ / AMD Zen+) | CPU 8 cœurs récents avec instructions AVX2 / AVX-512 |
| Stockage / I/O | Clé USB 3.0+ Chiffrée (>500 Mo/s R/W) ou SSD Local | SSD NVMe interne PCIe 4.0 (>2000 Mo/s) |
| Accélération Graphique | Processeur CPU Multi-Cœurs (Inférence CPU) | GPU Dédié ou eGPU (NVIDIA RTX, AMD Radeon, Intel Arc) compatible Vulkan / DirectX 12 |
L'ensemble des processus s'exécute strictement sur la boucle locale (Loopback Interface 127.0.0.1). Aucun port n'est ouvert sur les interfaces réseau externes (LAN/WAN/Wi-Fi).
[ Navigateur Web Client ] (Port éphémère local)
│
│ HTTP (127.0.0.1:8088) — Interface Utilisateur & Router API Node.js
▼
[ Serveur Node.js Embarqué ] (node.exe — Liaison stricte 127.0.0.1)
│
│ HTTP Inférence (127.0.0.1:8087) — Protocole API OpenAI Local
▼
[ Moteur d'Inférence C++ ] (llama-server.exe — Liaison stricte 127.0.0.1)
│
│ (Poids des modèles .gguf en lecture seule — Zéro apprentissage)
▼
[ ❌ AUCUNE CONNEXION SORTANTE — 0 OCTET TRANSMIS VERS INTERNET ]
| Service | Exécutable | Interface d'Écoute (Binding) | Port | Exposition Réseau Externe |
|---|---|---|---|---|
| Serveur Web UI & API REST | node.exe | 127.0.0.1 (Localhost) | 8088 | ❌ Nulle (Refus des connexions réseau distantes) |
| Moteur Inférence LLM (Vulkan/CPU) | llama-server.exe | 127.0.0.1 (Localhost) | 8087 | ❌ Nulle (Liaison exclusive loopback) |
| Extracteur Documentaire | kreuzberg.exe | Ligne de commande locale (CLI) | — | ❌ Nulle (Processus enfant local sans écoute port) |
| Télémétrie / Analytics | Aucun | Aucune | — | ❌ Aucun composant de traçage intégré |
Chat_usb.db)Chat_usb.db) en mode WAL stocke localement l'historique et offre une purge atomique à la demande (suppression d'un message, d'une discussion ou purge complète en 1 clic sans copie résiduelle).
| Nom de Table | Rôle & Données Stockées | Protection & Cycle de Vie |
|---|---|---|
conversations | Identifiants de discussion, titres, horodatages, statut épinglé | Contrôle total utilisateur (CRUD) |
messages | Historique des questions/réponses échangées avec l'IA | Suppression granulaire atomique & cascade |
messages_fts | Index virtuel FTS5 pour recherche instantanée BM25 | Synchronisé en temps réel par déclencheurs SQLite |
conversation_documents | Métadonnées des fichiers analysés (nom, taille, nombre de chunks) | Suppression en 1 clic |
doc_chunks_fts | Index virtuel FTS5 des extraits documentaires découpés (RAG) | Découpage avec overlap 150-200 car., purge à la demande |
license | Clé de licence cryptographique asymétrique (ECDSA P-256) | Vérification locale sans serveur de validation |
fingerprints | Empreinte matérielle anonyme déterministe (SMBIOS UUID) | Aucune donnée nominative collectée |
settings | Préférences d'interface, sélection de modèle IA et options d'affichage | Paramètres techniques locaux |
www/ avec décodage sécurisé et vérification startsWith(wwwDir + path.sep) (rejet en 403 Forbidden).L'équipe de sécurité informatique de l'entreprise peut valider l'absence de flux sortants et l'intégrité matérielle en exécutant les commandes suivantes :
Get-NetTCPConnection | Where-Object { $_.LocalPort -in 8087, 8088 } | Select-Object LocalAddress, LocalPort, State, OwningProcess
# Résultat attendu : LocalAddress = 127.0.0.1 pour tous les ports d'écoute.
.\nodejs\node.exe -e "const { db } = require('./nodejs/lib/db.js'); console.log(db.prepare('SELECT name FROM sqlite_master WHERE type=\'table\'').all());"