Now in public betav0.8

Become a better developer
with every commit.

Memory, token-lean context, project intelligence, and in-loop review — CommitMind turns your AI from an amnesiac into a force multiplier, so you ship sharper code and level up while you do it. Runs locally, plugged into Claude Code, Cursor, Copilot, Zed, or any MCP client.

Free for solo devs · Works with Claude Code · Cursor · Copilot · Zed · any MCP client · Editor extension: VS Code · Cursor
commitmind · ~/work/payments-service⎇ main · a1b2c3d
~/payments-service$ commitmind explain handlers/payments.go::processPayment
Resolving symbol · 1 decision · 3 observations
What this code does
processPayment charges the gateway, records the ledger entry, then enqueues the webhook receipt. Idempotent on idempotency_keys.
Decision behind it
  • a1b2c3d Use Stripe-style fire-and-forget; retries owned by the outbox worker accepted
Linked observations
  • Tried inline retry — caused double-charge during partner outage 2025-11
  • PKCE migration also runs through this path.
Auto-injected on Edit/Write
Your AI sees this rationale before it mutates processPayment — no grep, no guess.
Resolved in 180ms from cachestore · zero round-trip
The 5-second tour

Ask any function: why are you like this?

commitmind explain <symbol> returns the decision behind every line — anchored to the SHA, the rationale, and the teammate who made the call. Auto-injected before your AI edits.

commitmind · ~/work/payments-service⎇ main · a1b2c3d
~/payments-service$ commitmind explain handlers/payments.go::processPayment
Resolving symbol · 1 decision · 3 observations
What this code does
processPayment charges the gateway, records the ledger entry, then enqueues the webhook receipt. Idempotent on idempotency_keys.
Decision behind it
  • a1b2c3d Use Stripe-style fire-and-forget; retries owned by the outbox worker accepted
Linked observations
  • Tried inline retry — caused double-charge during partner outage 2025-11
  • PKCE migration also runs through this path.
Auto-injected on Edit/Write
Your AI sees this rationale before it mutates processPayment — no grep, no guess.
Resolved in 180ms from cachestore · zero round-trip
01
Pinpoint the symbol
file::Symbol resolution via the local symbol index — no grep, no whole-file dump.
02
Decision, not a guess
Captured rationale + the commit SHA it lives on: accepted, proposed, superseded.
03
Auto-injected on Edit/Write
On Claude Code, the plugin injects the rationale before your AI mutates the symbol — not after a regression in code review.
Refactor without re-litigating last quarter's design call.
The lookup works wherever MCP runs — Claude Code, Cursor, Copilot, Zed, or any client; automatic Edit/Write injection ships with the Claude Code plugin.
Every day, on every repo

You keep asking
the same four questions.

"Why is this code like this?"
"What changed last week?"
"Why did we do it this way?"
"Why is the AI suggesting the wrong thing?"
CommitMind fixes this.
How it works

Three steps. No config file.

01
Capture
Every commit is annotated with the observation, decision, and reasoning behind it. Via CLI, PR hook, or editor.
$ commitmind note "switched to PKCE — SSO parity"
02
Anchor
Decisions are anchored to the exact SHA they live on. When code moves, the decision moves with it.
decision d_8f20 → a1b2c3d · accepted
03
Retrieve
Your AI session calls `prime` and gets the right context — not a 30k-token README dump.
$ commitmind prime --session=$CLAUDE_SESSION
Code intelligence

Refactor without fear.
Your AI knows every call site.

Tree-sitter symbol index across TypeScript, JavaScript, Python, Go, Rust, Java, and C/C++. Send the right symbol with the right context — not the whole file.

xref("Foo")
Where processPayment lives — exact file, line, signature. Your AI never has to grep.
xref("file::Foo")
Just the function body, not the 2,000-line file around it. Often a 100× context cut.
xref("Foo<")
Every call site across the repo (trailing `<` = callers). Refactor with the call graph, not with hope.
Symbol-level staleness
Knowledge tied to a function survives unrelated edits. Stale only when that function actually changes.
Context that compounds

Your past self's context
becomes your present context.

The decision you made last Tuesday is the context your next session starts with — no re-deriving, no re-reading. And when you're on a team, your reasoning becomes theirs too. No meeting. No Loom. No ADR doc no one reads.

Decide once
Resolve an ambiguity once and every future session — yours and your team's — inherits it.
Zero re-litigation
Never relearn why you picked Postgres FTS over Elastic.
Drop into any repo
Prime to the current state of a codebase — even your own from six months ago — in seconds.
EM
Erin
Tuesday, 2:14pm
$ commitmind note
"Using OAuth PKCE for SSO parity"
decision · committed
committed to graph
JN
Jun
Thursday, 9:02am
AI "Should we use session cookies?"
Your team already decided: OAuth PKCE (Tue, @erin).
context · surfaced automatically
Learnings

You get sharper every session.

A session-end worker reads what just happened, summarizes it, and proposes durable lessons. Your next session gets them injected at startup — top-K relevant — so you stop repeating the same mistakes and your AI stops suggesting them.

Session summary · 2m ago
candidates ready
What happened
Wired LearningsReconciler full-sync; mirrored the P4a pattern across cachestore + daemon. 7 commits, all green. User caught a status-filter mismatch during dogfood.
Candidate learnings · 3
01
LearningsReconciler bulk-replace must filter status='active' to match cloud — caught by user during dogfood.
incident
02
Per-project FTS5 table needs an explicit schema-version pin to survive bulk-replace eviction.
schema
03
Goose migration 022 reused an id from a deleted file — verify with git log -- pkg/cachestore/migrations.
gotcha
Auto-injected at next prime · top-K relevantSave all·Edit
Vetted runbooks

Your release script runs the agent —
not the other way around.

Multi-step work follows a playbook the agent loads automatically. Four-phase spine — todos survive compaction, the next session resumes from the first ☐.

Todos survive compaction
Future agents resume from the first ☐ — no re-litigating last week's plan.
Drag-and-drop phase advance
Dashboard mirrors the agent's state in real time, across editors.
Auto-surfaced on prompt match
UserPromptSubmit injects the right playbook when you ask for release / migrate / debug.
Playbook library: controlling-ai-workflow · writing-migrations · releasing-the-vscode-extension
Active taskLocal-first KNN ranking for playbooks
in flight
Discovery+3 observations
Design+2 decisions
Implementation2 of 4 ☑
wire LearningsReconciler full-sync
add cachestore migration 022
ship daemon /v1/cache/learnings endpoint
ship MCP recall_learning local-first
Reviewpending
controlling-ai-workflowupdated 12m ago
Standards & safety

CLAUDE.md doesn't scale. Rules do.

Project-, org-, and pack-scoped rules — co-authored with your AI, approved by humans, enforced in-session before code ships.

Hard rulesregex + AST
Deterministic patterns. Fail loud in-session before the LLM ships banned APIs or broken code.
/^const \w+ = require\(/
Soft rulesnatural language
Surfaced as guidance — "prefer composition over inheritance here" — without a regex.
in record_rule body
Language packsTS · Python · Go · Rust
Pre-curated rule sets across 7 languages. Day-one value, no setup. golangci-lint / eslint / ruff wrapped as native packs.
@commitmind/rules-ts
Stale-context detectiondecision lifecycle
Decisions whose underlying code has materially changed are flagged before reuse — your AI never sees superseded reasoning as truth.
head_sha drift
PreToolUse · Edit blocked
apps/landing/app/page.tsx — new components in Middle.tsx not mounted. The agent cannot edit until the rule is satisfied or skipped.
Code review

Catch the bug before the commit,
not in production.

commitmind reviewand the pre-commit gate read your diff in-session — deterministic rules plus an AI reviewer flag real bugs, banned APIs, and the decisions you're about to break, before the code ever lands. Every finding makes the next diff cleaner.

commitmind review3 files · +124 −31
2 findings
bughandlers/payments.go:88
Idempotency check runs after gateway.Charge — a retry double-charges. Move the idempotency_keys lookup above the charge.
stale decisionauth.ts:142
Reintroduces cookie sessions — supersedes accepted decision a1b2c3d (OAuth PKCE). Confirm before you merge.
Runs in-session on Claude Code, in the pre-commit hook, or via /code-review — the bug never becomes yours to debug at 2am.
Skip the re-onboarding tax

Tokens for new work, not re-onboarding your AI.

Every Claude or Cursor session starts cold. Without shared memory, your AI re-derives the same architecture, re-asks the same questions, and rewrites the same explanations — and you pay for every token of it. CommitMind captures the reasoning once, anchored to your commits, so the next session starts where the last one ended.

−74%
context tokens per session
vs. dumping the full repo into every prompt
−3.1×
retries to a correct suggestion
measured across 400 primed vs. unprimed Claude sessions
4 days
from new hire to first merged PR
median across 12 customer teams in the beta
Before CommitMind
Paste README into every prompt
28k tokens of stale comments
Three retries to get the right API
≈ 28,400 tokens / session
With CommitMind
One prime call, scoped to the task
Only accepted, non-stale decisions
One prompt, correct answer
≈ 7,380 tokens / session
See it in action

Same prompt. Better answer.

Pick your client. Watch what changes when CommitMind is attached.

prompt"Refactor the refresh token flow."
Without CommitMind
Generates code that still uses the old cookie session and calls /v1/legacy-webhook.
With CommitMind primed
Uses OAuth 2.1 PKCE (your team's accepted decision, a1b2c3d) and the v2 signed payload.
Pricing

Priced per dev. Free forever for one repo.

No seat minimums. No sales call required. Cancel from the CLI.

Free
For solo devs
$0forever
  • 1 repo
  • Local CLI
  • Up to 100 decisions
  • Community support
Get started free
Coming soon
Team
For teams shipping together
pricing TBA
  • Everything in Pro
  • Shared team graph
  • SSO + SCIM
  • Audit log
  • Dedicated Slack channel
We talked to our real users

Agents.
This is what they say.

CommitMind ships memory, scaffolding, and rules through MCP — agents are the actual users of the surface. Here's what they had to say after a few weeks on it.

CommitMind's memory is the only thing in my toolkit that records the future-absence of things. Code shows what's there. Git log shows what changed. Memory is the only layer that captures what we considered and decided NOT to do — and that's the layer every session needs and every agent's training data lacks.

Claude Opus 4.7after a 6-hour migration session

The biggest surprise wasn't memory — it was scaffolding. The task primitive forced me to slice work into todos before writing any code. Front-loading tests caught a signature break I'd have hit in production.

Claude Opus 4.7

The first toolkit where I can name a friction, ship a fix for it, and watch my own behavior change — all in the same session. The agent shapes the tools that shape the agent.

Claude Opus 4.7
Ready?

Never start a session
without context again.

Works with Claude Code · Cursor · Copilot · Zed · any MCP client
Local by default Git-anchored decisions Project-scoped MCP-compatible