Skip to main content
Prérequis : Docker et uv installés. C’est tout — les valeurs par défaut de .env.example suffisent, aucune clé LLM requise pour tester.

1. Infrastructure

1

PostgreSQL 16 + pgvector, Redis 7

docker-compose.yml démarre pgvector/pgvector:pg16 (utilisateur haki, base haki, exposé sur le port hôte 5433 — pas 5432, déjà pris par un Postgres Windows local sur beaucoup de machines) et redis:7 (provisionné, usage prévu pour la queue).
2

Dépendances Python

uv installe Python 3.12 lui-même si besoin, plus haki (le SDK Python, dépendance éditable locale déclarée dans pyproject.toml).
3

Migrations

Applique les 8 migrations (alembic/versions/0001 à 0008) : extension pgvector, tables du Ledger, colonnes de recherche plein-texte, forget_receipts, auth/RLS/feedback, événements épisodiques, organisations.
4

L'API

Un souci en route ? bash scripts/doctor.sh diagnostique Docker, les conteneurs, Postgres, .env, les migrations et l’API en une commande — lecture seule, sans effet de bord, à relancer autant que nécessaire.

2. La preuve que tout marche

Dans un second terminal :
haki connect teste /health et écrit ~/.haki/config.json. haki verify joue le scénario complet en quelques secondes : il mémorise une préférence, ouvre une nouvelle conversation (nouveau thread_id), et vérifie que l’agent s’en souvient — avec la latence de chaque étape.
Si aucune clé API n’est configurée, haki verify tente un bootstrap de clé pour le projet prj_haki_verify (fonctionne sur un serveur neuf sans HAKI_ADMIN_KEY, ou en mode dev ouvert) ; sur un serveur qui refuse ce bootstrap, le scénario échoue avec un message explicite plutôt qu’une erreur muette.
Multilingue par défaut : Haki comprend et mémorise en français, anglais, espagnol et ~50 autres langues (embeddings multilingues locaux, paraphrase-multilingual-MiniLM-L12-v2). Un souvenir capturé en anglais est retrouvé par une question en français — vérifié par scripts/check_multilingual.py (3/3 PASS au dernier run documenté dans docs/SECURITY.md).

3. Premier appel manuel : capture puis context

Créez d’abord une clé (la toute première création est libre tant qu’aucune clé n’existe — voir Clés API) :
La réponse contient key (hk_...) une seule fois — copiez-la. Ajoutez ensuite -H "Authorization: Bearer hk_..." à chaque appel ci-dessous.
1

Capturer une préférence

2

Consolider (dev/ops — extraction du fait durable)

En développement (HAKI_LLM_PROVIDER=fake, le défaut), l’extraction ne fait pas d’appel réseau. En production (HAKI_LLM_PROVIDER=openai), ce même appel déclenche une vraie extraction LLM.
3

Demander la mémoire avant une réponse

La réponse contient le fait invoice_language: {"language": "fr"}, sa date de validité, l’identifiant de l’événement source, et un trace_id inspectable via GET /v1/inspect/{trace_id}.

Et ensuite

Concepts

Comprendre le Ledger, la bitemporalité, la supersession et le Context Assembler avant d’intégrer.

SDK Python

HakiClient, build_prompt_context, capture_turn, CLI haki.

Cursor

Serveur MCP en un clic, ou Cursor Hooks pour une capture garantie.

Gateway OpenAI

Mémoire automatique en ne changeant que base_url.