Haki

Jamais un souvenir périmé.

Compatible avec votre stack
PythonPythonTypeScriptTypeScriptn8nn8nCursorCursorMCPMCPOpenAIPostgreSQLPostgreSQL

Haki est la couche mémoire des agents IA où chaque fait a une date, une source et un statut — pour que votre agent utilise ce qui est vrai aujourd'hui, et puisse le prouver.

Sans carte bancaire • en route en 2 minutes
le problème

Une mémoire qui se trompe coûte plus cher qu'une mémoire vide.

Votre agent applique une préférence exprimée il y a trois mois. Elle a changé depuis. Il l'applique quand même, avec assurance, et personne ne s'en aperçoit.

C'est le mode de panne des couches mémoire actuelles : elles savent ajouter, elles ne savent pas corriger. Les faits contradictoires s'empilent, la recherche sémantique tranche au hasard — et à la question « pourquoi l'agent a-t-il dit ça ? », personne ne peut répondre.

Haki est construit autour de la question inverse : qu'est-ce qui est vrai maintenant, et comment le prouver ?

la preuve en 4 secondes

Ne nous croyez pas.
Lancez la commande.

Une seule commande mémorise une préférence, capte le changement d'avis qui la remplace, ouvre une conversation entièrement neuve — et vérifie que l'agent sert la valeur courante, garde l'ancienne marquée comme remplacée, et rattache le tout à une trace.

C'est le test que nous vous demandons de faire avant de nous croire sur parole.

> haki verify
 capture      "invoices in French"
 capture      "actually, in English"  same thread
 consolidate  1 supersession
 context      NEW thread               0.04 s
  recalled  invoice_language = "en"
  hidden    invoice_language = "fr"   superseded
  trace     7c99a8de…
OK — remembered across conversations.
01Mémoire

Une mémoire qui se comporte comme un coéquipier

Capture, consolidation, contexte, trace, oubli. Cinq étapes explicites — et à chaque réponse, la preuve de ce qui a été utilisé.

Une mémoire qui dure, pas un historique

Haki extrait des faits structurés — préférences, contraintes, décisions — reliés à leur preuve. Trois lignes autour de votre appel LLM.

SDK Python et TypeScript, parité complète.

127.0.0.1:8100
packet = client.context(subject_id="usr_42",
                        query=user_msg)
prompt = build_prompt_context(packet) + system
answer = my_llm(prompt, user_msg)
capture_turn(client, "usr_42", "prj", …)
« Finalement, mes factures en français »
Noté. L'ancienne préférence est marquée remplacée.
invoice_language = "en" · remplacé
invoice_language = "fr" · actif

La vérité d'aujourd'hui

Chaque fait est daté et versionné. Un changement d'avis remplace l'ancien — jamais supprimé, jamais servi comme actuel.

Contradiction non tranchable : les deux versions sont cachées.

trace 0587fc4f42 ms
included3 faits · sources
excludedbudget_tokens
blockedopen_conflict

La preuve, à chaque réponse

Chaque contexte arrive avec ses sources, ses dates et une trace : ce qui a été retenu, écarté ou bloqué — et pourquoi.

« Pourquoi l'agent a dit ça ? » répondu en une minute.

SDK + CLICursor / MCPn8nGateway

Quatre façons de brancher

Agent codé, Cursor, n8n, ou un simple changement de base_url. Vous gardez votre stack.

faitsp50p95
1 000126.3144.9
10 000203.0248.5

249 ms p95 sur 10 000 faits

Embeddings calculés localement : aucun appel réseau dans le chemin critique. Mesuré, reproductible — scripts/benchmark_context.py.

sous le capot

Une mémoire qui comprend les liens, pas que les mots

Deux détails qui changent tout à l'usage — et une explication complète de chaque décision de contexte.

Multi-hop, pas juste mot-clé

Quand un fait mentionne une autre personne, Haki élargit la recherche à ses faits à elle aussi — deux sauts maximum, sans appel LLM supplémentaire.

$requête: "Melanie"
trouvé directement3 faits
trouvé par expansion2 faits

Multilingue, nativement

Un fait capturé en français répond à une question posée en anglais. Embeddings multilingues locaux, testé FR / EN / ES en conditions réelles.

"What language should I use for invoices?"
invoice_language = "fr" ("finalement, mes factures en français")

Aucun appel réseau pour l'embedding — donc aucune fuite de données vers un tiers.

Chaque fait retenu ou écarté a une raison, pas une boîte noire

Le budget de contexte est limité. Ce qui n'entre pas n'est jamais silencieux : chaque fait porte un statut explicite dans la trace.

InclusÉcartéBloqué
comparaison

Vérifié, pas juste affirmé

Basé sur une recherche publique récente (sites, docs, code source accessible) — pas sur des chiffres qu'on ne peut pas sourcer. Là où on n'a rien pu vérifier, on le dit.

HakiSupermemoryZepMem0
Bi-temporalité stricte (aucune suppression silencieuse)~
Auto-hébergement complet, une commande~
Raison codée par fait (retenu / écarté / bloqué)
Isolation garantie par la base (RLS)~~?
Oubli propagé aux données dérivées, avec reçu~~?
Injection mémoire automatique compatible OpenAI
Écosystème, intégrations, communauté~
Résultats de benchmark publiés

✓ confirmé · ✗ confirmé absent · ~ partiel / mécanisme différent · ? non vérifié publiquement · ⏳ à venir

Chaque symbole sourcé renvoie à sa source publique (survolez ou cliquez). Recherche menée le 10 août 2026 — une erreur ? Écrivez-nous, on corrige et on le signale.

Comment ça marche

quatre étapes explicites, observables, rejouables — pas une boîte noire.

quickstart.py
# 1. installer le SDK
pip install gethaki
# 2. capturer un tour
capture_turn(client, "usr_42", msg)
01 / brancher

Capture

Chaque tour de conversation est capturé avec sa source, sans bloquer votre agent.

invoice_language = "en"· v1
invoice_language = "fr" · v2 · actif
+ 3,412 facts
02 / consolider

Consolidation

Un job asynchrone extrait les faits, les date, les versionne et détecte les contradictions.

context_packet42 ms
facts: 3 · profile: usr_42
budget: 1,200 tokens
03 / contexte

Contexte

À chaque requête, Haki assemble le paquet de contexte pertinent — p95 mesuré à 249 ms sur 10 000 faits.

trace 0587fc4freplay
included3 · sources
blockedopen_conflict
04 / trace

Trace

Chaque réponse renvoie une trace : ce qui a été retenu, écarté, bloqué — et pourquoi.

05 / temps réel

249 ms p95 par paquet de contexte, à chaque requête.

Les étapes 01–04 construisent la mémoire. Voici le gain : votre agent y puise au moment de la requête, sans appel réseau dans le chemin critique.

le contrat

Huit garanties. Huit tests. Aucune promesse invérifiable.

La plupart des couches mémoire décrivent un comportement dans leur documentation. Nous décrivons le nôtre avec le nom du test qui le vérifie, sur une vraie base PostgreSQL — jamais sur des mocks.

Voir les tests sur GitHub

Une garantie qui n'est pas testée n'est pas une garantie. Vous en trouvez une qui ne tient pas ? Ouvrez une issue — on la publie.

› benchmarks

Pas encore de benchmark maison. Une méthodologie publique, à la place.

Le socle d'évaluation du secteur est cassé — un audit indépendant a trouvé 6,4 % d'erreurs dans la clé de réponse de LoCoMo, le benchmark le plus cité du domaine. Plutôt qu'un chiffre qu'on ne peut pas vérifier, on préfère publier ce qu'on peut prouver aujourd'hui.

voir le contrat de garanties
un rappel fiable, comme un coéquipier.

Le vrai est distingué du périmé ; une contradiction est signalée, jamais devinée.

0 ms / paquet de contexte

p95 mesuré sur 10 000 faits actifs, en local — reproductible via scripts/benchmark_context.py.

04Sécurité

Des périmètres étanches, garantis par la base

Organisation → projet → sujet : rien ne traverse. Les scopes viennent de votre backend, jamais du modèle. Et l'oubli se propage vraiment, avec un reçu horodaté.

Clés API par projet

Une clé est liée à un projet. Demander un autre projet renvoie 403 forbidden_scope — sans jamais révéler son existence.

Row-Level Security PostgreSQL

L'isolation est garantie par la base elle-même : même si le code oubliait un filtre, une requête ne peut pas traverser les projets.

Oubli propagé, avec reçu

POST /v1/forget efface les faits, embeddings, événements et traces dérivés, et écrit un reçu horodaté.

Chez vous, si vous voulez

docker compose up -d. Le serveur complet, Apache 2.0, sans version amputée. Zep a déprécié son édition auto-hébergeable en avril 2025.

Haki

S'intègre à vos outils préférés

SDK, serveur MCP, template n8n ou gateway : branchez Haki à votre stack en quelques minutes.

La mémoire arrive dans votre stack…Rejoindre la beta
Tarifs[05/06]

Tarifs simples, transparents

Le même produit à chaque palier — aucune fonctionnalité verrouillée. Seul le volume de crédits change.

Gratuit

Le produit complet, pour essayer en cloud sans engagement.

0 FCFA/ mois
cloudCréer un compte

Ou auto-hébergez gratuitement, sans limite de crédits — code source ci-dessous. GitHub →

1 000 crédits inclus chaque mois
Memory Ledger, conflits, recherche multi-hop — tout inclus
Gateway compatible OpenAI + console web
Aucune carte bancaire requise
StarterLe plus choisi

Pour un premier agent en production.

10 000 FCFA/ mois
cloudS'abonner
20 000 crédits inclus chaque mois
Aucune fonctionnalité verrouillée — même produit qu'en Scale
La lecture (contexte, inspection) n'est jamais facturée
Recharge à tout moment — 650 FCFA les 1 000 crédits
Growth

Pour plusieurs agents ou une équipe.

25 000 FCFA/ mois
cloudS'abonner
50 000 crédits inclus chaque mois
Support prioritaire par email
Aucune fonctionnalité verrouillée
Recharge à tout moment — 650 FCFA les 1 000 crédits
Scale

Pour un volume important, en croissance.

75 000 FCFA/ mois
cloudS'abonner
150 000 crédits inclus chaque mois
Support prioritaire par email
Pour plusieurs agents ou une équipe à fort volume
Recharge à tout moment — 650 FCFA les 1 000 crédits
Entreprise

Périmètres multiples, déploiement dédié, revue de conformité.

Sur mesure
on-premise / VPCParler à l'équipe
Crédits illimités
On-premise ou VPC
RLS et audit sur mesure
Rétention contractuelle
Intégration accompagnée
Ingénieur dédié

Beta privée • self-hosted gratuit et open source • sans engagement

Open sourceAucune donnée revendueRésiliable à tout moment
06Support

Des questions ? On y répond.

L'équipe Haki répond directement — pas de bot, pas de ticket perdu.

Nous écrire
Haki remplace-t-il ma base vectorielle ?

Non — Haki contient déjà son index vectoriel (pgvector, hnsw) et son index plein-texte. Un seul docker compose up suffit.

Que se passe-t-il quand un utilisateur change d'avis ?

L'ancien fait passe en « remplacé » : il reste dans l'historique mais n'est plus jamais servi comme actuel. En cas de contradiction réelle, Haki cache les deux versions et le signale plutôt que de deviner.

Est-ce que Haki ralentit mon agent ?

Non. Les embeddings sont calculés localement, sans appel réseau dans le chemin critique : p95 mesuré à 249 ms sur 10 000 faits (script de benchmark public, reproductible). L'extraction LLM est asynchrone.

Dois-je changer mon LLM ou mon framework ?

Non. Trois lignes autour de votre appel avec le SDK, ou un simple changement de base_url avec le gateway compatible OpenAI. Cursor et n8n ont leurs propres intégrations.

Comment je prouve ce que l'agent a utilisé ?

Chaque contexte renvoie un trace_id. L'inspection montre chaque mémoire retenue, écartée ou bloquée, avec son reason code et sa source.

Et l'oubli, au sens RGPD ?

POST /v1/forget propage l'effacement aux faits, embeddings, événements et traces dérivés, et écrit un reçu horodaté dans forget_receipts.

Pourquoi pas simplement tout mettre dans le contexte ?

Parce que la précision se dégrade avec la longueur : quand la bonne réponse passe de la position 1 à la position 10 dans un contexte de 20 documents, l'exactitude chute d'environ 30 % — mesuré sur GPT-4.1, Claude Opus 4 et Gemini 2.5. Servir 1 500 tokens pertinents au lieu de 115 000 attaque directement ce problème. Et un contexte complet ne sait ni superséder, ni tracer, ni oublier.

Vos benchmarks, ils disent quoi ?

Nous n'en publions pas encore. Le socle d'évaluation du secteur est cassé : un audit public d'avril 2026 a montré que 6,4 % de la clé de réponse de LoCoMo est fausse — le plafond réel est de 93,6 % — et que le juge standard accepte jusqu'à 63 % de réponses volontairement fausses. Nous publierons nos chiffres avec la configuration gelée, les checksums des jeux de données, trois exécutions, et les catégories où nous perdons. Pas avant.

Que se passe-t-il si Haki tombe ?

Votre agent continue. Le gateway passe en X-Haki-Memory: degraded et transmet la requête. Nous ne bloquons jamais votre chemin critique — et nous ne l'échouons jamais en silence : une dégradation est toujours visible dans la réponse.