It renders, it never remembers: Hypermnesia MCP Viz, traced through its source
Cortex writes what a session learned into PostgreSQL. Claude Code leaves a separate record on disk, one JSONL file per session. Neither is readable without a query. This tool turns both — plus your local git and a codebase graph — into six reading angles in a browser tab, served by a process that binds to loopback and shuts itself down after ten idle minutes. It renders; it does not remember. That sentence is exactly true of Cortex’s memory tables and false of the database as a whole, and the second exhibit says where the line falls instead of waiting for you to find it.
One MCP server, one detached web server, three sources it does not own
The MCP host starts a launcher, which installs the tool’s own dependencies into a private directory and then runs the server in the same process.3 That server speaks stdio and publishes exactly two tools.2 Opening a visualization renders nothing in-process: it spawns a separate, detached operating-system process that binds 127.0.0.1 and serves the browser page.4 A third process does the graph build, because a CPU-bound build starves the GIL when it runs as a thread.6 Everything below describes the hypermnesia-mcp-viz distribution at version 3.2.0.1
“Read-only”, said exactly
The claim on the box is that this tool never writes a memory. It is true, and it is narrower than it sounds. Nothing writes Cortex’s memory tables: the reader’s entire method surface is SELECT, the schema preflight is one catalogue query, the health probe is SELECT 1.16 But the connection is not opened read-only — no SET TRANSACTION READ ONLY, no restricted role, and autocommit=True, which commits every statement immediately, DDL included.9 The tool creates and writes five tables of its own in the same database111213. The project states that correction itself rather than leaving the older blanket claim standing.10
From the row to the pixel
A memory row has no position. Everything between the SELECT and the dot on your screen is computed here, and each step carries constants chosen against a measurement rather than by taste. The edges come from three additive channels: shared entities weighted by inverse document frequency, nearest neighbours in the embedding space, and temporal co-access.17 The colour comes from Leiden community detection at a resolution picked as the knee of a measured sweep.18 The position comes from igraph’s DrL, and only above two hundred nodes.19
Six reading angles, and what each one needs
The MCP tool accepts only two view values, galaxy and brain; the six angles are tabs inside the page, not tool arguments.2 One of them works with no database at all: Trace is the default landing view and reads only your session logs and your git, which makes the tool useful before Cortex is installed.27 The other five need the store, and say so natively instead of failing at the first click.29
What is measured, and what is only claimed
The project separates those two registers in its own files, and this dossier keeps the separation. The middle column is reproducible and dated. The right column holds design intentions with no attached protocol, quoted as such rather than repeated as performance.
| Subject | Measured, with a date | Claimed, no protocol found |
|---|---|---|
| Corpus size | 278 557 nodes / 5 526 064 edges, 2026-07-02 — the measurement that forced the framed format21 | “the galaxy builds end-to-end at 75k+ nodes” |
| Community resolution | sweep over 9 889 memories / 27 346 edges, 2026-07-07; gamma 0.0005 taken at the knee18 | — |
| Browser thresholds | freeze points measured on the N ≈ 17k → 27k jump24 | “first paint of the skeleton lands in ~1 s” |
| Tiles | 64 658 rows read in 35 ms, extrapolated to 250 000 rows inside a 200 ms budget22 | “<5 ms even for 10M-row tables” |
| Tests and audits | 988 passed / 10 skipped, 81 % statement coverage; OpenSSF Scorecard 7.4, Best Practices Silver, both 2026-08-0331 | — |
| Maturity | classifier Development Status :: 3 - Alpha, single maintainer33 | — |
Three limits are stated by the project rather than discovered against it: it will not write Cortex’s memory tables, ever; it will not be deployed remotely, because the loopback bind and the absence of authentication are the design;32 and Windows is not declared supported, only partly addressed.33 One documentation claim does not survive a reading of the tree: the offline-operation sentence in PRIVACY.md is contradicted by KaTeX, d3, mermaid and CodeMirror loading from CDNs on the unified page, several without an integrity hash.26