NOATNotion-style notes that live in your IDE. Local-first, git-versioned, searchable, and readable/writable by your AI agents over MCP. Stop taking notes in stray FeaturesA real editor, not a text fileNotes open as normal editor tabs with a Notion-style block editor: type Link to code with
|
| Tool | What it does |
|---|---|
list_notes |
List all notes, filterable by scope |
read_note |
Read a note as markdown (raw blocks optional) |
get_note_outline |
Cheap preview of a large note |
search_notes |
Keyword / semantic / hybrid search |
create_note |
Create a note from markdown |
append_to_note |
Append markdown to an existing note |
replace_note_content |
Rewrite a note's content |
get_current_repo_scope |
Map a working directory to its note scope |
Agents write plain markdown; NOAT converts it to real editor blocks. In Cursor the server registers itself automatically — no configuration.
Git-versioned, synced to your commits
~/.noat is its own git repository. Note edits save to disk immediately, and whenever you commit in any workspace repo, NOAT snapshots your pending note changes with a message linking the two histories:
sync(my-repo): 3942d13 Fix webhook ordering [2026-07-07 16:35]
No hooks are installed in your repositories — NOAT watches for commits through the editor's git integration.
Install
From source (marketplace release coming):
git clone https://github.com/pintchom/noat && cd noat
npm install
npm run install-local # builds, packages, and installs into Cursor
Reload your editor window. You'll find the NOAT book icon in the activity bar.
Note: the packaged extension currently bundles native binaries for the platform you build on (e.g. Apple Silicon). Per-platform marketplace builds are on the roadmap.
Quick start
- Click the NOAT icon in the activity bar → New Note (scoped to your repo or global).
- Write. Type
/for blocks,@to link a file. It auto-saves. Cmd+Shift+Sto search everything.- Commit code like you always do — your notes snapshot themselves alongside.
- Ask your agent things like "search my notes for the ledger migration plan" or "save what we just learned to a note in this repo's scope."
Keybindings & commands
| Binding | Action |
|---|---|
Cmd+Shift+S (Ctrl+Shift+S) |
Search notes (hybrid) |
Cmd+Alt+P (Ctrl+Alt+P) |
Search notes (alternate binding) |
Cmd+P while the NOAT sidebar is focused |
Search notes |
Command palette: NOAT: New Note, NOAT: New Folder, NOAT: Search Notes, NOAT: Rebuild Search Index, NOAT: Open Notes Store in Terminal, NOAT: Refresh Notes.
MCP setup outside Cursor
Cursor registers the MCP server automatically. For other MCP clients, point at the bundled server:
{
"mcpServers": {
"noat": {
"command": "node",
"args": ["/path/to/extension/dist/mcp-server.js"]
}
}
}
The server works standalone — it reads ~/.noat directly and doesn't need the editor running. Set NOAT_HOME to use a different store location.
Storage
Everything lives in ~/.noat (override with NOAT_HOME):
~/.noat/
.git/ # your notes' own git history
.cache/ # embedding model cache (gitignored)
.index/ # search indexes — derived, rebuildable (gitignored)
notes/
global/ # universal notes, nested folders allowed
repos/<repo-key>/ # notes scoped to one repository
Notes are .noat.json files: a small envelope (id, title, timestamps) around a BlockNote block array. Plain files — grep them, script against them, take them with you.
Architecture
┌─────────────────────────────┐
│ Cursor / VS Code │
│ ┌──────────┐ ┌───────────┐ │ ┌──────────────┐
│ │ Webview │ │ Extension │ │ │ MCP server │◄── agents
│ │ editor │◄┤ host │ │ │ (stdio) │
│ └──────────┘ └─────┬─────┘ │ └──────┬───────┘
└─────────────────────┼───────┘ │
▼ ▼
┌─────────────────────────────┐
│ ~/.noat (git repository) │
└─────────────────────────────┘
- Extension host — sidebar tree, commands, git sync, search engine, file-open actions
- Webview — React + BlockNote custom editor for
*.noat.json - MCP server — standalone stdio binary sharing the same core code and store
- Core (
src/core/) — note model, store I/O, repo scoping, search; no VS Code dependency
Development
npm install
npm run watch # rebuild on change; F5 to launch a dev host
npm test # core unit tests
npm run typecheck # all three targets
npm run lint
npm run seed # fill your store with rich demo notes + backdated history
See CONTRIBUTING.md for project layout and conventions.
Roadmap
- Note history viewer (versions live in git already; UI pending)
- Line-number file links (
file.ts:42) - Title edits renaming the underlying file
- Per-platform marketplace builds (OpenVSX + VS Code Marketplace)
License
MIT