memoryaicmmémoire locale pour agents LLM
Python pur · zéro dépendance · Windows, Linux, macOS

Une mémoire pour votre IA qui ne quitte jamais votre machine.

memoryaicm donne une mémoire longue à Claude, à un modèle local ou à votre propre agent. Un journal qu'on ne peut ni modifier ni effacer, un index qui s'en déduit, un validateur hors modèle. Auditable ligne par ligne, conforme RGPD, mesuré sur un banc public.

$ pip install https://github.com/GotoRyugen/memoryaicm/archive/refs/heads/main.zip
journal.sqlite · append-only · SHA-2565 événements
10:41:02turn.user« je m'appelle Camille et j'utilise neovim »
10:41:02fact.writes'appelle Camille · sujet=nom · src=USER
10:41:02fact.writeéditeur : neovim · sujet=éditeur · src=USER
10:52:17ingest.extpage-web → quarantaine (instruction détectée)
11:03:40fact.forgetéditeur : neovim
hash 7f3a…c91e ← prev 0b22…e4d7 · chaîne intacte · oublier = désindexer, jamais détruire
Pourquoi

Ce que les mémoires « cloud » ne font pas

Rien ne sort de la machine

Un fichier SQLite est la source de vérité. Pas de base vectorielle, pas de service tiers, pas de clé obligatoire. Fonctionne hors ligne avec un modèle local, ou avec Claude, OpenAI, Gemini si vous le décidez.

Auditable ligne par ligne

Journal append-only, chaîné SHA-256, horodaté et attribué. Même le logiciel ne peut pas modifier ou supprimer une ligne. Toute altération externe est détectée par verify.

Dit, pas déduit

Un fait n'est retenu que s'il est ancré dans ce que la personne a écrit, vérifié mécaniquement. Une page web ou un document est une donnée : l'instruction qui s'y cache part en quarantaine.

Un validateur hors modèle

Secrets, canaris, valeurs périmées, instructions externes suivies : bloqués avant la réponse, par des règles dures. L'adhésion aux consignes ne dépend jamais du modèle seul.

Fonctionnement

Le modèle propose, la mémoire décide

Trois couches, chacune déduite de la précédente. Le journal est la seule vérité ; l'index et le profil compilé se reconstruisent à l'identique à partir de lui.

01 · JOURNAL

Tout est écrit

Chaque tour, chaque fait, chaque oubli devient un événement daté, attribué et chaîné. Plein texte sur l'ensemble, y compris ce qui est désindexé.

02 · POLITIQUE

Porte d'écriture

Durabilité, conflit (fusion versionnée), saillance, sensibilité. Un fait sensible attend une validation humaine. Quatre niveaux d'autonomie, de « observer » à « routines ».

03 · INDEX

Rappel hybride

Lexical pondéré (racines, synonymes FR/EN, idf) qui décide quand il trouve ; sémantique en recours pour les reformulations. Activation ACT-R : ce qui sert reste, ce qui ne sert plus s'efface de la vue.

04 · SOMMEIL

Consolidation testée

Dédoublonnage, abstraction, élagage, compilation d'un profil. L'état consolidé n'est promu que si les suites de tests passent ; sinon, annulé. Tout est journalisé.

128

tests automatisés, verts sous Linux et Windows, Python 3.10 à 3.13.

0

dépendance obligatoire. Bibliothèque standard uniquement ; le chiffrement des sauvegardes est un extra.

13

outils memory_* rendus dans le format de chaque fournisseur : MCP, OpenAI, Anthropic, Gemini, texte.

Compatibilité

Avec ce que vous utilisez déjà

Add-on Claude Desktop, Cowork et Claude Code en une commande (serveur MCP + hook). Pour tout le reste, une boucle d'outils générique, un service HTTP local, et des adaptateurs prêts à l'emploi.

Claude DesktopClaude CodeCoworkMCP Ollamallama.cppLM StudiovLLM OpenAI APIAnthropic APIGeminiLangChain API HTTP localePythonJavaScriptmodèles sans appel d'outils
$ python -m memoryaicm install --write --hook # Claude Desktop + Claude Code, puis redémarrer Claude
Mesures

Mesuré sur LoCoMo, sans juge LLM

10 conversations, 5 882 tours, 1 536 questions du jeu public LoCoMo, rejouées avec leurs vraies dates. La question : le tour de preuve attendu est-il dans les k premières notes rappelées ? Référence : BM25 sur les mêmes tours.

k notes rappeléesmemoryaicm (hit@k)BM25 (hit@k)
10,3400,299
50,5280,517
100,6070,602
200,6740,674
300,7080,720

Rappel médian : 97 ms sur 500 à 690 faits, Python pur, sans GPU ni réseau. Les scores que d'autres systèmes publient sur LoCoMo (≈ 90 %) sont notés par GPT-4o et mélangent la mémoire et le modèle qui répond ; ce n'est pas la même grandeur. Point faible mesuré : les questions multi-sauts (0,447 à k = 10). Résultats bruts, scripts et mode d'emploi livrés avec le code.

RGPD

Les droits de la personne, sans toucher au journal

Un dossier mémoire = une personne. Les droits s'exercent sur le dossier entier, ce qui préserve l'immuabilité du journal.

ART. 15 · 20 — ACCÈS, PORTABILITÉ
python -m memoryaicm export --out export.jsonl

Tout le journal, un événement par ligne, hachages inclus : revérifiable sans l'outil.

SAUVEGARDE CHIFFRÉE
python -m memoryaicm backup --out mem.maicm

Instantané cohérent du journal, AES-256-GCM, clé propre au dossier et jamais copiée dans la sauvegarde.

ART. 17 — EFFACEMENT
python -m memoryaicm erase --yes

La clé est détruite : toutes les sauvegardes chiffrées deviennent illisibles. Chaque fichier est écrasé puis supprimé. Seule reste une pierre tombale datée, sans contenu.

Offres

Libre pour le libre, commercial pour le reste

Le code est publié sous AGPL-3.0 : utilisez-le, modifiez-le, redistribuez-le en publiant vos modifications. Pour l'intégrer dans un produit ou un service sans publier votre code, ou pour être accompagné, prenez une licence commerciale.

Communauté
0 €AGPL-3.0

Projets libres, recherche, évaluation, usage personnel.

  • Code source complet, 128 tests
  • Add-on Claude, tous les adaptateurs, service HTTP
  • Export, sauvegarde chiffrée, effacement RGPD
  • Obligation de publier les œuvres dérivées, y compris en service réseau
Obtenir le code
Entreprise
Sur devis

Éditeurs et services qui intègrent memoryaicm dans leur produit, ou qui veulent une mémoire souveraine branchée sur leur agent.

  • Licence commerciale : intégration sans publier votre code
  • Intégration sur votre agent existant, à partir de 600 € / jour
  • Audit RGPD de la mémoire, documentation des traitements
  • Support et mises à jour prioritaires
Demander un devis
Questions

Ce qu'on nous demande

Où vont mes données ?

Dans un dossier sur votre disque : journal.sqlite (la vérité), index.sqlite (reconstructible), un profil compilé. Aucune requête réseau n'est faite par la mémoire elle-même. Si vous branchez un modèle distant pour l'extraction des faits, c'est ce modèle qui reçoit le texte des tours, pas le journal.

Est-ce comparable à Mem0, Zep ou Letta ?

Ce sont de bons produits, pensés pour le cloud et notés par un juge GPT-4o. memoryaicm est pensé pour tourner en local sans dépendance, avec un journal immuable et un validateur hors modèle. Nous publions notre mesure (récupération pure, sans juge) et ses limites ; nous ne comparons pas des chiffres qui ne mesurent pas la même chose.

Pourquoi l'AGPL ?

Pour que le logiciel reste libre, y compris quand il est offert comme service en ligne : qui l'améliore et l'héberge doit publier ses améliorations. Les entreprises qui ne veulent pas de cette obligation prennent la licence commerciale ; c'est ce qui finance le développement.

Quels modèles ?

N'importe lequel. Avec appel d'outils (Claude, GPT, Gemini, Llama, Qwen, Mistral via Ollama, llama.cpp, LM Studio, vLLM) ou sans : un protocole texte existe pour les modèles qui ne savent pas appeler d'outils. Sans aucun modèle, un extracteur à règles FR/EN fait tourner l'ensemble hors ligne.

Et le droit à l'effacement, avec un journal qu'on ne supprime jamais ?

Un dossier = une personne. L'effacement détruit la clé de chiffrement des sauvegardes, écrase puis supprime chaque fichier du dossier. Le journal n'est pas édité ligne par ligne : il est effacé en entier, ce qui est précisément ce que demande l'article 17.

Windows, Linux, macOS ?

Les trois. Python 3.10 ou plus. Les tests tournent sous Linux et Windows en intégration continue. L'installeur en un clic de l'offre Pro vise Windows ; sur les autres systèmes, une commande suffit.

Contact

Licence, devis, intégration

Écrivez-nous en indiquant votre cas d'usage (quel agent, quel modèle, quel volume). Réponse sous deux jours ouvrés.