The Librarian: a robed figure holding a glowing memory, surrounded by a halo of catalogued cards and a constellation of node connections.

The Librarian

Portable memory for AI agents, and a neutral session layer for handing work between them.

What it is

I think memory is one of the most important components of the agentic stack. The Librarian is what I built after trying — and abandoning — half a dozen approaches that treated storage as the problem. Storage isn't the problem. Discipline is.

Underneath, it's an append-only JSONL event log with a rebuildable SQLite/FTS index in front. Agents talk to it over MCP stdio or JSON-RPC over HTTP. A small Next.js dashboard sits on top for browsing, recall, and approving protected memories.

A separate session layer rides alongside the memory store: a neutral handover format that lets work started in one harness resume cleanly in another. Sessions are evidence, not memory; durable facts are promoted explicitly rather than scraped from chat history.

Evidence, not memory.

What's in the box

The dashboard

A small Next.js app on the side of the MCP server. Browse the active set, filter by agent or project, run the same recall path the agents do, and approve the categories the system won't auto-write.

Memories

The library itself. Filter by agent, project, category, visibility, or date; recall surfaces hits with a usefulness verdict so the store learns which memories pull their weight.

Memories view: a left-hand filter rail with agent, project, and category controls, beside a list of memory cards with titles, summaries, and metadata.

Sessions

Active, paused, ended. Each one carries a rolling summary and a next-steps list so the next agent — or the same agent next week — picks up cold without re-deriving context.

Sessions view: a list of session cards labelled active and paused, each showing project, visibility, harness, and last-activity timestamp.

Analytics & proposals

See who's writing what, by agent and by category. Identity and relationship memories route through a proposal queue so a person reviews them before they go active.

Analytics view: bar charts breaking down memory totals by agent and by category, with counts and percentages.

Run it locally

Node 22.5+ for the built-in node:sqlite. pnpm 9.15 via Corepack. That is the entire runtime requirement.

corepack enable && corepack prepare pnpm@9.15.0 --activate
pnpm install
pnpm run seed
pnpm run serve            # MCP server at http://127.0.0.1:3838
pnpm --filter @librarian/dashboard dev  # Dashboard at http://127.0.0.1:3000

There is a Docker compose path too, if you would rather not install pnpm locally:

cp .env.example .env
docker compose -f docker/docker-compose.yml up -d --build

Health check: pnpm run healthcheck. The full source — including the dashboard, the MCP server, and the the-librarian CLI — lives on GitHub.