Labsco
MCP SERVER

mindpm Project Memory

by umitkavala

Keep tasks, decisions, notes and session handoffs for a project in a local SQLite file, so the next conversation starts with what changed rather than with an explanation.

Agent MemoryVerified
Summary
The brief is anchored on a commit sha, so a rebase does not make it lie.

Most catch-up tooling diffs on a timestamp, which quietly breaks the moment history is rewritten. Here the git delta is anchored on the exact sha recorded when the previous session ended; if that sha becomes unreachable after a force-push, it falls back to a timestamp and says so in degraded_reasons rather than presenting a wrong answer as a right one. The same honesty shows in the gap label — a gap over fourteen days comes back marked stale with a hint to re-verify rather than trust the stored next steps. Nothing here calls a model or touches the network: it is local git subprocesses and a local database.

What it is

Project memory for an assistant, held in a SQLite database on your own machine at ~/.mindpm/memory.db. It tracks tasks, decisions with their rejected alternatives, notes, key-value context and sessions, and serves a Kanban board on http://localhost:3131 alongside the tools.

What you get
  • A session that opens with an orientation rather than a blank slate: start_session returns the last session's next steps, active tasks, blockers and recent decisions, and end_session records what was accomplished and what comes next.
  • A read-only brief of what changed while you were away — commits, branch and working-tree state, task status changes, new blockers, decisions and notes — without opening a session (get_session_brief).
  • Tasks with status, priority, blockers and sub-tasks, plus two queries that answer the actual question: what should be worked on next, and what is blocked and by what (create_task, update_task, list_tasks, get_task, get_next_tasks, get_blockers).
  • Decisions recorded with the reasoning and the alternatives that were rejected, tagged and listed back later (log_decision, list_decisions).
  • Notes for architecture, bugs, ideas and research findings, and key-value context for conventions, config values and constraints (add_note, search_notes, set_context, get_context).
  • Ranked full-text search across tasks, notes and decisions for a project, using FTS5 (search).
  • Project-level views: a full status overview, a high-level summary of tasks by status with recent activity and upcoming priorities, and DORA-inspired delivery metrics covering throughput, lead time and flow efficiency (get_project_status, get_project_summary, get_delivery_metrics).
  • The project record itself, including the local git repository path the brief needs in order to report commits (create_project, list_projects, set_project_repo_path).
  • A read-only SQL escape hatch for questions the other tools do not cover — SELECT statements only (query).
  • The recommended usage instructions, so you can hand the same conventions to another client (get_agent_instructions).
Requirements

Node — `npm install -g mindpm` — and nothing else: no account, no key, no network. The database lives at ~/.mindpm/memory.db unless MINDPM_DB_PATH says otherwise, and every client you configure shares it, so you can switch tools mid-project. MINDPM_PORT moves the Kanban board off 3131. Git activity in the brief needs the repository path registered against the project; without it the brief still reports the task, blocker and decision delta.

Setup effort

One command — npx -y mindpm