Aller au contenu principal

Nouveautés de la version 1.0

Cette page résume la version 1.0.0 de la Navin Platform : l'API Control Plane, ses workers, le portail, les manifestes de déploiement et les paquets OS. Version des paquets : 1.0.0 (os/navin-platform/VERSION, os/navin-manager/VERSION, os/navin-manager-agent/VERSION) ; version du chart Helm : 1.0.0 (deploy/helm/enterprise-ai/Chart.yaml).

Documents liés :

Nouvelles fonctions​

Installation et distribution​

  • Paquets OS pour la plateforme (navin-platform), la console du Navin Manager (navin-manager) et l'agent de nœud (navin-manager-agent, Python et Go statique) : DEB (Ubuntu 24.04), RPM (famille RHEL 9 ; l'agent dès RHEL 8) et pacman (Arch Linux). La plateforme tourne en unités systemd durcies regroupées par navin-platform.target, avec un PostgreSQL local configuré par navin-platform-db local et la CLI navin-platform (migrate, status, check, version).
  • Installateur guidé navin-install : contrôles d'abord (preflight), mode standalone ou cluster, reprise possible, avec des archives hors ligne par famille de systèmes (navin-install-<version>-<famille>.tar.gz).
  • Dépôts de paquets signés pour apt, dnf et pacman (os/repo.sh --sign), et navinctl sur chaque hôte (status, restart, logs, db status, check).
  • Chart Helm enterprise-ai avec trois profils : values-prod.yaml, values-ha.yaml, values-onprem-gpu.yaml.
  • GitOps avec un ApplicationSet Argo CD en quatre couches (infra, data, platform, apps), chaque chart tiers épinglé à une version exacte, et le module Terraform platform-bootstrap pour le socle du cluster.
  • Bundle de version signé et reproductible avec SBOM, signatures Cosign, verdict Trivy et preuve hors ligne (tools/release/airgap-check.sh).
  • Développement local : make install, make start et un jeu de cibles make <service>-* par service de la pile Docker Compose.

Identité, accès et gouvernance​

  • Authentification unique avec Keycloak (OpenID Connect, code d'autorisation avec PKCE), LDAP ou Active Directory fédéré dans Keycloak, administrateurs donnés par les groupes de l'annuaire (navin-platform-admins, navin-admins-<tenant>).
  • Connexion locale du premier administrateur, avec un mot de passe à changer à la première connexion et le verrouillage du compte.
  • Isolation multi-tenant avec FORCE ROW LEVEL SECURITY sur chaque table de tenant, organisations, unités métier, projets et environnements.
  • Autorisation par rôles, relations OpenFGA et politiques OPA sur chaque passerelle, avec des bundles de politiques signés (EAI_OPA_DELIVERY=bundle).
  • Context Authority : ExecutionContext signé, délégations, mandats et accès d'urgence (break glass).
  • Identité des charges avec SPIFFE et SPIRE.
  • Licences hors ligne signées en Ed25519 (12 ou 36 mois), contrôlées par la tâche license_check.

Modèles et inférence​

  • Passerelle de modèles à travers LiteLLM v1.106.5 avec registre des fournisseurs, registre des modèles, contrôle de capacité de chaque requête, replis et kill switches par fournisseur, modèle et tenant.
  • Inférence locale avec vLLM (GPU ou CPU, un Deployment par modèle, KEDA sur la file) et Ollama.
  • Embeddings du RAG et de la mémoire des agents à travers la passerelle (modèle local bge-m3 dans le profil sur site), réindexation quand le modèle d'embedding change.
  • FinOps : prix versionnés, coût estimé et réservation de quota avant exécution, coût mesuré, rapprochement avec les factures, alertes de budget.

Agents, outils et MCP​

  • Runtime d'agents avec exécution durable (Temporal), approbations humaines, battements de cœur, bacs à sable (gVisor, Kata) et kill switch d'agent.
  • Runtime MCP sur ToolHive Operator : instances MCP isolées par tenant, projet et utilisateur, créées à la demande, mises en veille et détruites après usage. Les serveurs MCP sont internes uniquement : les serveurs publics sont refusés.
  • Marketplace de packs signés, avec des packs métiers installés et utilisés de bout en bout.

Données et documents​

  • RAG gouverné : ACL par document et par fragment, quarantaine, citations, recherche hybride et reclassement, Qdrant.
  • Sécurité des fichiers : chaque fichier est mis en quarantaine et analysé par ClamAV et YARA-X avant ingestion (EAI_FILE_SCAN_MODE).
  • DLP avec Presidio, tokenisation, chiffrement par OpenBao Transit ou par un HSM client (PKCS#11), rétention et lignage.
  • Adaptateurs de stockage client : AWS S3, Azure Blob, Google Cloud Storage, IBM COS et SeaweedFS, avec découverte des capacités.

Voix et multimodal​

  • Transcription (faster-whisper), synthèse vocale (Kokoro), détection d'activité vocale (Silero), diarisation (pyannote), voix en direct avec LiveKit et consentement des participants.
  • WebSocket temps réel avec jeton à usage unique, limites de débit et de taille, et DLP de sortie en flux.
  • Workers média GPU consommateurs de NATS JetStream, mis à l'échelle par KEDA selon le retard du consommateur.

Observabilité, audit et opérations de sécurité​

  • Métriques Prometheus de l'API et des workers, règles d'alerte, SLO avec budgets d'erreur, traces OpenTelemetry, Opik pour les traces IA, Jaeger, OpenSearch pour les journaux, export analytique vers ClickHouse. La plateforme ne livre pas de serveur de tableaux de bord (ADR-0169) : les machines et les services se suivent dans le Navin Manager (onglet de surveillance des services avec son historique en base, métriques des hôtes), les agents, la passerelle LLM, le FinOps, les SLO et la sécurité dans les écrans du portail.
  • Piste d'audit en chaîne de hachage par tenant (GET /v1/audit/verify), Audit Gateway avec sceaux signés, export WORM quotidien signé, envoi au SIEM (webhook, syslog, Wazuh).
  • SOC et AI-SDR : détections de Falco, Tetragon et OpenSearch, ordres de confinement, kill switch vérifié par accusés, reprise à quatre yeux.

Sécurité du réseau et du cluster​

  • Politiques réseau en refus par défaut avec Cilium, liste DNS autorisée par charge, métadonnées cloud interdites, chiffrement WireGuard et authentification mutuelle SPIFFE entre nœuds.
  • Admission Kyverno : signatures et provenance des images, Pod Security.
  • Passerelle APISIX avec TLS, WAF Coraza et OWASP CRS, limites de débit.

SDK et outils de développement​

  • SDK pour Python (enterprise_ai, CLI enterprise-ai), TypeScript (@enterprise-ai/sdk, @enterprise-ai/realtime), Go (enterprise-ai-go) et Java (enterprise-ai-java, enterprise-ai-spring).

Changements​

DomaineChangement
DémarrageAvec EAI_ENVIRONMENT=prod, l'API refuse de démarrer tant qu'une règle de production n'est pas respectée et affiche chaque règle (eai.security.startup) ; staging les journalise. Un hôte installé par paquets est configuré en prod.
MétriquesGET /metrics exige EAI_METRICS_TOKEN (32 caractères minimum) hors dev et test.
Embeddingslocal-hash-256 (embedder par hachage) est refusé en production : fixez un modèle d'embedding du registre comme bge-m3-vllm.
FichiersEAI_FILE_SCAN_MODE=enforce est exigé en production.
RéglagesLes réglages de type liste acceptent un texte séparé par des virgules ou un tableau JSON (EAI_CORS_ORIGINS="https://a,https://b" n'arrête plus le démarrage).
Comptes de baseL'API utilise un compte d'exécution sans droit DDL (EAI_RUNTIME_DATABASE_URL, membre de eai_runtime) ; les migrations et le worker utilisent le compte administrateur.
ObservabilitéOpenSearch (Apache-2.0) remplace Loki pour les journaux, Opik remplace Langfuse pour les traces IA ; les tableaux de bord sont dans le Navin Manager et le portail (ADR-0169), un Grafana exploité par le client peut être relié comme console (politique de licences : aucun composant AGPL livré, ADR-0101).
TLS interneLes sauts entre charges du chart sont chiffrés par Cilium WireGuard et authentifiés par SPIFFE ; les services de données gardent leurs propres certificats.

Problèmes corrigés​

ProblèmeCorrection
APISIX appelait le Control Plane en HTTPS alors qu'il ne sert que HTTP : chaque appel à l'API répondait 502Les routes de deploy/apisix appellent le Control Plane en HTTP dans le cluster, chiffré par Cilium
Un EAI_CORS_ORIGINS séparé par des virgules faisait échouer le démarrageRéglages de type liste lus avec NoDecode (services/control-plane/src/eai/config.py)
Les scripts du portail répondaient 400 après un build lancé à côté d'un serveur en coursDossiers séparés pour npm run dev (.next-dev) et npm run build (.next)
make start attendait un ancien message de journal avant de déclarer le worker démarréContrôle de démarrage du worker corrigé
Le test du cycle de vie de make start entrait en collision avec une pile locale déjà lancéeTest isolé de la pile en cours

Problèmes connus​

ProblèmeContournement
Les effets sur un cluster en fonctionnement (contrôleur Tekton, Harbor, admission Kyverno, Cilium, KEDA, HPA, sauvegarde et restauration Velero, synchronisation Argo CD) ne sont validés que hors ligne, sans cluster de recetteFaites la vérification et l'exercice de restauration sur un cluster de recette avant la production
La haute disponibilité sur Kubernetes est configurée (HA_CONFIGURED), non validée par une bascule enregistrée ; MULTI_CLUSTER n'est pas pris en chargeEnregistrez un test de bascule par groupe HA ; prévoyez la reprise par restauration (Hébergement)
La vérification des signatures d'images par Kyverno exige l'accès au registre Harbor du clientMettez les images en miroir et signez-les dans Harbor
Le chart référence vLLM (v0.33.0) et Ollama (0.40.14) par tag sans empreinte : eai-image-provenance les refuse hors des projets Harbor signésMettez-les en miroir sous harbor.<site>/mirror/ et signez-les (Installation déconnectée)
platform.env.example du paquet suggère EAI_OIDC_AUDIENCE='eai-control-plane', alors que le realm livré dans deploy/keycloak met l'audience control-plane dans les jetonsFixez l'audience que portent les jetons de votre realm (control-plane avec le realm livré)
global.region du chart n'est pas lu par les modèlesFixez la résidence des données par tenant (data_residency)
Aucun build aarch64 des paquets de la plateforme et de la console ; Debian n'est pas pris en charge pour euxUtilisez des serveurs x86_64 sous Ubuntu 24.04, la famille RHEL 9 ou Arch Linux
Sur Arch Linux, le paquet de la plateforme dépend du Python pour lequel il a été construitInstallez la version Navin construite pour le nouveau Python avant une mise à niveau de Python
Opik exige une base d'état MySQL 8.4 (GPL-2.0) que la plateforme ne livre pasFournissez MySQL à part, ou lancez la pile sans le profil opik
SeaweedFS ne tourne que dans la pile composeUtilisez le stockage objet compatible S3 du client en production
Les notes de version 1.0.0 listent les migrations V001 à V196 (89 fichiers) ; le dépôt contient V001__core_schema.sql à V201__mcp_runtime_lifecycle.sql (94 fichiers)Régénérez les notes avec tools/release/notes.py à la construction du bundle

Abandons et retraits​

ÉlémentÉtatRemplacement
Stockage WORM historique EAI_S3_* pour l'export d'auditConservé comme dernier recoursProfil de stockage de finalité audit_worm, ou EAI_AUDIT_WORM_STORAGE_PROFILE
Clés dans l'environnement EAI_CONTEXT_SIGNING_KEY, EAI_AUDIT_SEAL_SIGNING_KEYDev et test seulement, refusées en productionEAI_CONTEXT_SIGNING_KEY_REF, EAI_AUDIT_SEAL_SIGNING_KEY_REF (références OpenBao)
EAI_AUDIT_SIGNING=hmacDev et test seulement, refusé en productiontransit ou auto avec OpenBao
Certificats control-plane-mtls et litellm-mtlsRetirés (montés nulle part)Cilium WireGuard et authentification mutuelle SPIFFE
Loki, Langfuse, GrafanaRetirés de la pile livréeOpenSearch, Opik ; tableaux de bord du Navin Manager et du portail ; un Grafana du client se relie avec EAI_GRAFANA_URL et les tableaux Grafana restent disponibles en module complémentaire dans docs/observability/grafana