Grounder: session memory shared between Cursor and Claude Code

Hi everyone,

I’m a software dev, and in my daily routine I often switch between sessions, laptops, Cursor and Claude Code. Unfortunately every switch drops the thread; a plan that lives in one tool or machine is gone on another.

So I built Grounder, a CLI (not an MCP server, nothing hosted) that keeps structured memory as plain markdown in a local vault:

  • Skills/slash commands to store, search and retrieve plans, notes and session logs
  • Project-scoped: link it once per repo and it knows where to read/write
  • Plain markdown + frontmatter, git-native, no vector DB, no background process
  • Sidebar extension lets you browse project’s vault and drag a plan or plan into Cursor’s chat

Because it’s just files, a plan started in Cursor continues in Claude Code, and one started on one laptop continues on another - whatever you already sync the vault with (git, Syncthing, etc.) carries it over.

npm i -g grounder

GitHub: https://github.com/andrej-kolic/grounder

Curious to know how others here are keeping context across sessions and tools?

Hey, thanks for sharing. The problem of switching between sessions, machines, and different tools is genuinely painful, so the plain Markdown plus git native approach, instead of a vector DB and background processes, feels nicely minimal.

A couple questions about Grounder:

  • How do you handle conflicts when the same plan gets edited in two places and then synced later via git merge or Syncthing? Does frontmatter help with deduping in any way?
  • The sidebar extension with drag and drop of a plan into the chat, is that something you publish as a separate extension, or is it installed manually?

If you’re interested in the topic, there was a similar showcase nearby about persistent memory Memento: persistent memory for your Cursor agent, hosted over MCP, where the approach is via MCP, and a related request about a single source of truth for rules, skills, agents, and so on One account-level source of truth for rules, skills, agents, etc. (local + cloud), you might find like minded folks there.

How do you personally structure your vault across projects in the end, one folder per repo, or something more granular?

Hi Dean, thanks for taking the time.

You read the intent right - Grounder came out of my own problem, a solo dev who got tired of copy-pasting context between tools. The minimalistic approach is me refusing to add moving parts I’d have to maintain.

On conflicts:

Mostly avoided by design: handoffs and notes are append-only, every write is a new file named YYYY-MM-DD-HHmmss-<slug>.md. Machines working in parallel produce different files, so a merge is a union, not a conflict.

Plans are the exception, and exactly the case you named. It’s a living document you revise across sessions. Conflicts are rare for me as a solo dev, but when one happens I resolve it like any other file: in git or VS Code’s merge editor. I’ve left merge logic out of the CLI on purpose; I’d only be maintaining a worse version of widely used tools.

On frontmatter and deduping: partly. Modified plans carry an updated timestamp (on top of created) in UTC, so in a conflict you can see which side is newer without leaving the merge editor.

Your question did shake something loose, though. Handoff filenames use local time while frontmatter created is UTC, so across timezones an older handoff can sort as newest and recall loads the wrong session. Filed it: https://github.com/andrej-kolic/grounder/issues/132. Thanks for that, it’s the multi-machine case biting somewhere I hadn’t looked.

On the extension:

Published, not manual: VS Code Marketplace and Open VSX for Cursor, under “Grounder Xplorer” (because I permanently burned “Grounder” as a display name - don’t ask). It’s a tree-view sidebar for browsing the linked project’s vault and dragging documents into chat, built on top of the CLI, not a second implementation.

On the pointers:

Thanks for those. I went through both and left a couple of questions on the Memento thread

On vault structure:

One folder per repo:

vault/
└── 10-Projects/
    ├── project-a/
    └── grounder/
        ├── notes/     # short facts worth keeping
        ├── logs/      # session handoffs, one file per session
        ├── plans/     # living plan docs, updated in place
        └── blog/      # mine, not Grounder's

Grounder owns only notes, logs and plans; anything else in there is mine. Search works across everything inside the project folder. It’s for the files I don’t want in the project repo: half-formed product ideas, implementation plans I’m not ready to show.

Grounder is its own dogfooding case: 39 handoffs, 56 plans and 7 notes, all written by Grounder while building Grounder. Plan continuity is the part I use daily: open a plan in Claude Code, get pulled away, pick it up in Cursor on the other laptop, already current.

Out of curiosity, since you’re closer to this than I am: is cross-tool context something you see people asking for, or is the demand mostly cross-machine within Cursor?