cd /news/developer-tools/show-hn-cursor-buddy-get-archived-cu… · home topics developer-tools article
[ARTICLE · art-114619] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Show HN: Cursor Buddy, get archived Cursor chats out of renderer RAM

Cursor Buddy, a new Cursor plugin by GitHub user professorpalmer, exports archived Cursor chats from the renderer's RAM into a local SQLite vault, reducing memory usage; on one Mac tested 28 Aug 2026, the renderer used 1.97 GB RSS before pruning, with the vault storing 232 chats and 13,577 searchable messages. The plugin provides MCP tools for searching and reading chats without loading them back into the renderer, and a prune command to delete archived rows from Cursor's database after quitting the app.

read3 min views1 publishedAug 28, 2026
Show HN: Cursor Buddy, get archived Cursor chats out of renderer RAM
Image: Michielbdejong (auto-discovered)

Cursor's Archive button hides chats. The rows stay in state.vscdb

, and Cursor Helper (Renderer) keeps paying for them.

This is a Cursor plugin (not a standalone MCP dump): rules, skills, commands, logo, and an MCP server that searches a local SQLite vault. You ask “when did we talk about the memory leak?”; the agent pulls snippets. Ask for the whole transcript and it reads that chat into this conversation — not back into the renderer.

Measured on one Mac, 28 Aug 2026, after export, before prune: renderer 1.97 GB RSS, state.vscdb

3.68 GB (233 archived + 79 active), vault 2.68 GB (232 chats, 13,577 searchable messages). Search is 1-10 ms. Your numbers will differ.

You want Plugin surface What RAM it uses
Find the chats MCP search_archive , /search-archive
Vault SQLite. Renderer unchanged.
Read one chat MCP read_composer
Agent context in this thread. Still not the renderer.
Shrink Cursor /export-archived , Quit (Cmd+Q ), /prune-from-cursor
Deletes vaulted archived rows from state.vscdb .

Nothing is copied back into Cursor's live DB. Sidebar Archive is not this.

This is not a second Portable LLM Wiki. The wiki is markdown pages, [[wikilinks]]

, and Karpathy ingest. Buddy is a dump-and-query archive of Cursor composers. It steals the wiki's retrieval habits (composer as page, skip hub chats, empty index stays empty), not the wiki product.

Requires Python 3 on PATH

(the MCP server is stdio Python shipped inside the plugin).

Cursor discovers Cursor Plugins from ~/.cursor/plugins/local

when local plugin imports are allowed (docs).

git clone https://github.com/professorpalmer/cursor-buddy.git
mkdir -p ~/.cursor/plugins/local
rsync -a --delete --exclude .git cursor-buddy/ ~/.cursor/plugins/local/cursor-buddy/

Then Developer: Reload Window. Open Customize and confirm:

  • Plugin: Cursor Buddy
  • Rule: vault-not-live-db
  • Skill: archived-chats
  • Commands: /export-archived

,/prune-from-cursor

,/search-archive

  • MCP: cursor-buddy

withlist_composers

,search_archive

,read_composer

The bundled mcp.json

uses python3

plus ${PLUGIN_ROOT}/bin/cursor-buddy

(Agent Plugins spawn shape: interpolate PLUGIN_ROOT

in args

/cwd

, never in command

). If MCP connects with 0 tools, Cursor is still starting the server with cwd = home and not expanding ${PLUGIN_ROOT}

. Set args[0]

in ~/.cursor/plugins/local/cursor-buddy/mcp.json

to that copy's absolute bin/cursor-buddy

path and reload.

python3 ~/.cursor/plugins/local/cursor-buddy/bin/cursor-buddy export

python3 ~/.cursor/plugins/local/cursor-buddy/bin/cursor-buddy prune          # dry-run
python3 ~/.cursor/plugins/local/cursor-buddy/bin/cursor-buddy prune --apply

Vault path: ~/Library/Application Support/cursor-buddy/vault.sqlite

. Active (unarchived) chats are never exported or pruned.

Marketplace listing (after review): cursor.com/marketplace/publish.

Kind Path
Manifest .cursor-plugin/plugin.json
MCP mcp.jsonbin/cursor-buddy mcp
Skill skills/archived-chats/
Rule rules/vault-not-live-db.mdc
Commands commands/*.md
Hooks hooks/hooks.json (export on workspace/session)
Logo assets/logo.svg

Archive in the sidebar still does not copy or delete anything. Buddy splits the job:

Ingest (safe while Cursor is open).export

copies newly archived chats into the vault. Plugin hooks run that onworkspaceOpen

,sessionStart

, andsessionEnd

. Unchanged chats are skipped.Prune (only after Cursor releases Never from a hook that runs while the app is open. Install a LaunchAgent that prunes once the DB is idle:state.vscdb

).

python3 ~/.cursor/plugins/local/cursor-buddy/bin/cursor-buddy install-automation

If you archive a chat tonight, the next workspace open or agent session copies it. After you Quit (Cmd+Q

), leave Cursor closed for a minute so prune-if-idle can delete those rows (VACUUM can take a bit on a large state.vscdb

). Active chats are never touched.

Manual export/prune still works.

search_archive

keeps distinctive tokens (length >= 3, stop list), requires every token to appear in the same composer (title or messages, not necessarily one bubble), and caps hits per composer so a 50k-bubble chat cannot fill the result. Stop-only queries return nothing. Tool bubbles with empty text

are not indexed; composerData

/ plan blobs are not dumped into FTS.

MIT

── more in #developer-tools 4 stories · sorted by recency
── more on @cursor 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-cursor-buddy…] indexed:0 read:3min 2026-08-28 ·