AI memory for developers. Never lose context on your own code.
You open a PR from two weeks ago and you can't remember why you made those decisions. You ask an AI for help and have to re-explain your codebase every single chat. Your past self doesn't talk to your present self, and the AI tools you work with don't remember you.
DevNote fixes both. It captures every decision you make as you make it β reads your git diff, uses Gemini AI to write a structured note, saves it permanently to your own Notion workspace and to a local memory inside your editor. Your code gets a brain. The context stays with you forever.
Built into VS Code. One keyboard shortcut. No leaving your editor.
- It remembers. Every synced note is stored locally in a SQLite memory (
devnote.db) on your machine and synced to Notion. You get a Recent Notes list in the sidebar β browse and re-read any past note instantly, no network call, works on a plane. - It's AI-first, not AI-flavored. Gemini reads your entire branch diff and writes a structured note with Summary, What Changed, Why, Key Decisions, and Files Affected β not a generic "commit message on steroids."
- It respects your flow. Lives in a persistent sidebar panel β no modal interruptions, no extra tabs, no context switches. Draft recovery if something fails mid-sync. You never lose work.
- It's honest about scope. Notion is your human-readable archive (shareable, mobile, team-facing). SQLite is DevNote's own brain (fast, offline, MCP-ready). Both layers earn their place.
- It's open and private. Your notes are yours. Secrets live in VS Code's SecretStorage (OS keychain). The local memory is a single
devnote.dbfile in your user storage β delete it anytime with one button.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. You work. Make commits, changes, decisions. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 2. Press Ctrl+Alt+D. DevNote sidebar opens. β
β Type a title, optional description. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 3. Gemini reads your branch diff (main...HEAD) β
β and generates a structured dev note. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 4. Preview the note. Approve β synced to Notion AND β
β stored in your local memory (devnote.db). β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 5. The note appears in "Recent Notes" inside the β
β sidebar forever. Click to re-read. Offline. Instant.β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Two destinations, one action:
- Notion β the pretty, shareable, mobile-readable archive for humans
- Local SQLite β DevNote's own brain β powers search, RAG, and AI memory features
Gemini generates the structured note from:
- Full git diff (
main...HEAD) β every added/removed line across the branch - Uncommitted changes β staged + unstaged diffs if you haven't committed yet
- Files changed list β the paths touched in this branch
- Commit count β how many commits are on the branch (the number, not the messages yet β see Beyond Phase 2 below)
- Your form inputs β the title (required) and optional description you type
That's it. No hidden markers, no parsing of // TODO comments, no magic directives inside your code. Honest, inspectable, and tight.
- π§ Branch-aware AI notes β reads your entire diff vs
main/master(auto-detected) - βοΈ Smart prompts β Gemini returns structured JSON: Summary, What Changed, Why, Key Decisions, Files Affected
- π Automatic Gemini model fallback (
gemini-2.5-flashβgemini-2.5-flash-lite) when one is overloaded - π€ Notion sync with duplicate handling β Append, Replace, or Cancel when a title collides
- πΎ Draft recovery β if sync fails, your note survives restarts and shows as a banner
- π Every synced note saved to a local SQLite memory (
devnote.db) - π Recent Notes list in the sidebar β scroll through your full history
- β‘ Click any note β instant local preview (offline, no Notion round-trip)
- π Full-width "Open in Notion" button inside the preview for sharing/mobile
- π§Ή "Clear all memory" with optional backup-to-JSON export and a safe confirmation popup
- π Type a natural-language query β results ranked by meaning, not keywords
- Uses Gemini
gemini-embedding-001(3072-dim, L2-normalized) β dot product over your local memory - Sub-50ms search across thousands of notes
- 87%-style match badges on each row so you know how strong the hit is
- Lazy-spawned Python worker for the AI/ML layer β TypeScript orchestrates, Python executes
- One-time backfill popup the first time you search, then cached forever
- Settings β "Reset Python environment" + "Re-index all notes" for power-user recovery
- Threshold recalibrated to 0.70 in v0.4.2 to match the 3072-dim embedding noise floor
- π¬ Ask natural-language questions about your past notes β get grounded answers with citations
- RAG pipeline: retrieval (v0.4.0 reused) β augmentation (grounded prompt + last 4 turns of history) β generation (
gemini-2.5-flashstreaming) - Inline clickable citation pills (
[Note 1]) β click to open the source note in the existing preview - Light multi-turn β follow-ups like "when was that?" resolve pronouns from prior turns
- Streaming token-by-token (~500ms time-to-first-token) for snappy chat feel
- Refusal path: when the answer isn't in your notes, DevNote replies "I don't find that in your notes" β no hallucination
- Top-5 retrieved notes per turn at threshold 0.70 β single source of truth across search and chat
- Phase 2 of the AI Memory Arc closes here β DevNote now captures, searches, recalls, AND converses
- π¨ Persistent sidebar panel with a proper state machine β no modal disruptions
- β¨οΈ Single keyboard shortcut:
Ctrl+Alt+D - π Secrets in VS Code SecretStorage (OS keychain) β never in plaintext
- πͺͺ Verified publisher on Open VSX
- Install β search "DevNote" in the VS Code Extensions panel, or install the
.vsixfrom Open VSX - Open the sidebar β click the DevNote brain icon in the activity bar (left-side column)
- First-time setup β the sidebar shows a setup screen. Paste three things:
- Your Gemini API Key (get one free)
- Your Notion Integration Token (create one here)
- Your Notion Database ID (how to find it)
- Create your first note β on a feature branch with changes, press
Ctrl+Alt+Dor click Generate Doc in the sidebar. Fill the form. Approve. Done.
That's it. The note lands in your Notion database and appears in the Recent Notes list in the sidebar, forever.
DevNote is now a single-command extension. Everything else lives in the sidebar.
| Command | Shortcut | Description |
|---|---|---|
DevNote: Create Dev Note |
Ctrl+Alt+D |
Opens the sidebar and triggers the generate flow |
All legacy commands (DevNote: Sync to Notion, DevNote: Set Gemini API Key, DevNote: Set Notion Token) were removed in v0.2.0 β the sidebar handles all of that in-place. Use the gear icon (βοΈ) in the sidebar header to access Settings.
Full step-by-step setup (5 minutes, one-time):
- Go to notion.so/my-integrations
- Click + New integration
- Name it "DevNote" and give it access to your workspace
- Copy the Internal Integration Token β this is your Notion token
- In Notion, create a new page β Database β Full page
- Name it "Dev Notes" (or anything you like)
- Keep the default Name property β that's where DevNote writes your note titles
- Open your database page
- Click the β¦ menu β Connections β Add the DevNote integration
- Without this step, the API can't write to the database
- Open your database as a full page
- Copy the URL β looks like
https://notion.so/workspace/DATABASE_ID?v=... - The DATABASE_ID is the 32-character string between
/and?
On first launch, the sidebar shows a setup form. Paste the Gemini key, Notion token, and database ID β click Save. You're live.
DevNote stores your local memory at:
| OS | Path |
|---|---|
| Windows | %APPDATA%\Code\User\globalStorage\marudhu099.devnote\devnote.db |
| macOS | ~/Library/Application Support/Code/User/globalStorage/marudhu099.devnote/devnote.db |
| Linux | ~/.config/Code/User/globalStorage/marudhu099.devnote/devnote.db |
A typical year of heavy use is under 10 MB. Smaller than a single phone photo. The file is cleaned up automatically when you uninstall DevNote. You can wipe it anytime via Settings β Clear all memory (with optional JSON backup export).
DevNote adds one VS Code setting:
| Setting | Type | Default | Description |
|---|---|---|---|
devnote.notionDatabaseId |
string | "" |
The Notion database ID where synced notes are created |
The Gemini key and Notion token are stored in VS Code's SecretStorage, not in settings.
- VS Code 1.85.0 or newer
- A git repository β DevNote reads git diffs to understand your changes
- Gemini API key (free) β Google AI Studio
- Notion workspace with an integration token and a database ID
DevNote evolved from a one-way publisher into a true AI memory layer for developers across three releases. All three have shipped:
Every synced note gets a permanent home in a local SQLite database. A scrollable Recent Notes list in the sidebar. Click any note β instant inline preview served from local storage. Clear all memory with confirmation and optional export. SQLite foundation for everything that followed.
Type a natural-language question into the sidebar ("notion rate limit thing", "the SQLite decision") and DevNote returns your most relevant past notes β ranked by meaning, not keywords. Powered by Gemini gemini-embedding-001 (3072-dim, L2-normalized vectors) + brute-force dot-product similarity over your local memory. Under 50ms for thousands of notes. TypeScript + Python hybrid started here β Python owns the AI/ML layer.
- v0.4.1 patch β fixed a Windows Python detection race that caused false "Python 3.10+ not found" errors even when 3.12 was installed
- v0.4.2 patch β recalibrated the similarity threshold from 0.35 β 0.70 to match the 3072-dim embedding noise floor (the higher-dim model has a different similarity distribution; 0.35 let weak matches through)
The memory became conversational. Ask natural-language questions about your past notes and get grounded, cited answers. Retrieval (v0.4.0 reused as-is) + Augmentation (grounded prompt + last-4-turns history) + Generation (gemini-2.5-flash streaming). Inline clickable citation pills, refusal path on no-match (no hallucination), light multi-turn for pronouns and follow-ups. Phase 2 closes here.
Phase 2 is shipped. Phase 3 is being scoped from real-use feedback. Items in flight or under active consideration:
Real-use feedback on v0.5.0 surfaced rough edges, plus one production bug. v0.5.1 ships:
- π Markdown rendering fix β
marked.min.jswas being blocked by the webview sandbox (HTTP 403) because it wasn't loaded viawebview.asWebviewUri(...). Citations are clickable pills again, bold/italic/lists/code render correctly. - π¬ Chat moves to a dedicated tab (π Home / π¬ Chat) β full-height with sticky bottom input, ChatGPT/Claude muscle memory. Reverses the v0.5.0 stacked-input layout after dogfooding showed it felt cramped.
- β Stop button β replaces the send button while answers are streaming. Click stop β the bubble freezes at its current text (partial preserved).
- 3-stage loading state β "Searching your notes..." β "Found N notes..." β "Generating answer..." β replaces the silent-wait window between send and first token.
Listed in priority order based on user feedback so far. Tracked transparently so the direction is visible:
- Persistent chat history β ChatGPT-style browseable list of past conversations. Today chats are in-memory only and cleared on VS Code restart.
- User-selectable chat model β Settings option to pick between Flash (default), Flash-Lite (cost-sensitive), or Pro (deep thinking). Today the model is hardcoded.
- Dynamic suggested questions β generate prompts from the user's actual notes via Gemini, instead of hardcoded examples.
- Progressive markdown rendering β render bold/lists/pills inline as the stream completes each fragment, instead of waiting until
doneto render. - Python-side stream cancellation β Stop button currently discards chunks on the TS side; making the worker actually cancel the Gemini call would save quota for cost-sensitive users.
- Retrieval evaluation harness β a
golden setof 30 questions with known relevant notes, automated metrics (Recall@5, Precision@5, MRR) to drive future tuning instead of vibes.
Ideas we're deliberately NOT shipping during the Phase 2 memory arc, but actively tracking for the releases after v0.5.0. Listed here so the direction is transparent.
Today Gemini sees the diff + files changed + commit count. Post-v0.5.0 we plan to extend this with:
- Commit messages folded into the prompt β your own intent, encoded in messages like
fix: prevent sync from deleting local file on 429, is invisible to the AI right now. Adding subject lines (and optionally bodies) gives Gemini the narrative you already wrote. - Smart commit filtering β drop low-signal commits (
wip, single-letter, merge commits) so the prompt stays focused.
Today all three credentials (Gemini key, Notion token, Notion DB ID) are required. Post-v0.5.0 we plan to support a local-only mode for devs who don't use Notion β DevNote would work entirely off the local memory (devnote.db) with no Notion dependency. The "Open in Notion" affordance would simply hide for local-only notes.
Today you can only Clear all memory (the nuke button). Post-v0.5.0 we plan to add a per-note delete action so you can remove a single bad/embarrassing/obsolete note without wiping your whole history. Open question we'll brainstorm when we get there: does deleting locally also archive the Notion page, or leave Notion alone?
Today v0.3.0 starts with an empty local memory β existing Notion pages from your v0.1.x/v0.2.0 era are not imported automatically (the reverse transformation is lossy). Post-v0.5.0 we plan to offer a DevNote: Import from Notion command for users who want their full Notion archive pulled into local memory, with clear warnings about reconstruction fidelity.
Today the Recent Notes preview is read-only. If you want to edit, you open Notion. Post-v0.5.0 we're evaluating whether DevNote itself should support in-place annotations and edits β this is a meaningful product-mode shift (capture + recall β capture + author), so we're not committing to it until user demand is clear.
Screenshots and short GIFs of the sidebar flow in the README and Open VSX listing β following real feedback that the Notion sync feature is currently undiscoverable for new users.
Developers lose context on their own code. Two weeks after you ship a feature, you open the PR and stare at your own diff like it was written by a stranger. AI tools lose context too β every new chat starts blank. You re-explain your codebase, your decisions, your constraints every time.
DevNote solves both with one mechanism: capture every decision as you make it, store it permanently, feed it back to whoever needs it later β future-you, future-AI, or your teammates.
That's the soul. Not a note-taking app. Not a dev journal. A memory layer that makes forgetting structurally impossible for developers and the AI tools they work with.
MIT β see LICENSE.
Built by Marudhupandiyan (@marudhu099) as part of the CodeVantage platform.
Feedback, issues, feature requests β GitHub issues.