GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者による説明(英語の原文)
Local-first, persistent memory for AI coding agents — remember, recall, forget, and list, over MCP.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
NORN_DETECT_CONFLICTS必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"norn": {
"command": "npx",
"args": [
"-y",
"@samad001z/norn-server"
],
"env": {
"NORN_DETECT_CONFLICTS": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add norn --env NORN_DETECT_CONFLICTS=your-value -- npx -y @samad001z/norn-server動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"norn": {
"command": "npx",
"args": [
"-y",
"@samad001z/norn-server"
],
"env": {
"NORN_DETECT_CONFLICTS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"norn": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@samad001z/norn-server"
],
"env": {
"NORN_DETECT_CONFLICTS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
NORN_DETECT_CONFLICTS envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント samad001z で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.2.3)がレジストリに届いたのは4 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Persistent, visible memory for AI coding agents.
[Live site](https://norn-web-three.vercel.app) · Releases · Quickstart · Connect your AI tool
Your AI forgets you every session. Norn is a local MCP server that remembers your decisions, preferences, and project context across every session and project, for Claude Code, Cursor, and any MCP client. Unlike most memory tools it is fully local and fully inspectable: a dashboard lets you see exactly what it stored and forget anything you do not want.
What you need: just Node.js 20 or newer — you don't install Norn separately, the command below fetches it automatically. Check with node --version; if it's missing or below v20, grab the LTS from nodejs.org.
Connect to Claude Code — one command, no clone:
claude mcp add norn -- npx -y @samad001z/norn-server
Or use the CLI in your terminal — run it on demand, or install the norn command:
npx @samad001z/norn-core list # no install — npx fetches it each time
npm install -g @samad001z/norn-core # or put the norn command on your PATH
Any other MCP client — add this to its MCP config:
{
"mcpServers": { "norn": { "command": "npx", "args": ["-y", "@samad001z/norn-server"] } } }
Restart your tool. Norn registers four tools: remember, recall, forget, list.
Optional — flag possible conflicts: add
"env": { "NORN_DETECT_CONFLICTS": "1" }
to the config above and Norn will surface memories that might disagree, for you to
resolve in the dashboard. Off by default; it downloads a small extra model the first
time it finds a candidate, and it never changes your store on its own.
Not sure where that config goes? The [Connect Norn to your AI tool](docs/connecting.md)
guide has exact, copy-paste setup for Claude Desktop, Cursor, Windsurf,
VS Code + GitHub Copilot, and Gemini CLI — plus a beginner "what you need" and
troubleshooting. (VS Code + Copilot uses a
serverskey instead ofmcpServers.)
Verify it's connected: tell your assistant *"Remember that I prefer pnpm over npm,"* then in a new chat ask *"What package manager do I prefer?"* — it should answer pnpm by calling Norn's recall tool.
The first
rememberorrecalldownloads a local embedding model
(all-MiniLM-L6-v2, ~25 MB) once, then runs fully offline.
Or run from source
git clone https://github.com/samad001z/Norn.git
cd Norn npm install npm run build -w @samad001z/norn-core && npm run build -w @samad001z/norn-server claude mcp add norn -- node "$(pwd)/server/dist/index.js"
Memory survives across sessions, and recall is semantic: it matches meaning, not keywords.
Session 1
You: Remember that we deploy to production from the main branch on Vercel.
Claude calls
remember("deploy to production from the main branch on Vercel", project: "acme")
Session 2, the next day, in a fresh context window
You: How do we ship to prod?
Claude calls
recall("how do we ship to prod")
Norn returns "Deploy to production from the main branch on Vercel." even though the
query shares no keywords with the stored note.
Norn does not record your sessions. It is a memory store, not a logger — it never silently captures your prompts, code edits, or terminal commands. A memory exists only when the agent calls remember(), which happens in two ways:
main on Vercel."* The agent calls remember(...) and the note is saved.That is the point: you decide what's kept, so the store stays signal, not noise. The flip side is that if you never ask, nothing is saved — so a sparse dashboard after a long working session is expected, not a bug. The work itself lives in git; Norn is for the durable facts you want recalled later.
A few habits that make it pay off:
recall() on demand.Everything saved this way shows up in the dashboard, and you can forget any of it.
Three local pieces share one local database:
Claude Code / Cursor ──MCP (stdio)──► Norn MCP server ┐
├──► ~/.norn/norn.db Dashboard (Next.js) ────────────────────────────┘ (SQLite + sqlite-vec)
/server): exposes remember, recall, forget, list over stdio./core): SQLite + sqlite-vec, with embeddings from a local MiniLM model (no API key). recall blends semantic similarity with recency and trims results to a token budget; remember dedupes near-identical notes./web): a Next.js app to browse and manage everything.All three resolve to the same store, so a memory written by your agent appears in the dashboard, and a memory you forget in the dashboard is gone for the agent too. The store is chosen in this order:
NORN_DB_PATH, if set — an explicit override always wins..norn/norn.db, walking up from the working directory (see Per-project memory).~/.norn/norn.db.With no project store and no override, this is the original behavior: one global ~/.norn/norn.db.
Give a repo its own memory that ships with it. From the project root:
npx @samad001z/norn-core init # or: norn init
This creates a .norn/ directory holding that project's norn.db. Because each project has its own database file, memories never bleed across projects: an agent working in one repo only sees that repo's memory.
Norn finds your project the way git does — by walking up from the working directory to the nearest ancestor that contains a .norn/ directory. Run your agent (or the CLI) anywhere inside the repo and it resolves to the same store. The store is chosen in this order:
.norn/norn.db, walking up from the working directory.Even without norn init, projects stay isolated in the shared global store: every memory is stamped with the project root it was written under (a scope, derived from the nearest .git/.norn ancestor — distinct from the freeform project label), and recall only returns the current project's memories plus global ones. Separate db files are the primary isolation; the scope stamp is defense in depth for the shared store.
norn export/norn importare available from v1.1 onward. On earlier versions,
commit the binary
norn.dbdirectly (the defaultnorn initsetup).
norn.db is a binary SQLite file — it holds embedding vectors, so it has no readable git diffs and can conflict on merge. To version your memory cleanly, commit a diffable text export instead and let each checkout rebuild its own database:
norn export # writes .norn/memory.json — text, tags, project, ids, timestamps (no vectors)
memory.json is sorted deterministically, so re-exporting an unchanged store produces an empty diff. Embeddings are not stored in it; they are regenerated locally on import, so the file stays small and review-friendly. Commit it and gitignore the binary store with a .norn/.gitignore like:
# .norn/.gitignore — commit memory.json, ignore the binary store.
norn.db norn.db-wal norn.db-shm norn.db-journal
norn init(v1.1+) writes exactly this.gitignorefor you, somemory.jsonis the
committed artifact out of the box. Prefer to commit the binary
norn.dbinstead — no
import step on clone, at the cost of readable diffs? Just delete the
norn.dbline.
On a fresh clone, rebuild the local database from the committed file:
norn import # reads .norn/memory.json and regenerates embeddings locally
import upserts by id, so it is safe to re-run; it never duplicates a memory.
A self-contained, copy-paste walkthrough (uses npx, no install; needs Node 20+ and git):
# 1. Two separate projects, each with its own committed memory store.
mkdir -p /tmp/demo/alpha /tmp/demo/beta
cd /tmp/demo/alpha npx @samad001z/norn-core init npx @samad001z/norn-core remember "Alpha API rate limit is 600 requests per minute per token"
cd /tmp/demo/beta npx @samad001z/norn-core init npx @samad001z/norn-core remember "Beta deploys to prod from the main branch on Vercel"
npx @samad001z/norn-core recall "what is the request rate limit"
cd /tmp/demo/alpha npx @samad001z/norn-core export # writes .norn/memory.json git init -q && git add .norn/memory.json && git commit -qm "Add project memory"
mkdir -p /tmp/demo/alpha-clone/.norn cp .norn/memory.json /tmp/demo/alpha-clone/.norn/memory.json
cd /tmp/demo/alpha-clone npx @samad001z/norn-core import # regenerates embeddings locally npx @samad001z/norn-core recall "what is the request rate limit"
NORN_DETECT_CONFLICTS=1 and Norn flags memories that might disagree so you choose which to keep — it never auto-resolves, edits, or deletes. Off by default; the extra model only downloads once you turn it on.remember, recall, and forget as it happens, plus conflicts that need your call. See Norn Live.Local by default. The store is a SQLite file on your disk, the embedding model runs on your machine, and nothing leaves it: no account, no API key, no telemetry. Delete ~/.norn/norn.db and the memory is gone.
The dashboard lets you browse by project, search, and forget any m
冒頭だけを表示しています。続きはリポジトリで読めます