Features

Memory that stays right, not just remembered.

Everything mindin does to give your agents a memory: what they get when a session starts, how they search, what keeps the notes in order and where the vault can live.

kind and status the schema checks
---
title: Orchard shop
kind: system status: active
path: ~/projects/orchard-shop
date: 2026-10-07 updated: 2026-10-21
tags: [orchard-shop]
---

Orchard shop

The webshop that sells apples, juice and monthly boxes from the orchard.

## Traps

stock-counts-on-harvest-day · payment-webhook-retries

## Remaining

Gift cards cannot pay for a box subscription.

path ties it to the code[[links]] that lint follows

Session start

The agent starts with its bearings.

When a session opens a repo, the agent gets the system note for that code, the open tasks, the traps, the last lines of the repo log and the commits newer than the note. No re-explaining, and no prompt about memory.

  • Open notes older than 30 days are listed for triage, so stale work gets settled first.
  • Works the same from the shell with mindin context.
~/projects/orchard-shop
$ mindin context Orchard shop The webshop that sells apples, juice and monthly boxes from the orchard. Areas/orchard-shop.md · updated 14 days ago 6 commits since the note c165b4d Charge shipping by box weight, not by order 11 days 0213c3e Hold stock for 15 minutes while a cart checks out 7 days f60d19a Send pickup reminders the evening before 4 days b788d7e Refund a cancelled subscription box pro rata 1 day 3f64d34 Show harvest dates on the product page today 4bf595b Keep the cart when a customer signs in today Open Let gift cards pay for a box subscription Pickup reminders by text message Wholesale accounts for the farm shops untouched 56 days Backlog ● Split VAT on boxes that mix juice and apples +3 Traps Stock is counted on harvest day, not on order The payment webhook retries for three days Last log 2026-11-02 Cancelled boxes refund pro rata
  • The note for this code. Found by its path, not by luck.
  • Newer than the note. The agent corrects the note before trusting it.
  • Untouched 56 days. Listed for triage: close it, add a line, or park it.
  • The top of the backlog, by priority.
  • Traps that bit once and will bite again.

Hooks

Hooks do the bookkeeping.

In Claude Code, the session start hook hands the agent its context. The stop hook keeps a session from ending with work unrecorded: after three of your messages without a save, it asks the agent to write down the decisions, deferrals and ideas in them.

  • It also asks for a log line for today's commits the repo log does not have yet.
  • Every check can be tuned or turned off.
Session start hookThe note, the open tasks, the traps, the last log line.
message 1
message 2
message 3
Stop hook: blockSave what was decided, log the commits, then stop.
Next sessionAlready knows.
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'])
the same reason, continued
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

Schema

A schema that refuses bad writes.

Every note has a kind, a status and the fields its kind needs. A write that breaks the contract is refused, and the refusal tells the agent what to fix. You keep the rules in one file in the vault, with required fields, legal statuses, kinds and a tag vocabulary. They travel with the server's MCP instructions, so Codex and Cursor follow the schema without a CLAUDE.md.

systemone per subsystem
taskwork that spans sessions
decisiona choice and its reasons
trapbit once, will bite again
howtosteps known to work
referencea pointer outside
logone line per session
  • Notes in Projects, Resources and Log must link the system note they belong to.
  • Statuses: draft, active, backlog, complete, superseded.

Lifecycle

Close, backlog, lint.

Finished work is closed and moves to the archive. What gets deferred goes to a backlog with a priority, the moment it is said. Each session leaves one line in the repo log with its commits. Lint reports drift before it misleads.

Close

Finished work is closed and moves to the archive, out of search until you ask.

Backlog

Sorted by priority, then age. Added the moment something is deferred.

Log

One line per session in the repo log, with its commit shas.

urgentSplit VAT on boxes that mix juice and applesorchard-shop2 days
highRefund a returned crate to the gift card it was paid withorchard-shop5 days
mediumWarn when a variety drops below ten cratesorchard-shop13 days
mediumWaitlist for full pressing workshopsworkshop-booking29 days
lowPreorders for the spring juice pressingorchard-shop34 days
$ mindin backlog · 5 items · --paths shows where each one lives · --area orchard-shop filters
mindin lint
$ mindin lint 4 findings in 4 kinds 1 done, not closed complete or superseded, still outside the archive 1 orphans no note links here 1 stale open tasks open and untouched for more than 30 days 1 unresolved links a [[link]] with no note behind it $ mindin lint --kind unresolved-links unresolved links (1) · a [[link]] with no note behind it Projects/orchard-shop-wholesale-accounts.md → wholesale-price-list
  • A weekly mindin lint --write Log/lint.md --park-stale parks the tasks nobody touched and keeps its report as a note.

Tied to your code

A note knows when the code moved on.

A system note names the paths it describes. At the start of a session, mindin lists the commits that touched those paths since the note was last updated, so the agent corrects the note in the same pass instead of trusting it.

  • One line per session in the repo log, with commit shas.
  • A sha in a search finds the notes that mention it.
Orchard shop Areas/orchard-shop.md
6 commits since the note
  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

Options

Your vault, where you want it.

Keep the vault in a local folder, an S3 bucket or on a vault server. mindin setup asks once and every client on the machine uses the answer.

mindin setup
$ mindin setup Where does your vault live? 1 A folder on this machine 2 An S3 bucket 3 A vault server Choose 1-3:
1

A folder on this machine

Plain markdown, already an Obsidian vault.

2

An S3 bucket

Any S3-compatible bucket, read and written by the same tools.

3

A vault server

Accounts, several vaults each, and every client and device. Hosted

Built-inPARASimpleJournalCustomBuilt-in is Areas, Projects, Resources, Log and Archive. Each layout has its own folders, rules and Obsidian Bases views. Switch later without moving a note.

Vault server

One server, every client and every device.

A vault server gives you accounts and several vaults each, and every client reaches the same notes. The vault's page has what each client needs.

Everything the server does

claude.ai, Claude Desktop and mobile

Add a custom connector with this address. Name it after the vault, for example Vault · Personal.

https://vault.example.com/mcp?vault=notes

Claude Code, Codex, Cursor

Sign this computer in to the vault. A repo can point at another of your vaults with mindin vault use.

mindin login https://vault.example.com --vault notes

Obsidian (Remotely Save)

WebDAV with your email as the username and a key from this vault as the password. The key decides which vault opens.

https://vault.example.com/dav/

Next to what you already have

Built-in memory remembers. mindin keeps it right.

Claude Code's auto memorymindin
Plain markdown you can editYesYes
Same memory on every machine and in claude.aiPer machineYes, through your server
Codex and Cursor read it tooNoYes
Refuses notes that break the schemaNoYes
Shows the commits newer than a noteNoYes
Backlog, archive and lintNoYes
Shared with a team, with restore per changeNoYes
Search by meaningNoYes, local or on your server
The server, the CLI and the plugin are open source under MIT. The vault server runs with Docker Compose, three files in each release.Install with Docker

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 guideRead the docs