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ôle | Mem0 | Cognee |
|---|---|---|
| Mémoire | au moins 1024 Mo (bloquant) | au moins 4096 Mo (bloquant), 8192 Mo conseillés (avertissement) |
| CPU | au moins 1 | au moins 2 |
| Disque libre | au moins 2048 Mo | au moins 10240 Mo pour /var/lib/navin |
| Ports libres | 8720/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.
| Liaison | Service | Mem0 | Cognee |
|---|---|---|---|
database | postgresql | obligatoire : 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) |
app | postgresql | obligatoire : base mem0_app (utilisateurs, clés d'API, jetons, réglages, journal des requêtes), sur le même serveur PostgreSQL que mem0 | - |
llm | litellm | obligatoire | obligatoire |
otel | otel-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 basesmem0etmem0_app, sans superutilisateur, sansCREATEROLEniCREATEDB(vérifié partest_mem0_real.py). - Cognee : le rôle
cognee, propriétaire de la seule basecognee, sans superutilisateur niCREATEDB.
À 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ètre | Mem0 | Cognee |
|---|---|---|
| LLM | llm_model, défaut local-llama (extraction des faits, mode JSON) | llm_model, défaut local-llama (extraction du graphe, résumés, réponses) |
| Plongement | embedder_model, défaut bge-m3-vllm | embedding_model, défaut bge-m3-vllm |
| Taille des vecteurs | embedding_dims, défaut 1024 | embedding_dimensions, défaut 1024 |
| Clé de la passerelle | llm_api_key (clé virtuelle LiteLLM) ; vide, la clé maîtresse de la passerelle liée | llm_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
| Service | Méthodes | Raison |
|---|---|---|
| Mem0 | python uniquement | les 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 |
| Cognee | python (par défaut) et podman | python : 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_DISABLEDvauttrue, quandMEM0_TELEMETRYn'est pasfalseou quandADMIN_API_KEYfait moins de 32 caractères (vérifié partest_mem0_real.py). - Lanceur de Cognee : il refuse de démarrer sans les deux modèles sur la passerelle ; la variable
ENVest 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.
| Service | Santé | Disponibilité | Test fonctionnel |
|---|---|---|---|
| Mem0 | GET /openapi.json contient Mem0 REST APIs ; purge : dernière exécution réussie récente | GET /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 |
| Cognee | GET /health contient "status":"ready" ; interface : /api/runtime-config ; MCP : port TCP | vérification authentifiée de /api/v1/datasets | dans 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.