Open-source memory for coding agents

Explain it once. Every session starts where the last one ended.

mindin keeps what your agents learn as markdown notes you own, tied to the code they describe, in a vault that stays in order.

curl -fsSL https://mindin.dev/install.sh | sh

You are here: today's session opens with this

The session trailA walking map of the vault. Areas are hills, Resources a wood, the Archive a loch. A trail of past sessions runs across it, each leaving a note, and ends where today's session starts. 24 25 26 27 28 29 30 31 32 33 34 35 AREAS PROJECTS Resources Archive Oct 21a trap, keptStock is counted on harvest day Oct 27a decision, keptBalance before any card charge Oct 30deferred to the backlogSplit VAT on mixed boxes Nov 2the log lineCancelled boxes refund pro rata
The session trail: every past session left a note, and today starts from them AREAS Resources Archive Nov 2the log lineCancelled boxes refund pro rata Oct 30deferred to the backlogSplit VAT on mixed boxes Oct 27a decision, keptBalance before any card charge Oct 21a trap, keptStock is counted on harvest day
what the agent learned, kept in a notewhere it is checked next timethe trail of sessions, one log line each

Works in

  • Claude Code
  • claude.ai, Desktop and mobile
  • Codex
  • Cursor
  • any MCP client

Your vault lives in a folder, an S3 bucket or on a vault server.

Picks up where you left off

Nothing you decided gets lost between sessions.

Hooks in Claude Code do the bookkeeping. The session opens with its bearings, and before it stops the agent is asked to write down what you decided, so the next one already knows.

  1. Session startsThe hook hands the agent the note for the repo, open tasks, traps and the last log line.
  2. You workDecisions, deferrals and ideas come up in the conversation, as they always do.
  3. Before it stopsThe stop hook asks the agent to save them, and to log the commits.
  4. Next sessionStarts from the saved notes. No re-explaining.
Claude Code · Stop hook
$ mindin hook stop < stop.json | jq -r '.decision, .reason' block The vault is behind this session. log_append(repo='orchard-shop', branch='main', line='<what landed>', commits=['4bf595b', '3f64d34']) — 4bf595b Keep the cart when a customer signs in, 3f64d34 Show harvest dates on the product page; close these notes, or say in them what is still open: Projects/orchard-shop-wholesale-accounts.md (1mo old); the user wrote 3 messages since your last vault write: save any decision, deferral or idea from them in the vault (a task note, a Decisions line, backlog_add) before stopping, or stop again if there is nothing to save

Asked before the session ends, not after you forgot. Every check can be tuned or turned off.

A schema that holds

Bad writes are refused, not stored.

Every note has a kind, a status and the fields its kind needs. A write that breaks the rules goes back to the agent with what to fix. Lint catches the rest before it piles up.

orphansno note links here
unresolved linksa [[link]] with no note behind it
stale open tasksopen and untouched for more than 30 days
done, not closedcomplete or superseded, still outside the archive
The schema and the lifecycle

Tied to your code

A note knows when the code moved on.

Each system note names the code it describes. When a session starts, mindin lists the commits newer than the note, so the agent corrects the note instead of trusting it.

system noteOrchard shopAreas/orchard-shop.md
updated 14 days ago
  1. c165b4dCharge shipping by box weight, not by order11 days
  2. 0213c3eHold stock for 15 minutes while a cart checks out7 days
  3. f60d19aSend pickup reminders the evening before4 days
  4. b788d7eRefund a cancelled subscription box pro rata1 day
  5. 3f64d34Show harvest dates on the product pagetoday
  6. 4bf595bKeep the cart when a customer signs intoday

Works where you work

One vault, every client you use.

Run a vault server and the same notes reach every AI client that speaks MCP, on your laptop, your phone and in the browser.

What the vault server gives you

  • Connector

    claude.ai

    Add your vault as a custom connector. Claude Desktop and the mobile app follow with the same account.

    Connect claude.ai
  • Plugin and hooks

    Claude Code

    The plugin brings the server, the hooks and the skills. Sign the machine in once, or point it at a folder.

    Set up Claude Code
  • Any MCP client

    Codex, Cursor and more

    Any client that starts an MCP server or takes a URL reaches the same vault.

    Other clients
  • By hand

    Obsidian

    The vault is plain markdown. Open the folder, or sync a server vault over WebDAV.

    Open in Obsidian

Questions

What people ask first.

Does it send my notes anywhere?

No. Notes stay in your folder, bucket or server. Search by meaning runs on that machine, and the only download is the model itself.

Which agents does it work with?

Claude Code with hooks, claude.ai, Claude Desktop and mobile as a connector, and Codex, Cursor or any MCP client over stdio or HTTP.

Do I need Obsidian?

No. The vault is markdown files. Obsidian is a good way to read and edit them, and mindin writes Bases views for it.

Do I need a server?

Not on one machine: point it at a folder. A server is what lets claude.ai, your phone and other machines share the memory.

How is it different from a CLAUDE.md?

CLAUDE.md is instructions you write. mindin is what the work taught: decisions, traps, open tasks, kept current and tied to the code.

Can a team share one?

Yes. A shared vault has members, its own keys, and a history where any edit or delete can be restored.

Can I run the vault server myself?

Yes. The server is open source under MIT and runs with Docker Compose, from three files in each release.

Give your agents a memory.

One command installs mindin, asks where the vault lives and offers the Claude Code plugin with its hooks, Codex and Cursor. The docs cover claude.ai and a vault server.

curl -fsSL https://mindin.dev/install.sh | sh

Install guideSee every feature