ZIA Hall - CyberMind-FR/secubox-deb GitHub Wiki
ZIA Hall — POC ARM64
Design de référence — v0.1 · 30 août 2026 · SecuBox-Deb / SBXOS
Suivi : issue #1245 · design visuel :
zia-hall.html· maquette cardlet Chat :zia-chat-cardlet.html
ZIA est l'IA locale d'AletheiaVox / SBXOS : l'interface humaine du bus d'objets du Hall, connectée en ARM64, avec délégation vers les VHOST et recours remote optionnel.
Principe directeur
L'IA ne possède pas les données : elle interprète et orchestre les objets déjà exposés par SecuBox. Le Hall fournit le contexte, le bus reste la source de vérité, et chaque service conserve son autonomie.
Cible POC : valider sur MOCHAbin / Linux ARM64 une conversation locale courte, la recherche d'objets du Hall et une délégation explicite vers un service spécialisé. Les performances seront mesurées sur le matériel réel plutôt que supposées.
Trois niveaux
| Niveau | Rôle | Porte |
|---|---|---|
| 1 · ZIA Hall Lite 🦊 | Toujours locale | Bus + objets + médias |
| 2 · ZIA VHOST / Full 🦝 | Spécialisée par service | RAG + outils du service |
| 3 · Remote / Cloud 🐻 | Escalade contrôlée (optionnel) | Modèle plus puissant · mTLS/JWT |
- Lite — chat, classification d'intention, reformulation, petits résumés, appels d'outils, recherche d'objets, aide contextuelle. Contexte court et borné.
- VHOST/Full — instance facultative par service ; plus de contexte, index RAG, outils propres.
- Remote — dernier recours, désactivé par défaut ou soumis à politique ; seul le contexte nécessaire est transmis. Le 100 % local reste possible.
La séparation évite qu'un gros modèle devienne à la fois moteur de chat, moteur de recherche, ACL, indexeur et passerelle réseau.
Flux d'une requête
- Hall — message + session
- Policy — scope, droits, remote autorisé ?
- ZIA Lite — intention + choix d'outil
- Bus — objets autorisés uniquement (ACL appliquées)
- ZIA Lite — réponse + références
- Routeur — VHOST puis remote si nécessaire
- Hall — texte + cardlets / actions
Exemple : « trouve la dernière vidéo sur le WAF ». ZIA appelle le bus, qui retourne les objets PeerTube visibles ; le Hall affiche la réponse et la cardlet vidéo. Le modèle n'a jamais eu à connaître l'API interne de PeerTube.
Contrat ZIA / bus d'objets
Le LLM n'accède jamais aux bases ni aux VHOST. Le bus applique authentification, droits et filtrage avant de retourner un objet.
{
"id": "radio:item:123",
"type": "media.audio",
"service": "radio",
"title": "Émission du jour",
"summary": "…",
"uri": "sbx://radio/item/123",
"visibility": "guest|registered|member|admin",
"actions": ["open", "play", "discuss"]
}
Outils POC (lecture d'abord) : hall.search_objects() · hall.get_object() ·
hall.list_recent() · hall.open() · hall.delegate(). Les outils d'écriture viendront
après validation du modèle de permissions.
Runtime ARM64 & choix du modèle
llama.cpp avec un modèle GGUF quantifié : exécution CPU ARM64, contrôle des threads, du contexte et de la mémoire. Le modèle final est choisi après benchmark sur la MOCHAbin.
| Profil | Ordre de grandeur | Usage POC | Priorité |
|---|---|---|---|
| Ultra-lite | ~0.5–1.5B · Q4 | intent, aide, outils, résumé | prioritaire |
| Lite+ | ~1.5–3B · Q4 | QA / RAG plus confortable | à tester |
| Full local | > 3B | raisonnement plus riche | non prioritaire |
| Remote | externe | cas difficiles | optionnel |
Candidats : petites familles Qwen, Llama/TinyLlama, autres GGUF. Évaluer surtout le français, les tool calls, la qualité en contexte court, la latence sur le SoC réel.
# à benchmarker sur la MOCHAbin réelle
./llama-cli -m /data/models/model.gguf -t 4 -c 2048 -n 128 \
-p "Tu es ZIA, assistant local du Hall. Réponds en une phrase."
# mesurer : chargement, RSS, tokens/s (prompt+génération), CPU, °C, 1er token, qualité (30 Q)
Sécurité & souveraineté
Le LLM n'est jamais une autorité. Les ACL vivent hors modèle ; les appels d'outils sont validés par schéma, liste blanche et permissions. Les contenus récupérés sont traités comme des données, jamais comme des instructions. Remote : politique explicite, rédaction des secrets, audit, timeout, budget, circuit breaker, fallback local.
Piliers : Local First · Privacy by Design · Modulaire · Ouvert & interopérable.
POC exécutable
| Étape | Livrable | Succès |
|---|---|---|
| P0 | llama.cpp ARM64 + GGUF | RAM / CPU / tokens·s mesurés |
| P1 | /chat + 3 outils |
tool routing correct |
| P2 | 20–50 objets réels | QA sans inventer d'objet |
| P3 | Cardlet Chat SBXOS | texte + ouverture sbx:// |
| P4 | délégation VHOST | bascule explicite |
| P5 | remote optionnel | politique + fallback local |
Interfaces minimales : POST /v1/chat, GET /health, GET /metrics. /chat renvoie
texte, objets référencés, actions et information de délégation.
Structure de code suggérée
secubox-zia/
daemon/ # API locale (/v1/chat, /health, /metrics)
runtime/ # llama.cpp
bus/ # client bus d'objets
tools/ # schémas + validation
policy/ # ACL / remote / budgets
rag/ # optionnel
adapters/ # PeerTube, Nextcloud, BBS…
web/ # cardlet Hall (Chat)
tests/
packaging/
Definition of Done
Le POC est validé lorsque la MOCHAbin fait tourner la ZIA locale de façon stable, répond aux demandes simples, retrouve les objets sans contourner les ACL, affiche leurs actions dans SBXOS et délègue proprement ce qu'elle ne sait pas traiter.
Décision : architecture cohérente avec Hall/SBXOS — IA locale très légère comme interface du bus, intelligence spécialisée dans les VHOST, remote seulement comme extension. On peut commencer minuscule sans enfermer l'architecture.
FAQ
ZIA connaît-elle mes données ? Non. Elle ne mémorise ni Nextcloud, ni PeerTube, ni la Radio dans ses poids. Elle reçoit un contexte court et appelle des outils déclarés. Les données restent dans les services ; le bus les expose sous ACL.
Est-ce que ça marche sans internet ? Oui. Les niveaux 1 (Lite) et 2 (VHOST) sont 100 % locaux. Le niveau 3 (remote) est désactivé par défaut et n'est utilisé que sous politique explicite.
Quel modèle ? À choisir après benchmark sur la MOCHAbin (P0). On vise d'abord un GGUF ultra-lite (~0.5–1.5B Q4) pour l'intention/l'aide/les outils. Tant qu'aucun modèle n'est chargé, ZIA répond via un répondeur heuristique qui appelle quand même le bus — donc « pas d'objet inventé ».
ZIA peut-elle modifier mes fichiers / poster à ma place ?
Pas au POC : les outils sont en lecture d'abord (search_objects, get_object,
list_recent, open, delegate). L'écriture n'arrive qu'après validation du modèle de
permissions.
Peut-elle contourner les droits d'un service ? Non. Le LLM n'accède jamais aux bases ni aux VHOST. Le bus applique authentification, droits et filtrage avant de retourner un objet. Le LLM n'est jamais une autorité.
Un contenu récupéré peut-il « donner des ordres » à ZIA (prompt injection) ? Les contenus récupérés sont traités comme des données, jamais comme des instructions. Les appels d'outils sont validés par schéma et liste blanche.
Pourquoi séparer Lite / VHOST / Remote ? Pour éviter qu'un gros modèle devienne à la fois moteur de chat, moteur de recherche, ACL, indexeur et passerelle réseau. Chaque étage a un rôle net ; on peut commencer minuscule.
Comment ZIA « ouvre » un résultat dans le Hall ?
Chaque objet porte une URI sbx://service/type/id et ses actions. Le cardlet Chat les rend
comme de vraies cardlets cliquables — la lecture/ouverture passe par les mécanismes SBXOS
existants (viewer, embed), pas par le modèle.
Et la vie privée ? Local First, Privacy by Design : traitement local priorisé, aucune donnée sensible envoyée, contrôle d'accès fin (rôles/ACL), audit et logs locaux.
Voir aussi : Cartes-du-Hall · SBX-OS-FR · MODULES-FR · Architecture