Aller au contenu principal

Installer Mem0 et Cognee

Mem0 et Cognee s'installent par l'assistant d'installation du Navin Manager, comme les autres services du catalogue (permission services:install sur le cluster). Le détail de chaque paramètre est dans les pages générées mem0 et cognee.

Prérequis des hôtes​

Les contrôles préalables du descripteur bloquent l'installation quand un seuil n'est pas atteint.

ContrôleMem0Cognee
Mémoireau moins 1024 Mo (bloquant)au moins 4096 Mo (bloquant), 8192 Mo conseillés (avertissement)
CPUau moins 1au moins 2
Disque libreau moins 2048 Moau moins 10240 Mo pour /var/lib/navin
Ports libres8720/tcp (API)8420/tcp (API), 8421/tcp (interface, si ui_enabled), 8422/tcp (MCP, si mcp_enabled)

L'API écoute par défaut sur la seule adresse privée de l'hôte (listen_scope à network) et le pare-feu de l'hôte l'ouvre aux consommateurs ; local la limite à la boucle locale. Elle n'est jamais publiée par une passerelle. Le serveur MCP de Cognee n'écoute que sur 127.0.0.1.

Dépendances réutilisées, jamais installées d'office​

Mem0 et Cognee eux-mêmes ne font partie d'aucune installation par défaut. Leurs dépendances sont des services existants du catalogue, liés à l'étape Liaisons de l'assistant.

LiaisonServiceMem0Cognee
databasepostgresqlobligatoire : base mem0 (collection pgvector des mémoires et des entités)obligatoire : base cognee (utilisateurs, jeux de données, permissions, état des traitements, un schéma pgvector ds_<jeu> par jeu de données)
apppostgresqlobligatoire : base mem0_app (utilisateurs, clés d'API, jetons, réglages, journal des requêtes), sur le même serveur PostgreSQL que mem0-
llmlitellmobligatoireobligatoire
otelotel-collector-facultative, traces de la méthode python uniquement

Une dépendance facultative reste non liée tant qu'on ne la lie pas. Neo4j n'est jamais installé : la mémoire en graphe de Mem0 et le score lexical lemmatisé (spaCy) restent inactifs. Grafana et Loki ne sont pas utilisés.

Base PostgreSQL et rôle dédiés​

Le provisionnement du service postgresql crée, pour chaque moteur, un rôle technique propriétaire de ses seules bases et l'extension vector :

  • Mem0 : le rôle mem0, propriétaire des bases mem0 et mem0_app, sans superutilisateur, sans CREATEROLE ni CREATEDB (vérifié par test_mem0_real.py).
  • Cognee : le rôle cognee, propriétaire de la seule base cognee, sans superutilisateur ni CREATEDB.

À la désinstallation, ces bases restent dans PostgreSQL : les supprimer là quand les données ne sont plus gardées.

Modèles par LiteLLM, vLLM ou Ollama​

Les deux moteurs utilisent l'API compatible OpenAI de LiteLLM (<url>/v1) ; les moteurs vLLM et Ollama du Manager sont joints à travers elle. Aucun modèle n'est téléchargé au démarrage.

ParamètreMem0Cognee
LLMllm_model, défaut local-llama (extraction des faits, mode JSON)llm_model, défaut local-llama (extraction du graphe, résumés, réponses)
Plongementembedder_model, défaut bge-m3-vllmembedding_model, défaut bge-m3-vllm
Taille des vecteursembedding_dims, défaut 1024embedding_dimensions, défaut 1024
Clé de la passerellellm_api_key (clé virtuelle LiteLLM) ; vide, la clé maîtresse de la passerelle liéellm_api_key, même règle

La taille des vecteurs fixe la colonne vector à la création : la changer demande une nouvelle collection (Mem0) ou de nouveaux jeux de données (Cognee). Le lanceur de Cognee refuse de démarrer quand la passerelle ne liste pas les deux modèles.

Méthodes proposées et pourquoi​

ServiceMéthodesRaison
Mem0python uniquementles sources du serveur server/ de l'archive v2.2.1 dans un environnement virtuel (Python 3.12, dépendances épinglées). L'image Docker Hub mem0/mem0-api-server n'a aucune étiquette versionnée (une seule étiquette flottante de 2025, antérieure à la v2) : pas de méthode podman. Le tableau de bord Next.js n'est pas livré, faute d'image officielle versionnée
Cogneepython (par défaut) et podmanpython : le paquet cognee 1.6.6 et ses dépendances dans un environnement virtuel ; podman : les images officielles cognee/cognee, cognee/cognee-ui et cognee/cognee-mcp épinglées par condensé. L'interface et le serveur MCP n'existent qu'avec podman ; les traces OpenTelemetry qu'avec python

Les deux services ont un seul mode, single (voir Haute disponibilité et limites).

Installation hors ligne​

Les images sont épinglées par condensé, les paquets par version ; le hub et le bundle hors ligne existants du Manager les portent. À l'import du bundle, le condensé de chaque image est enregistré dans le miroir du Manager et chaque chargement est vérifié par rapport à lui ; une image qui ne le porte pas est refusée. Aucune étiquette latest, main ou de développement n'est utilisée. À l'exécution, aucune connexion sortante n'est faite : télémétries coupées, HF_HUB_OFFLINE et TRANSFORMERS_OFFLINE pour Cognee, carte des coûts locale de LiteLLM.

Refus avant et pendant le démarrage​

  • Contrôles préalables : mémoire, CPU, disque et ports libres (tableau plus haut) ; un échec bloque le plan.
  • Lanceur de Mem0 : il s'arrête avec le code 2 quand AUTH_DISABLED vaut true, quand MEM0_TELEMETRY n'est pas false ou quand ADMIN_API_KEY fait moins de 32 caractères (vérifié par test_mem0_real.py).
  • Lanceur de Cognee : il refuse de démarrer sans les deux modèles sur la passerelle ; la variable ENV est refusée par les agents.
  • Une version incompatible d'une dépendance est refusée avec sa cause, en français et en anglais (ADR-0174).

Validation avant l'état healthy​

L'état healthy exige les contrôles de santé et le test fonctionnel réel (smoke) du descripteur.

ServiceSantéDisponibilitéTest fonctionnel
Mem0GET /openapi.json contient Mem0 REST APIs ; purge : dernière exécution réussie récenteGET /auth/setup-status renvoie "needsSetup":false (administrateur créé, inscription fermée)dans l'espace navin-smoke-<nonce> : appel sans clé refusé (401), création d'une mémoire, appel au LLM, recherche sémantique, mise à jour, relecture, suppression, espace vide, nettoyage quoi qu'il arrive
CogneeGET /health contient "status":"ready" ; interface : /api/runtime-config ; MCP : port TCPvérification authentifiée de /api/v1/datasetsdans le jeu navin-smoke-<nonce> : appel sans clé et inscription publique refusés, ajout de deux textes, cognify, recherche sémantique, complétion sur le graphe, lecture du graphe, suppression du jeu quoi qu'il arrive

Le test fonctionnel se relance depuis la fiche du service, carte Contrôles, Lancer le test fonctionnel.