Aller au contenu principal

Navin Enterprise (navin-enterprise)

La plateforme Navin Enterprise AI : API du Control Plane, processus de fond, processus média GPU et portail, au-dessus de LiteLLM (passerelle devant les fournisseurs de modèles), OPA, OpenFGA et Keycloak. Les règles FinOps et d'effort de raisonnement sont du code de la plateforme, pas des réglages.

Généré depuis catalog/services/navin-enterprise.yaml : ne pas modifier à la main.

Résumé​

Version1.0.0
Usageinstaller et configurer
Coucheinfrastructure (présentée à part)
CatégorieNavin Enterprise
Méthodes d'installationpodman, python
Connexion externenon
Réservé au bac à sablenon

Licence​

Identifiant SPDXLicenseRef-Navin-Enterprise
Politique de licencelicence de l'éditeur
Exception de licence-
Exceptions de licence de ses dépendancesLEX-013 (en attente de la décision du client), LEX-014 (en attente de la décision du client), LEX-017 (en attente de la décision du client), LEX-021 (en attente de la décision du client)
Composant de la plateformecontrol-plane-api

Paquets et artefacts​

Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.

TypePaquetVersionLicenceDétails
image de conteneurharbor.example.internal/eai/control-plane1.0.0LicenseRef-Navin-Enterpriseclé d'image control-plane, utilisée par migrate, control-plane, worker
image de conteneurharbor.example.internal/eai/worker1.0.0LicenseRef-Navin-Enterpriseclé d'image worker, utilisée par media-worker
image de conteneurharbor.example.internal/eai/portal1.0.0LicenseRef-Navin-Enterpriseclé d'image portal, utilisée par portal
paquet Pythoneai1.0.0LicenseRef-Navin-Enterpriseinterpréteurs, par ordre de préférence python3.11, python3.12
paquet Pythonragas0.3.2Apache-2.0interpréteurs, par ordre de préférence python3.11, python3.12
paquet Pythonlangchain-openai0.3.28MITinterpréteurs, par ordre de préférence python3.11, python3.12
paquet Pythondatasets4.0.0Apache-2.0interpréteurs, par ordre de préférence python3.11, python3.12

Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.

Systèmes et architectures pris en charge​

MéthodeSystèmes d'exploitationArchitectures
podmanfamille RHEL (dnf), famille Debian (apt), Arch Linux (pacman)x86_64, aarch64 (non restreintes par le descripteur)
pythonfamille RHEL (dnf), famille Debian (apt), Arch Linux (pacman)x86_64, aarch64 (non restreintes par le descripteur)

Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.

GPU : GPU NVIDIA donnés au composant comme périphériques CDI (nvidia.com/gpu) : media-worker.

Prérequis​

Hôte​

  • au moins 4096 Mo de mémoire (bloquant, memory).
  • au moins 1 GPU NVIDIA avec 0 Mo de mémoire (bloquant, gpu).
  • une horloge synchronisée (avertissement, time_sync).

Programmes que les commandes et les contrôles du service lancent sur l'hôte, hors des racines gérées : les ajouter à allowed_commands de l'agent (voir Sécurité de l'agent Navin), sinon l'agent les refuse avec command_not_allowed : /usr/bin/systemctl.

Réseau et ports​

ComposantNom du portPortOuvert dans le pare-feu de l'hôte
control-planeapi8080/tcpoui
workermetrics9464/tcpoui
media-workermetrics9465/tcpoui
portalhttp3000/tcpoui

Services et connexions nécessaires​

Détail et résolution : voir Dépendances.

Méthodes et modes d'installation​

MéthodeDéfautCe que la méthode utilise
podmanouiles images de conteneur du descripteur, exécutées par Podman sous systemd
python-un environnement virtuel Python qui contient les paquets Python du descripteur

Composants​

ComposantTypeMéthodes d'installationPorts
Migration de la base (migrate)ponctuelpodman, python-
API du Control Plane (control-plane)maîtrepodman, python8080/tcp
Processus de fond (worker)maîtrepodman, python9464/tcp
Processus média GPU (media-worker)travailleurpodman9465/tcp
Portail (portal)maîtrepodman3000/tcp

Standard (standard) (par défaut)​

Une API, un processus de fond, un portail ; processus média facultatifs.

Ce que le mode déploie :

ComposantPlacement
migratemin 1, max 1
control-planemin 1, max 1
workermin 1, max 1
media-workermin 0
portalmin 1, max 1

Haute disponibilité (ha)​

Trois répliques de l'API et du portail derrière HAProxy ; le processus de fond garde un seul meneur actif (verrou consultatif PostgreSQL).

Ce que le mode déploie :

ComposantPlacement
migratemin 1, max 1
control-planemin 2, recommandé 3
workermin 1, max 2, recommandé 2
media-workermin 0
portalmin 2, recommandé 3

Installer ce service​

L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.

  1. Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.

  2. Choisissez le service. À l'étape Service, sélectionnez Navin Enterprise. La carte affiche la licence LicenseRef-Navin-Enterprise et les dépendances dont l'installation a besoin. Choisissez la Méthode parmi podman, python (par défaut podman).

  3. Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode : standard (par défaut), ha. Chaque mode déploie les composants listés dans Méthodes et modes d'installation. Avec plusieurs composants, placez chacun sur ses hôtes dans Répartition des composants (Proposer un placement propose un placement qui respecte les cardinalités).

  4. Liez les dépendances. À l'étape Liaisons, choisissez pour chaque dépendance (database, redis, litellm, opa, openfga, oidc, qdrant, clickhouse, storage, temporal, livekit, asterisk_ami, asterisk_ari, kamailio, livekit_sip, mem0, cognee, opik, otel, openbao, nats, presidio, docling, clamav, yarax) Installer avec la plateforme ou Utiliser une connexion existante ; une dépendance facultative peut rester sur Aucune liaison.

  5. Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration) ; les paramètres obligatoires sont rag_embedding_model, memory_embedding_model. Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.

  6. Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.

  7. Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services.

Haute disponibilité​

Clusterréplicas (replication)
Haute disponibilitéexterne (external)
Basculerépartiteur (load-balancer)
Réplicationstockage partagé (shared-store)
Quorumaucun (none)
Découvertebase de données (database)
Point d'entréerépartiteur (load-balancer)
Documentation officiellehttps://docs.haproxy.org/3.2/configuration.html
Référenceshttps://www.postgresql.org/docs/16/high-availability.html

Prérequis​

PrérequisDoit être hautement disponibleModesDescription
databaseouihaLes répliques partagent leur état dans PostgreSQL, qui doit lui-même être hautement disponible (cluster Patroni).
redisouihaLes compteurs des limites de débit des répliques sont dans Redis, qui doit lui-même être hautement disponible (Sentinel).
clamavouihaChaque dépôt est analysé avant ingestion (mode enforce) ; au moins deux passerelles ClamAV gardent les dépôts possibles quand l'une tombe.
yaraxouihaChaque dépôt est confronté aux règles YARA-X avant ingestion ; au moins deux workers gardent les dépôts possibles quand l'un tombe.
haproxyouihaLes répliques de l'API et du portail sont jointes via HAProxy derrière une IP virtuelle Keepalived.

Topologie par mode​

ModesNiveau le plus haut du catalogueRépartitionComposant du quorumDomaines de panneDescription
standardautonome (standalone)unique (single)-1Une API, un processus de fond et un portail, sans tolérance aux pannes.
haha (ha)actif-actif (active-active)-3Répliques sans état de l'API et du portail derrière HAProxy ; le processus de fond tourne en actif-passif via un verrou consultatif PostgreSQL.

Remarques​

  • Les répliques ne gardent aucun état local ; la haute disponibilité de la plateforme est bornée par celle de PostgreSQL, Redis et des moteurs d'analyse.

Paramètres de configuration​

Général​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Environnement (environment)enumproddev, test, staging, prodnonnonnondev, test, staging ou prod ; prod refuse les réglages dangereux au démarrage. (EAI_ENVIRONMENT)
Langue par défaut (default_locale)enumfren, frnonnonnonLangue des messages quand la requête n'en choisit pas. (EAI_DEFAULT_LOCALE)
Niveau de journalisation (log_level)enumINFODEBUG, INFO, WARNING, ERRORnonnonnonVerbosité des journaux Navin. (EAI_LOG_LEVEL)

Réseau​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Port de l'API (api_port)port8080-nonnonouiPort d'écoute de l'API du Control Plane. (EAI_PORT)
Port du portail (portal_port)port3000-nonnonouiPort d'écoute du portail.
URL publique de l'API (public_api_url)urlhttps://{{ host.fqdn }}:{{ config.api_port }}-nonnonnonAdresse de l'API vue par les navigateurs (NEXT_PUBLIC_EAI_API_URL, en général la passerelle APISIX).
URL publique du portail (public_portal_url)urlhttps://{{ host.fqdn }}:{{ config.portal_port }}-nonnonnonAdresse du portail (NEXT_PUBLIC_BASE_URL et origine CORS par défaut).
Origines CORS (cors_origins)list[]-nonnonnonOrigines de navigateur autorisées à appeler l'API (vide : l'URL publique du portail). (EAI_CORS_ORIGINS)
Hôtes autorisés (allowed_hosts)list["*"]-nonnonnonListe des en-têtes Host acceptés par l'API. (EAI_ALLOWED_HOSTS)
Proxys de confiance (trusted_proxies)list["127.0.0.1/32", "::1/128"]-nonnonnonPairs autorisés à poser X-Forwarded-For et X-SPIFFE-ID (hôtes APISIX et HAProxy). (EAI_TRUSTED_PROXIES)

Base de données​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Minimum du pool (db_pool_min)int1min 0nonnonnonConnexions PostgreSQL minimales par processus. (EAI_DB_POOL_MIN)
Maximum du pool (db_pool_max)int10min 1, max 500nonnonnonConnexions PostgreSQL maximales par processus. (EAI_DB_POOL_MAX)

Sécurité​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
TLS (tls_enabled)boolfalse-nonnonouiServir l'API du Control Plane (uvicorn), le portail (frontal HTTPS dans le conteneur du portail, Next.js standalone n'a pas d'écoute TLS) et les écoutes Prometheus des processus de fond en HTTPS avec le certificat d'hôte émis par l'autorité du Manager. Chaîne : navigateur vers la passerelle HTTPS de la banque (public_portal_url et public_api_url désignent la passerelle, qui présente le certificat de la banque et fait confiance à l'autorité du Manager vers les hôtes), passerelle ou HAProxy vers l'API et le portail en HTTPS (autorité du Manager), API et processus de fond vers leurs fournisseurs en HTTPS, rediss, tls ou verify-full avec les racines publiques plus l'autorité du Manager. Désactivé : HTTP simple sur les hôtes, derrière une passerelle qui termine TLS.
Authentification SPIFFE (auth_spiffe)boolfalse-nonnonnonAccepter les identités de charges de travail de SPIRE (X-SPIFFE-ID des proxys de confiance). (EAI_AUTH_SPIFFE)
Audience OIDC (oidc_audience)stringcontrol-plane-nonnonnonAudience exigée dans les jetons d'accès. (EAI_OIDC_AUDIENCE)
Synchronisation des groupes (oidc_group_sync)booltrue-nonnonnonAppliquer les correspondances de groupes de l'annuaire à chaque authentification OIDC. (EAI_OIDC_GROUP_SYNC)
Client du portail (portal_client_id)stringportal-nonnonnonClient OIDC public du portail.
Clé maîtresse (master_key)passwordgénéré-nonouinonClé de chiffrement des secrets de la plateforme stockés en base. (EAI_MASTER_KEY)
Décision de politique par défaut (policy_default)enumdenyallow, denynonnonnonDécision quand OPA ne répond pas. (EAI_POLICY_DEFAULT)
Documentation de l'API (docs_enabled)boolfalse-nonnonnonServir /docs, /redoc et /openapi.json. (EAI_DOCS_ENABLED)
En-têtes de sécurité (security_headers_enabled)booltrue-nonnonnonAjouter les en-têtes de sécurité à chaque réponse. (EAI_SECURITY_HEADERS_ENABLED)
HSTS (hsts_enabled)booltrue-nonnonnonEnvoyer Strict-Transport-Security. (EAI_HSTS_ENABLED)
Durée HSTS (hsts_max_age_seconds)int31536000min 0nonnonnonmax-age de HSTS en secondes. (EAI_HSTS_MAX_AGE_SECONDS)
Corps maximal (max_body_bytes)int10485760min 1024nonnonnonPlus grand corps de requête en octets. (EAI_MAX_BODY_BYTES)
Téléversement maximal (max_upload_bytes)int104857600min 1024nonnonnonPlus grand téléversement de média, document ou import en octets. (EAI_MAX_UPLOAD_BYTES)
Profondeur JSON (max_json_depth)int64min 4, max 1024nonnonnonImbrication JSON maximale acceptée. (EAI_MAX_JSON_DEPTH)
Limites de débit (rate_limit_enabled)booltrue-nonnonnonAppliquer les limites de débit des requêtes. (EAI_RATE_LIMIT_ENABLED)
Requêtes par minute (rate_limit_per_minute)int1200min 1nonnonnonPar principal, ou par IP cliente en anonyme. (EAI_RATE_LIMIT_PER_MINUTE)
Requêtes de passerelle par minute (rate_limit_gateway_per_minute)int600min 1nonnonnonPar principal sur /v1/gateway/*. (EAI_RATE_LIMIT_GATEWAY_PER_MINUTE)
Échecs d'authentification par minute (rate_limit_auth_failures_per_minute)int20min 1nonnonnonPar IP cliente, puis 429. (EAI_RATE_LIMIT_AUTH_FAILURES_PER_MINUTE)
Algorithmes JWT (jwt_algorithms)list["RS256", "PS256", "ES256"]-nonnonnonAlgorithmes de signature acceptés dans les jetons. (EAI_JWT_ALGORITHMS)
Tolérance JWT (jwt_leeway_seconds)int30min 0, max 300nonnonnonDécalage d'horloge toléré sur les jetons, en secondes. (EAI_JWT_LEEWAY_SECONDS)
Liste des sorties privées (egress_private_allowlist)list[]-nonnonnonDestinations privées supplémentaires (hôte, hôte:port, *.suffixe ou CIDR) ; le LiteLLM lié est toujours ajouté. (EAI_EGRESS_PRIVATE_ALLOWLIST)
Ports de sortie publics (egress_allowed_ports)list[443]-nonnonnonPorts autorisés vers les destinations publiques. (EAI_EGRESS_ALLOWED_PORTS)
Sortie HTTP simple (egress_allow_http)boolfalse-nonnonnonAutoriser le HTTP simple vers les destinations publiques (jamais en prod). (EAI_EGRESS_ALLOW_HTTP)
Délai DNS de sortie (egress_dns_timeout_seconds)float3.0min 0.1, max 60nonnonnonSecondes allouées à la vérification DNS d'un appel sortant. (EAI_EGRESS_DNS_TIMEOUT_SECONDS)
Mode contre l'injection d'invite (prompt_injection_default_mode)enumblockoff, detect, blocknonnonnonValeur par défaut des locataires : off, detect ou block. (EAI_PROMPT_INJECTION_DEFAULT_MODE)
Retenue DLP du flux (stream_dlp_holdback_chars)int128min 0, max 8192nonnonnonCaractères retenus en fin de flux pour la DLP. (EAI_STREAM_DLP_HOLDBACK_CHARS)
Inactivité du portail (idle_timeout_minutes)int30min 1, max 1440nonnonnonMinutes d'inactivité avant la déconnexion du portail (NEXT_PUBLIC_EAI_IDLE_TIMEOUT_MINUTES).
Délai d'analyse des fichiers (file_scan_timeout_seconds)int60min 5, max 900, snonnonnonDélai d'une analyse par moteur et par instance avant l'essai de l'instance suivante (EAI_FILE_SCAN_TIMEOUT_SECONDS).
Plus gros fichier analysé (file_scan_max_bytes)int52428800min 1024, max 4194304000nonnonnonLimite de la plateforme pour un fichier déposé, en octets (EAI_FILE_SCAN_MAX_BYTES) ; la politique d'un tenant peut seulement la baisser. La valeur rendue est la plus basse entre celle-ci et le StreamMaxLength de ClamAV ; les limites d'archives de la plateforme (EAI_FILE_SCAN_ARCHIVE_MAX_MEMBER_BYTES, EAI_FILE_SCAN_ARCHIVE_MAX_TOTAL_BYTES) viennent des MaxFileSize et MaxScanSize de ClamAV. Garder la limite de YARA-X au moins aussi haute.

Modèles et médias​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Modèle d'embedding du RAG (rag_embedding_model)string--ouinonnonModèle du registre d'une nouvelle base de connaissances, un modèle d'embedding servi par la passerelle LiteLLM (local-hash-256 est refusé en production). (EAI_RAG_EMBEDDING_MODEL)
Modèle d'embedding de la mémoire (memory_embedding_model)string--ouinonnonModèle d'embedding de la mémoire des agents, un modèle du registre servi par la passerelle LiteLLM. (EAI_MEMORY_EMBEDDING_MODEL)
Modèle de reclassement (rag_rerank_model)string(vide)-nonnonnonModèle du registre avec la capacité de reclassement (vide : aucun). (EAI_RAG_RERANK_MODEL)
Lot d'embeddings (embeddings_batch_size)int64min 1, max 2048nonnonnonTextes par appel à la passerelle. (EAI_EMBEDDINGS_BATCH_SIZE)
Types de tâches média (media_kinds)list["stt", "diarization", "tts"]-nonnonnonUn à trois types parmi stt, diarization, tts traités par le processus média (--kind).
Flux média (media_stream)stringEAI_MULTIMODAL-nonnonnonFlux NATS JetStream des tâches média (--stream).

Intégrations​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Jeton OpenBao (openbao_token)password--nonouinonJeton du Control Plane dans OpenBao (AppRole ou jeton périodique, jamais le jeton racine). (EAI_OPENBAO_TOKEN)
Jeton des workers vocaux (voice_worker_token)password--nonouinonClé d'API d'un tenant avec la portée telephony:voice-worker, créée dans Navin Enterprise. Le Manager la scelle et ne la donne qu'aux workers livekit-agents (worker_token du point de terminaison api) ; vide : les workers refusent de démarrer.
Montage KV OpenBao (openbao_kv_mount)stringsecret-nonnonnonPoint de montage du moteur KV. (EAI_OPENBAO_KV_MOUNT)
Montage Transit OpenBao (openbao_transit_mount)stringtransit-nonnonnonPoint de montage du moteur Transit. (EAI_OPENBAO_TRANSIT_MOUNT)
Clé de signature de l'audit (openbao_audit_signing_key)stringeai-audit-export-nonnonnonClé Transit qui signe les exports d'audit WORM. (EAI_OPENBAO_AUDIT_SIGNING_KEY)
Signature de l'audit (audit_signing)enumautoauto, transit, hmacnonnonnonauto (Transit quand OpenBao est lié, sinon HMAC), transit ou hmac. (EAI_AUDIT_SIGNING)
Magasin OpenFGA (openfga_store_id)string(vide)-nonnonnonIdentifiant du magasin (vide : créé au premier démarrage). (EAI_OPENFGA_STORE_ID)
Modèle OpenFGA (openfga_model_id)string(vide)-nonnonnonIdentifiant du modèle d'autorisation (vide : le plus récent). (EAI_OPENFGA_MODEL_ID)
Espace de noms Temporal (temporal_namespace)stringdefault-nonnonnonEspace de noms des planifications (quand Temporal est lié). (EAI_TEMPORAL_NAMESPACE)
File de tâches Temporal (temporal_task_queue)stringeai-nonnonnonFile de tâches des workflows. (EAI_TEMPORAL_TASK_QUEUE)
Projet Opik (opik_project)stringnavin-evaluations-nonnonnonProjet des traces d'évaluation (quand Opik est lié). (OPIK_PROJECT_NAME)
Compartiment d'audit (s3_bucket)stringeai-audit-worm-nonnonnonCompartiment de l'archive d'audit WORM et des médias (verrouillage d'objet actif). (EAI_S3_BUCKET)
Clé KMS S3 (s3_kms_key_id)string(vide)-nonnonnonIdentifiant de la clé de chiffrement côté serveur (vide : défaut du compartiment). (EAI_S3_KMS_KEY_ID)
Table ClickHouse (clickhouse_table)stringeai_events-nonnonnonTable de l'export analytique. (EAI_CLICKHOUSE_TABLE)

Observabilité et SIEM​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Jeton des métriques (metrics_token)passwordgénéré-nonouinonJeton porteur de GET /metrics (obligatoire hors dev et test). (EAI_METRICS_TOKEN)
Traces (otel_enabled)booltrue-nonnonnonExporter les traces OpenTelemetry (quand le collecteur est lié). (EAI_OTEL_ENABLED)
Actions SIEM (siem_forward_actions)stringsecurity.*,policy.*,incident.*,approval.*,secret.*,api_key.*,audit.*,dlp.*,authz.write,authz.delete,member.*,provider.disable,model.disable,agent.kill,agent.suspend,multimodal.dlp-nonnonnonActions d'audit transmises au SIEM (les refus et les échecs le sont toujours). (EAI_SIEM_FORWARD_ACTIONS)
Hôte syslog du SIEM (siem_syslog_host)string(vide)-nonnonnonRécepteur syslog du SIEM (vide : désactivé). (EAI_SIEM_SYSLOG_HOST)
Port syslog du SIEM (siem_syslog_port)port6514-nonnonnonPort du récepteur syslog. (EAI_SIEM_SYSLOG_PORT)
Protocole syslog du SIEM (siem_syslog_proto)enumtlsudp, tcp, tlsnonnonnonudp, tcp ou tls. (EAI_SIEM_SYSLOG_PROTO)
Port des métriques du processus de fond (worker_metrics_port)port9464-nonnonnonPort Prometheus de python -m eai.worker (EAI_WORKER_METRICS_PORT).
Port des métriques du processus média (media_worker_metrics_port)port9465-nonnonnonPort Prometheus de python -m eai.media_worker (EAI_MEDIA_WORKER_METRICS_PORT).

FinOps et audit​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Seuils d'alerte budgétaire (finops_alert_thresholds)string50,80,100-nonnonnonPourcentage d'un budget ou d'un quota qui lève une alerte (les règles FinOps elles-mêmes sont du code). (EAI_FINOPS_ALERT_THRESHOLDS)
Rétention WORM (audit_worm_retention_days)int365min 1nonnonnonJours de conservation des exports d'audit WORM. (EAI_AUDIT_WORM_RETENTION_DAYS)

Réglages de fond​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Cadence du processus (worker_tick_seconds)float5.0min 0.0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_TICK_SECONDS) (avancé)
Intervalle du planificateur (worker_scheduler_interval_seconds)int30min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_SCHEDULER_INTERVAL_SECONDS) (avancé)
Intervalle de la boîte d'envoi (worker_outbox_interval_seconds)int10min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_OUTBOX_INTERVAL_SECONDS) (avancé)
Intervalle d'expiration des quotas (worker_quota_expiry_interval_seconds)int60min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_QUOTA_EXPIRY_INTERVAL_SECONDS) (avancé)
Intervalle des battements (worker_heartbeat_interval_seconds)int60min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_HEARTBEAT_INTERVAL_SECONDS) (avancé)
Délai des battements (worker_heartbeat_timeout_seconds)int1800min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_HEARTBEAT_TIMEOUT_SECONDS) (avancé)
Intervalle d'expiration des approbations (worker_approval_expiry_interval_seconds)int60min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_APPROVAL_EXPIRY_INTERVAL_SECONDS) (avancé)
Intervalle de rétention (worker_retention_interval_seconds)int86400min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_RETENTION_INTERVAL_SECONDS) (avancé)
Lot du processus (worker_batch_size)int100min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_BATCH_SIZE) (avancé)
Vérification de la chaîne d'audit (worker_verify_chain_interval_seconds)int3600min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_VERIFY_CHAIN_INTERVAL_SECONDS) (avancé)
Intervalle des jauges (worker_gauges_interval_seconds)int30min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_GAUGES_INTERVAL_SECONDS) (avancé)
Intervalle de réindexation (worker_embeddings_reindex_interval_seconds)int60min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_EMBEDDINGS_REINDEX_INTERVAL_SECONDS) (avancé)
Remise en file des médias (worker_media_requeue_seconds)int60min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_MEDIA_REQUEUE_SECONDS) (avancé)
Intervalle de l'export analytique (worker_analytics_export_seconds)int60min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_ANALYTICS_EXPORT_SECONDS) (avancé)
Lot analytique (analytics_export_batch)int5000min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_ANALYTICS_EXPORT_BATCH) (avancé)
Lots analytiques par passe (analytics_export_max_batches)int20min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_ANALYTICS_EXPORT_MAX_BATCHES) (avancé)
Retard analytique (analytics_export_lag_seconds)float5.0min 0.0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_ANALYTICS_EXPORT_LAG_SECONDS) (avancé)
Intervalle d'envoi au SIEM (worker_siem_forward_seconds)int30min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_SIEM_FORWARD_SECONDS) (avancé)
Lot SIEM (siem_forward_batch)int500min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_SIEM_FORWARD_BATCH) (avancé)
Intervalle de l'export WORM (worker_audit_worm_seconds)int3600min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_WORKER_AUDIT_WORM_SECONDS) (avancé)
Bail des tâches média (media_job_lease_seconds)int900min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_MEDIA_JOB_LEASE_SECONDS) (avancé)
Tentatives des tâches média (media_job_max_attempts)int3min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_MEDIA_JOB_MAX_ATTEMPTS) (avancé)
Interrogation des médias (media_worker_poll_seconds)float2.0min 0.0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_MEDIA_WORKER_POLL_SECONDS) (avancé)
Battement des médias (media_worker_heartbeat_seconds)float60.0min 0.0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_MEDIA_WORKER_HEARTBEAT_SECONDS) (avancé)
Durée du jeton temps réel (realtime_ws_token_ttl_seconds)int300min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_REALTIME_WS_TOKEN_TTL_SECONDS) (avancé)
Taille des messages temps réel (realtime_ws_max_message_bytes)int1048576min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_REALTIME_WS_MAX_MESSAGE_BYTES) (avancé)
Débit des événements temps réel (realtime_ws_max_events_per_second)float50.0min 0.0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_REALTIME_WS_MAX_EVENTS_PER_SECOND) (avancé)
Rafale temps réel (realtime_ws_burst)int100min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_REALTIME_WS_BURST) (avancé)
Durée de session temps réel (realtime_ws_max_session_seconds)int3600min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_REALTIME_WS_MAX_SESSION_SECONDS) (avancé)
Délai d'inactivité temps réel (realtime_ws_idle_timeout_seconds)int120min 0nonnonnonRéglage du processus de fond et des flux temps réel (valeur de services/control-plane/src/eai/config.py). (EAI_REALTIME_WS_IDLE_TIMEOUT_SECONDS) (avancé)

Dépendances​

Pour chaque dépendance active, le Manager prend la première solution parmi : la liaison choisie dans l'assistant ; un service de la même installation qui la fournit ; un service déjà installé dans le cluster ; la seule connexion du type attendu. Sinon, une dépendance facultative reste non liée, et une dépendance obligatoire est ajoutée à l'installation dans son mode par défaut (la colonne ci-dessous nomme le service du catalogue ajouté).

LiaisonFournie parType de connexionPoint d'accèsFacultativeQuand rien n'est liéDescription
databasepostgresqlpostgresqlsqlnonpostgresql est ajouté à l'installationBase de la plateforme (schéma eai).
redisredisredisredisnonredis est ajouté à l'installationCompteurs des limites de débit partagés par les répliques (rediss avec un utilisateur ACL en production).
litellmlitellm-adminnonlitellm est ajouté à l'installationPasserelle de modèles : chaque appel de modèle passe par LiteLLM.
opaopa-apinonopa est ajouté à l'installationPoint de décision des politiques des passerelles.
openfgaopenfga-httpnonopenfga est ajouté à l'installationAutorisation fondée sur les relations.
oidckeycloakoidchttpnonkeycloak est ajouté à l'installationFournisseur OpenID Connect des utilisateurs (Keycloak, ou LemonLDAP::NG quand il est installé à sa place, ou tout fournisseur OIDC déclaré comme connexion).
qdrantqdrantqdranthttpnonqdrant est ajouté à l'installationBase vectorielle des bases de connaissances et de la mémoire.
clickhouseclickhouseclickhousehttpnonclickhouse est ajouté à l'installationBase analytique (export des usages et des coûts) et télémétrie temps réel des machines et des services (base navin_manager).
storageseaweedfss3s3nonseaweedfs est ajouté à l'installationStockage objet de la plateforme (SeaweedFS par défaut) : médias, fichiers et archive d'audit WORM.
temporaltemporal-httpouireste non liée (facultative)Planifications et workflows durables.
livekitlivekit-signalouireste non liée (facultative)Voix et vidéo temps réel.
asterisk_amiasterisk-amiouireste non liée (facultative)Asterisk Manager Interface du pool PBX : nom d'utilisateur et secret qui livrent les fichiers gérés et lisent les événements.
asterisk_ariasterisk-ariouireste non liée (facultative)Asterisk REST Interface du pool PBX : nom d'utilisateur et mot de passe du contrôle des appels et des enregistrements.
kamailiokamailio-sipouireste non liée (facultative)Bord SIP : adresses des instances Kamailio et, dès que Kamailio le déclare sur ce point de terminaison, le secret partagé auth_ephemeral des identifiants des softphones.
livekit_siplivekit-sip-sipouireste non liée (facultative)Passerelle LiveKit SIP jointe par la branche IA des pools PBX.
mem0mem0-apiouireste non liée (facultative)Serveur Mem0 : faits et mémoires persistants des agents, joint avec la clé d'API d'administration de l'instance.
cogneecognee-apiouireste non liée (facultative)API Cognee : graphe de connaissances et relations des agents, jointe avec la clé d'API de service.
opikopik-apiouireste non liée (facultative)Suivi des évaluations (résultats ragas).
otelotel-collector-otlp_httpouireste non liée (facultative)Traces OpenTelemetry en OTLP HTTP.
openbaoopenbao-apiouireste non liée (facultative)Secrets (KV) et signature de l'audit (Transit).
natsnatsnatsclientouireste non liée (facultative)Événements des agents et avis des tâches média (JetStream).
presidiopresidio-analyzerouireste non liée (facultative)Détection des données personnelles de la DLP.
doclingdocling-apiouireste non liée (facultative)Conversion des documents de l'ingestion.
clamavclamav-apinonclamav est ajouté à l'installationPasserelles ClamAV qui analysent chaque fichier déposé avant ingestion (mode enforce, toutes les instances).
yaraxyara-x-apinonyara-x est ajouté à l'installationWorkers YARA-X qui confrontent chaque fichier déposé aux règles avant ingestion (mode enforce, toutes les instances).

Points d'accès​

Point d'accèsSchémaComposantPortCheminParamètre TLSParamètres de liaisonSecrets de liaisonCommande de provisionnement
apihttpcontrol-plane8080 (api_port)-tls_enabled-worker_token-
portalhttpportal3000 (portal_port)-tls_enabled---

Commandes​

CommandeComposantCibleDescription
Appliquer les migrations (migrate)migratepremier hôteExécute python -m eai.migrate (aussi lancé avant chaque démarrage par le composant migrate).
Journaux de l'API (logs)control-planehôte choisiDernières lignes du journal de l'API.
Journaux du processus de fond (worker_logs)workerhôte choisiDernières lignes du journal du processus de fond.

Contrôles de santé​

Vivacité (par instance)​

ComposantContrôleDétails
control-planeHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn if config.tls_enabled else (host.ip or '127.0.0.1') }}:{{ config.api_port }}/healthzAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s
workerHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn if config.tls_enabled else (host.ip or '127.0.0.1') }}:{{ config.worker_metrics_port }}/metricsAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s
media-workerHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn if config.tls_enabled else (host.ip or '127.0.0.1') }}:{{ config.media_worker_metrics_port }}/metricsAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s
portalHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn if config.tls_enabled else (host.ip or '127.0.0.1') }}:{{ config.portal_port }}/Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s

Disponibilité (contrôle du service)​

ContrôleDétails
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn if config.tls_enabled else (host.ip or '127.0.0.1') }}:{{ config.api_port }}/readyzAttendu 200 ; 10 tentatives ; intervalle 3 s ; délai 5 s

Contrôles préalables​

ContrôleTypeSignificationSévéritéComposants
memorymemory_mb {"min": 4096}au moins 4096 Mo de mémoirebloquanttous les composants
api_port_freeport_free {"param": "api_port"}port 8080 libre sur l'hôtebloquantcontrol-plane
portal_port_freeport_free {"param": "portal_port"}port 3000 libre sur l'hôtebloquantportal
gpugpu {"min_count": 1}au moins 1 GPU NVIDIA avec 0 Mo de mémoirebloquantmedia-worker
time_synctime_sync {}une horloge synchroniséeavertissementtous les composants

Désinstallation​

Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.

Liens rapides​

  • Portail : {{ config.public_portal_url }}
  • Santé de l'API : {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.api_port }}/healthz

Documentation amont​