nicolas-ha.com · Français

A memory for AI agents, measured before it is trusted.

Flare, a local MCP server: search, memory and tools over your own files. Pre-release.

The problem: an agent says it saved a fact, and calls no tool. What it says about itself proves nothing.

1The diagram

The agent queries the Flare MCP server, which searches a local index; a hook triggers the save
Drawn in Excalidraw.
the agentFlarethe local indexthe hook, outside the model

2What I built

  1. The MCP server: 12 tools (search, save, extract, sql…) for Claude Code, Claude Desktop and Codex.
    • Clojure: 202 files, 52,000 lines; 1,264 tests.
  2. Hybrid retrieval: full text and semantic, over a local index.
    • SQLite or FoundationDB; GraalVM native builds.
  3. The write loop: a deterministic hook triggers the save, not the model's goodwill.
    • Secrets (a door code, a wifi password) are left out on purpose.
  4. The benchmark suite: BEIR, the write loop, hint routing, table extraction.

3The result

  1. Facts kept: from 0 to 0.67, p = 0.0013 (Fisher's test, 12 sessions per arm).
    • On non-secret facts: 8 out of 8.
  2. Retrieval at the published reference: SciFact NDCG@10 0.714 against 0.710; NFCorpus 0.352 against 0.353.
  3. Hint routing: precision 1.000, recall 0.944, no false positives.
  4. About ten ideas rejected, with numbers: cross-encoder rerank (SciFact −0.021, then −0.224), another embedder, INT8.
    • Biggest win: a fixed PQ threshold, +0.14 on SciFact dense.

4My role

  1. My project: about 18 months of work since March 2025, alongside my contracts.
    • Pre-release: no signed release yet.

5The video

One minute, synthetic voice, subtitled.