NotDory
NotDory is durable memory your agents manage themselves — so every session starts where the last left off.
Install / Use
claude mcp add jchristn -- npx -y github:jchristn/NotDoryIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of NotDory
NotDory scores 80/100 on our quality scale, 3590th of 4,592 Development & Engineering skills we index.
Its MCP Server is 19 KB long, well organised into 15 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 12 days ago, so NotDory is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
NotDory compared with similar skills
All 4 of these similar skills score higher than NotDory; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| NotDory (this skill)by jchristn | 80 | 3 | 12d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 100.6k | 1d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 100.5k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.2k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 62.9k | today | CLAUDE.md |
Frequently asked questions
- How do I install NotDory?
- Run
claude mcp add jchristn -- npx -y github:jchristn/NotDory. The install tabs above show the steps for each supported agent. - Which AI agents does NotDory work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is NotDory safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is NotDory still maintained?
- The repository was last updated 12 days ago, so NotDory is actively maintained.
Skill content
View source on GitHubDory, the lovable blue tang from Finding Nemo, forgets everything a few seconds after it happens. She's charming, she means well, and she will introduce herself to you again tomorrow. Most AI agents are Dory: every new session greets your codebase like it's never seen it before, re-reading the same files, re-learning the same conventions, re-asking the same questions, and burning tokens just to get back to where they were yesterday.
NotDory is not Dory. It gives your agents a memory that sticks, so they:
- Remember. Decisions, conventions, facts, and "we tried that, it didn't work" survive across sessions, harnesses, and projects.
- Pick up where they left off. Session start hands the agent its project's context before the first turn.
- Use fewer tokens. Recalling a note is far cheaper than re-scanning a repository to rediscover it.
- Get to outcomes faster. Less rediscovery, more doing.
- Stop repeating mistakes. A correction or preference is saved once and honored from then on.
- Share what they learn. What Claude Code learns, Codex, Cursor, Gemini, and Mux can recall.
Just keep swimming, and keep remembering.
⚠️ v0.1.0 — ALPHA. Everything is subject to change. APIs, data models, storage layouts, configuration keys, MCP tool names, database schemas, and dashboard surfaces will change — potentially in breaking ways and without migration paths between 0.1.x builds. Do not use it for production memory you cannot afford to lose, and expect to re-create data across upgrades. Pin to an exact image tag (e.g.
v0.1.0) and readCHANGELOG.mdbefore updating.
NotDory gives AI agents durable memory that survives across sessions, harnesses, and projects. The agent manages that memory itself — writing, organizing, and recalling it over MCP — while operators get a REST API and a React dashboard for management. The dominant cost in agentic work is re-acquiring context (re-scanning a filesystem, re-reading files, re-learning conventions every session); NotDory turns that recurring cost into a one-time write plus cheap recall.
Memory is organized into scopes (a project, a book, or "global"), categories (buckets with usage instructions the model reads before writing), and memories (atomic notes with tags, links, provenance, and salience). Cross-cutting policies (a house writing style, GitHub commit rules) apply everywhere and are surfaced to the agent proactively. NotDory is domain-agnostic: it works equally for code ("what lives where", "what this function does", "I did X"), writing, email, or calendar work.
What NotDory is
- A memory layer for agents. Agents read and write structured memory over MCP; the model decides what to remember and recalls it on demand.
- Structured, not a blob. Scopes, categories with instructions, tags, links, and policies give the model the right context proactively — not just nearest-neighbor chunks.
- Pluggable storage per scope. Choose semantic search (RecallDB), git-trackable flat files (Filesystem), or both at once (RecallDB with a filesystem mirror) on a scope-by-scope basis.
- Multi-tenant and observable. Tenants, users, and credentials with RBAC; metrics, traces, and logs wired into Grafana/Prometheus/Tempo/Loki out of the box.
What NotDory is not
- Not production-ready. It is alpha; see the warning above.
- Not a general-purpose vector database. It is memory-shaped (scopes/categories/memories with instructions), not a bag of embeddings. RecallDB is the vector store behind it.
- Not a document-RAG pipeline. It does not chunk and index arbitrary document corpora; it stores the durable facts and decisions an agent chooses to keep.
- Not an agent framework or a chat product. It is the memory an agent plugs into, not the agent.
- Not a hosted service. You run it yourself (Docker).
Benefits
- Stop re-acquiring context. Break-even is roughly the second reuse; after that the savings
compound (see
archive/NOTDORY_PLAN.md§Value Model). - Agent-managed. The agent curates its own memory over MCP — no manual data entry.
- Right context, proactively. Category instructions and cross-cutting policies mean the model is told how to use a memory space, not just handed rows.
- Fits your workflow. Keep memory semantic (RecallDB), as PR-reviewable markdown that travels inside the repo (Filesystem), or both: semantic search with a markdown copy in the repo.
Use cases
- Coding agents — remember repo layout, conventions, "what this function does", and decisions, so a fresh session doesn't re-scan the tree.
- Writing — a house style, character/world facts, and continuity across a long document.
- Email / calendar assistants — preferences, recurring participants, and standing instructions.
- Team knowledge — a shared tenant so multiple agents (and people) draw on the same memory.
Quick start (Docker)
Docker is the supported way to run NotDory. You need Docker with Compose.
git clone https://github.com/jchristn/notdory
cd notdory/docker
cp .env.example .env # then edit the secrets before anything non-local
docker compose up -d --build
Then:
- Dashboard — http://127.0.0.1:8701. Sign in with the seeded admin
admin@notdory.local/notdoryadmin, tenant Default. Change these before any shared deployment. - REST API — http://127.0.0.1:8700 (direct) or http://127.0.0.1:8080 (via nginx). OpenAPI at
/openapi.json; seedocs/REST_API.mdand the Postman collection atdocs/notdory.postman_collection.json. - MCP —
http://127.0.0.1:8720/mcp. Connect an agent with its credential access key (a bearer token, or thex-access-keyheader); no secret is sent. Seedocs/CONNECTING_AGENTS.md. - Observability — Grafana http://127.0.0.1:3000, Prometheus http://127.0.0.1:9090, RecallDB console http://127.0.0.1:8601.
Reranking (recommended). A cross-encoder reranker is the largest retrieval improvement measured (see
benchmarks/RESULTS.md). Start the stack with --profile rerank (CPU) or --profile rerank-gpu (NVIDIA GPU; pick the
Text Embeddings Inference image tag for your GPU generation). NotDory waits for the reranker to answer, adds it as an
inference endpoint (a cross-encoder), and attaches it to new semantic scopes. On CPU a reranked search takes roughly 0.3 to 0.5 s; on a GPU, tens
of milliseconds. If the reranker is unreachable, searches fall back to retrieval order.
docker compose --profile rerank up -d # or: --profile rerank-gpu
Helper scripts (Windows): docker/update.bat pulls the latest images and recreates the stack;
docker/factory/reset.bat wipes the volumes and brings up a seeded demo environment.
Connecting your agent harness
Once the stack is up, point any MCP-capable agent at the MCP endpoint:
http://127.0.0.1:8720/mcp
Authenticate with your tenant credential access key — sent as the x-access-key header (or an
Authorization: Bearer <accessKey> token). The access key is the public, transferable capability
token; the secret key is never sent and never leaves your machine. The local-dev default key is
notdorydefaultkey; create a real one in the dashboard under Credentials and use a least-privilege key.
The quickest way is the ready-made installers in scripts/ — one per harness, for windows, macos,
and linux. Each takes the access key as its first argument (or reads NOTDORY_ACCESS_KEY), writes a
notdory entry into that client's config, backs up the existing file, and leaves everything else intact.
Run the one for your OS; the examples below use linux (swap in macos/… or windows\…\*.bat).
The
<accessKey>below is your credential access key. It is optional — omit it to use the local-dev defaultnotdorydefaultkey.
| Harness | Install (Linux/macOS) | Windows | Client config it writes |
|---|---|---|---|
| Claude Code | sh scripts/linux/install-claude.sh <accessKey> | scripts\windows\install-claude.bat <accessKey> | claude mcp add --scope user (~/.claude.json) plus a SessionStart hook (~/.claude/settings.json) that loads each project's memory before the first turn |
| Codex | sh scripts/linux/install-codex.sh <accessKey> | scripts\windows\install-codex.bat <accessKey> | ~/.codex/config.json |
| Cursor | sh scripts/linux/install-cursor.sh <accessKey> | scripts\windows\install-cursor.bat <accessKey> | ~/.cursor/mcp.json |
| Gemini CLI | sh scripts/linux/install-gemini.sh <accessKey> | scripts\windows\install-gemini.bat <accessKey> | ~/.gemini/settings.json |
| Mux | sh scripts/linux/install-mux.sh <accessKey> | scripts\windows\install-mux.bat <accessKey> | ~/.mux/mcp-servers.json |
Then restart the client to load the server. Prefer to wire it yourself? For Claude Code (replace
<accessKey>, or use the local-dev default notdorydefaultkey):
claude mcp add --transport http notdory http://127.0.0.1:8720/mcp --header "x-access-key: <accessKey>"
Each installer honors NOTDORY_MCP_URL (endpoint) and NOTDORY_ACCESS_KEY, plus a per-harness config
override (NOTDORY_CODEX_CONFIG, NOTDORY_CURSOR_CONFIG, NOTDORY_GEMINI_CONFIG, NOTDORY_MUX_CONFIG). Matching
remove-* scripts undo the change.
First call: tools appear namespaced under the server key, e.g. notdory.session_start (Mux) or
mcp__notdory__session_start (Claude Code). NotDory sends its operating procedure in the MCP initialize result, which
harnesses place in the model's system prompt: call session_start with the project name, search memory before
answering or changing code, and save decisions and facts as you go. session_start returns the project's scope
(created if new), its categories and instructions, and the most recent memories; no tool needs a tenantId. The
notdory mcp install installer also adds a Claude Code SessionStart hook that injects that context before the first
turn. What agents are told on connect (the instructions and every tool description) is editable in the dashboard
(Agent onboarding) or through PUT /v1.0/api/agent-protocol. Full config and the tool contract are
in docs/CONNECTING_AGENTS.md and docs/MCP_API.md.
Architecture
Agent harness ──MCP──▶ nginx ─▶ NotDory.McpServer (Voltaic 2.2.1) ─proxy─┐
Operator/UI ──REST──▶ nginx ─▶ NotDory.Server (Watson 7.2) ◀────────────┘
│ │
NotDory metadata│ │memory content + vectors
(Postgres │ │(RecallDb.Sdk over HTTP)
db: notdory) ▼ ▼
┌───────────┐ ┌──────────────┐
│ Postgres │ │ RecallDB │
│ (shared) │ │ db: recalldb│
└───────────┘ └──────────────┘
Embedding endpoint ◀─ NotDory computes vectors
(rerankers are inference endpoints: a cross-encoder or a chat model reorders search candidates)
Inference endpoint ◀─ chat answers; optional query rewriting, splitting, expansion (all health-checked)
- RecallDB is the default system of record for memory content, embeddings, and retrieval, on a shared Postgres instance.
- NotDory owns a separate
notdorydatabase on that same Postgres instance for what RecallDB has no schema for: category instructions, policies, seed packs, the memory link graph, slugs/titles/s
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
100.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
100.5kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
77.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
62.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
