Letta vs Mem0 vs Zep : quelle mémoire pour vos agents ?
Comparez Letta, Mem0 et Zep sur la persistance, l’intégration, le self-hosting, les coûts et l’exploitation en production.
Introduction
Comparer Letta vs Mem0 et Zep n’a de sens qu’après avoir identifié la couche qui manque à votre agent. Letta fournit un runtime d’agents stateful ; Mem0 ajoute une couche de mémoire à une application existante ; Zep opère des graphes de contexte temporels managés. Cette comparaison est utile quand une équipe backend ou IA doit arbitrer le contrôle du runtime, de l’infrastructure et des données. Elle est à éviter si quelques préférences tiennent dans une base simple : ces trois solutions seraient excessives. Cet article est un cadrage d’arbitrage, pas une recommandation d’achat : aucune affiliation vérifiée ne motive le verdict.
Résumé rapide
| Votre besoin principal | Choix à évaluer d’abord | Point de vigilance |
|---|---|---|
| Un agent stateful complet, avec mémoire intégrée au runtime | Letta | Vous adoptez aussi son modèle d’agent et son serveur |
| Ajouter une mémoire à une stack existante | Mem0 | Les fonctions diffèrent entre l’OSS et la plateforme managée |
| Exploiter des relations qui évoluent dans le temps | Zep | Zep est managé ; l’alternative self-hosted est Graphiti, pas Zep Community Edition |
| Garder seulement quelques faits déterministes | Stockage applicatif simple | Évitez une extraction LLM et un graphe inutiles |
Comprendre les trois modèles de mémoire
Une mémoire d’agent ne se résume pas à conserver l’historique du chat. Elle doit décider quoi extraire, comment représenter l’information, quand la mettre à jour et quel contexte rappeler au prochain tour. Elle reste distincte du RAG sur des documents : la mémoire suit généralement un utilisateur, un agent ou une relation qui évolue, tandis que le RAG interroge surtout un corpus externe.
Les trois produits placent cette responsabilité à des niveaux différents. Letta est une plateforme pour construire et exécuter des agents stateful. Son état, ses messages et ses blocs de mémoire appartiennent au runtime. Le projet s’appelait auparavant MemGPT, et non « Bet ». La documentation actuelle oriente les nouveaux déploiements vers le Letta App Server, utilisable en cloud ou sur une infrastructure gérée par l’équipe.
Mem0 est une memory layer : votre application lui envoie des conversations ou des événements, puis recherche les souvenirs utiles par utilisateur, agent ou exécution. La plateforme managée et le SDK open source partagent la boucle de base, mais pas toutes les fonctions. En particulier, la Graph Memory interrogeable est désormais propre à la plateforme managée ; elle a été retirée du pipeline OSS v3.
Zep traite conversations, documents et données métier comme des épisodes alimentant des graphes de contexte temporels. Son offre actuelle est un service managé. L’ancienne Community Edition auto-hébergeable est dépréciée et non supportée. Pour exploiter le cœur temporel en self-host, Zep renvoie vers Graphiti, framework open source séparé, dont l’exploitation et le stockage restent à votre charge.
Comparer Letta, Mem0 et Zep en production
Letta : choisir un runtime stateful, pas une simple base de souvenirs
Letta convient lorsque la mémoire fait partie de l’identité et du cycle de vie de l’agent. Le runtime conserve l’état, les conversations et des blocs de mémoire modifiables. Cela évite de reconstruire une orchestration autour d’un composant de retrieval isolé. La contrepartie est architecturale : intégrer Letta revient à adopter ses primitives d’agent, son serveur et ses conventions d’exécution.
Le nom historique correct est MemGPT. Le dépôt historique du serveur Letta v1 a été archivé ; la documentation renvoie maintenant vers le harness et l’App Server actifs. D’après la documentation officielle de Letta, le runtime complet peut être exécuté par l’équipe, tandis que Letta Cloud fournit le déploiement managé. Il faut donc vérifier le dépôt et la version réellement déployés plutôt que de déduire la maintenance actuelle d’un ancien tutoriel MemGPT.
Le self-hosting offre le contrôle de l’infrastructure, mais ne rend pas l’exploitation gratuite : base d’état, sauvegardes, modèles, embeddings, supervision et migrations restent à gérer. Côté cloud, les plans développeur sont facturés selon l’usage et les coûts de modèle ; les montants peuvent évoluer. Letta est ainsi le meilleur candidat des trois quand le problème est « comment exécuter durablement mon agent ? », mais il est souvent trop structurant si votre agent existe déjà et n’a besoin que de retenir quelques faits.
Mem0 : ajouter une couche mémoire à une stack existante
Mem0 s’intègre sans remplacer nécessairement le framework d’agent. Les SDK Python et JavaScript, ainsi que l’API REST, exposent des opérations d’ajout, de recherche, de mise à jour et de suppression. Le scoping par utilisateur, agent ou run facilite une application multi-utilisateur, à condition de faire de ces identifiants une frontière d’accès côté application.
La distinction Platform vs Open Source est déterminante. Le projet OSS, sous licence Apache 2.0, peut être auto-hébergé avec votre propre LLM, votre embedder et votre base vectorielle. La documentation Mem0 précise toutefois que la Graph Memory, le raisonnement temporel, la décroissance des souvenirs, certains exports, webhooks et surfaces de gestion sont des fonctions de la plateforme. Présenter Mem0 OSS comme « le même graphe portable en local » serait donc inexact en 2026.
La plateforme propose des paliers gratuits et payants publics, mesurés notamment en requêtes d’ajout et de retrieval. L’OSS évite cette facturation de service, mais reporte le coût sur l’inférence d’extraction, les embeddings, le stockage et l’astreinte. Mem0 est adapté aux préférences, profils et faits rappelés à la demande dans une application déjà construite. Ce n’est ni un scheduler ni un runtime complet : les retries, files, autorisations et workflows restent dans votre stack.
Zep : privilégier le contexte temporel managé
Zep se distingue par son modèle de Context Graph temporel. Les épisodes alimentent des entités et des relations dont la validité peut changer. Cette représentation est pertinente pour un assistant commercial, support ou métier qui doit comprendre qu’une fonction, une préférence ou une relation n’est plus actuelle, sans simplement accumuler des faits contradictoires.
L’offre Zep actuelle est managée. La Community Edition auto-hébergeable est officiellement dépréciée et non supportée. Les entreprises qui exigent une résidence dans leur propre cloud peuvent discuter d’un déploiement BYOC ; ce n’est pas un self-host communautaire disponible sur le même modèle que Mem0 OSS. Graphiti, sous licence Apache 2.0, est le framework open source qui porte le modèle de graphe temporel, mais il faut lui fournir un backend de graphe et construire les services de gouvernance, de mise à l’échelle et d’observabilité.
La tarification officielle de Zep comprend un niveau de prototypage et des plans payants fondés sur des crédits d’ingestion ; retrieval, stockage et utilisateurs sont annoncés comme non mesurés dans cette grille. Comme toute tarification SaaS, elle doit être relue avant engagement. Zep a du sens si le graphe temporel et la gouvernance managée sont centraux. Pour un simple profil utilisateur, son modèle et son coût opérationnel peuvent être disproportionnés.
Tableau comparatif
| Critère | Letta | Mem0 | Zep |
|---|---|---|---|
| Coût | Self-host : infra, modèles et exploitation ; cloud développeur à l’usage | OSS : coûts de votre stack ; plateforme avec paliers gratuits et payants | Cloud à crédits d’ingestion ; offres entreprise sur devis |
| Persistance | État, messages et mémoire couplés au runtime d’agent | Souvenirs scopés ; graphe interrogeable réservé à la plateforme actuelle | Context Graph temporel managé ; Graphiti est le chemin OSS séparé |
| Intégration | Forte si vous adoptez le runtime ; plus intrusive dans une stack existante | SDK/API adaptés à l’ajout d’une memory layer | SDK/API et intégrations frameworks, avec modèle d’épisodes et de graphes |
| Latence | Dépend du modèle, du stockage, des outils et du mode cloud/self-host | Ajout avec extraction ; recherche selon backend ou plateforme | Ingestion asynchrone possible ; retrieval managé, à mesurer sur vos données |
| Observabilité | Logs et contrôle à construire en self-host ; fonctions supplémentaires dans le cloud | Historique par mémoire en OSS ; événements et gestion plus riches sur Platform | Dashboard et rétention de logs variables selon le plan ; Graphiti est autogéré |
| Self-host / licence | Runtime public et self-host possible ; vérifier le dépôt actif et sa licence | SDK OSS Apache 2.0 ; fonctions managées non incluses | Zep CE déprécié ; Graphiti Apache 2.0 self-hosted, Zep Cloud propriétaire |
Quel outil choisir selon votre architecture ?
Choisissez Letta si l’agent lui-même doit être durable : identité persistante, état de conversation, outils et mémoire font partie d’un même runtime. Cette cohérence vaut surtout pour un nouveau service. Si vous disposez déjà d’un orchestrateur, migrer son cycle de vie uniquement pour la mémoire crée une dette inutile.
Choisissez Mem0 si vous voulez conserver votre application, votre framework et vos workers. Il se place derrière une interface mémoire et se remplace plus facilement, surtout si vous définissez votre propre schéma d’export. Décidez tôt entre OSS et Platform : la Graph Memory et plusieurs fonctions de gouvernance ne sont pas symétriques. La fiche Mem0 peut compléter cette comparaison, sans remplacer cette vérification de périmètre.
Choisissez Zep si l’ordre temporel et l’évolution des relations sont au cœur du produit, et si une couche managée est acceptable. Si le self-hosting est obligatoire, comparez plutôt Graphiti à vos autres composants OSS : ce choix implique alors d’opérer le graphe, l’inférence d’extraction et les contrôles d’accès.
Enfin, ne choisissez aucun des trois par réflexe. Une table user_preferences versionnée, des règles d’écriture explicites et une recherche déterministe sont plus faciles à auditer pour dix champs stables. La sophistication devient utile quand la quantité, l’ambiguïté ou la temporalité des souvenirs justifie réellement une extraction et un retrieval sémantiques.
Exemple concret : piloter le choix sur un assistant support
Prenons un assistant B2B qui doit retenir la langue, le contrat, les incidents récents et le changement de rôle d’un interlocuteur. Construisez un jeu de 30 conversations synthétiques réparties entre dix utilisateurs. Pour chacun, injectez un fait stable, une préférence, une correction explicite et un fait devenu obsolète. Réservez ensuite dix questions auxquelles le système n’a pas été directement entraîné.
Testez quatre propriétés. Isolation : une mémoire d’Alice ne doit jamais apparaître pour Bob. Mise à jour : après « je ne suis plus administratrice », l’ancien rôle ne doit plus gouverner la réponse. Pertinence : seules les informations nécessaires entrent dans le prompt. Traçabilité : l’équipe doit pouvoir retrouver la source, supprimer les données d’un utilisateur et expliquer un rappel erroné.
Avec Letta, implémentez le scénario dans un agent stateful complet. Avec Mem0, gardez votre orchestrateur et remplacez seulement l’adaptateur mémoire. Avec Zep, modélisez les messages et événements dans un graphe temporel. Mesurez p50 et p95 de l’ajout et du rappel, le taux de bonnes réponses, les fuites inter-utilisateurs, le coût d’inférence et le temps d’exploitation. Le résultat attendu n’est pas un score universel, mais un journal de décision reproductible montrant quelle couche résout votre risque principal.
Vous souhaitez recevoir d’autres grilles de test sur la mémoire, le contexte et l’exploitation des agents ? La newsletter FrameworksAgents propose ces guides sans recommandation sponsorisée ; l’inscription reste soumise à confirmation par email.
Bonnes pratiques
Commencez par un contrat de mémoire indépendant du fournisseur : add, search, update, delete_user et export. Conservez les identifiants de tenant dans les autorisations applicatives, pas seulement dans les métadonnées envoyées au service. Chiffrez les secrets, documentez la région d’hébergement et testez la suppression avant d’importer des données réelles.
Versionnez les prompts d’extraction et votre jeu d’évaluation. Un modèle peut transformer une hypothèse de l’utilisateur en « fait » ; imposez donc des règles de provenance, un niveau de confiance et, pour les données sensibles, une validation humaine. Ajoutez des métriques sur les écritures, les doublons, les souvenirs contredits, la latence et les erreurs d’ingestion. L’observabilité LLM générale reste complémentaire à celle de la mémoire.
Prévoyez enfin une stratégie de panne : timeout court sur le retrieval, réponse dégradée sans souvenir, retries bornés et file asynchrone pour les écritures. La gestion globale du contexte compte autant que le stockage : une mémoire correcte peut encore dégrader l’agent si elle injecte trop de texte. Restez sur une base classique quand les faits sont peu nombreux, structurés et soumis à des règles métier strictes.
Questions fréquentes
Letta s’appelait-il Bet ou MemGPT ?
Letta s’appelait auparavant MemGPT. Les sources officielles et le dépôt historique emploient « Letta (f.k.a. MemGPT) ». L’affirmation « ex-Bet » du brief est erronée. Le dépôt de l’ancien serveur v1 est archivé ; pour un nouveau projet, consultez la documentation et le dépôt actif indiqués par Letta.
Mem0 est-il open source et auto-hébergeable ?
Oui, le SDK et le serveur Mem0 open source sont publiés sous licence Apache 2.0 et peuvent être auto-hébergés. Mais ils ne reproduisent pas toutes les fonctions de Mem0 Platform. Depuis le pipeline OSS v3, la Graph Memory interrogeable est propre à la plateforme managée ; l’OSS conserve l’extraction, le retrieval et le scoping de base.
Peut-on encore self-hoster Zep ?
Pas via Zep Community Edition pour un nouveau déploiement : cette édition est dépréciée et n’est plus supportée. Zep propose son cloud et, pour certains contrats entreprise, du BYOC. Le chemin open source est Graphiti, le framework de graphe temporel qui alimente Zep, mais son exploitation n’offre pas automatiquement les services managés de Zep.
Mem0 ou Zep : lequel choisir pour un chatbot ?
Choisissez Mem0 si vous voulez surtout ajouter des préférences et faits utilisateur à une stack existante, avec une option OSS. Évaluez Zep si les relations temporelles, les données changeantes et une gouvernance managée justifient un Context Graph. Dans les deux cas, testez l’isolation, les corrections de faits et la suppression sur votre propre corpus.
Letta remplace-t-il une solution de RAG ?
Non. Letta peut gérer l’état et la mémoire d’un agent, mais un corpus documentaire exige toujours une stratégie d’ingestion, d’indexation, de permissions et de retrieval adaptée. Mémoire et RAG peuvent coopérer : la première suit l’expérience de l’agent ou de l’utilisateur, le second apporte des connaissances externes contrôlées.
Articles liés
Letta est le choix le plus cohérent pour adopter un runtime stateful complet, Mem0 pour greffer une couche mémoire à une stack existante, et Zep pour déléguer un contexte temporel à un service managé. Avant de choisir, formalisez vos règles de persistance et exécutez un pilote avec corrections, isolation et suppression. La prochaine étape logique consiste à cadrer votre stratégie de mémoire, puis à mesurer son effet sur le contexte.
Restez informé sur les agents IA
Nouveaux tutoriels, comparatifs et guides pratiques directement dans votre boîte mail.