Docmancer started by unearthing the memory coding agents had already written. It now turns that context into memory atoms, small self-contained facts, decisions, rules, preferences, and workflows that can be managed independently. Version 0.6.14 closes the rest of the loop locally: you can add a durable atom, inspect its source and stable ID, forget stale knowledge safely, capture useful outcomes through a separate opt-in, and promote reviewed atoms into a repository for ordinary Git review.
Start with the context that already exists
docmancer setup
docmancer memory query "why did we pick Railway?" --project "$PWD"
Project-aware recall includes matching project and team memory plus global preferences, while excluding decisions from unrelated repositories. Claude Code and Codex recall hooks pass the working directory automatically.
Write and inspect a decision
docmancer memory add "Production deploys run on Railway" \
--type decision \
--scope project \
--project "$PWD"
docmancer memory list --scope project --project "$PWD"
docmancer memory show <id>
Personal and project records are Markdown with versioned YAML frontmatter under ~/.docmancer/memories/. The stable record ID follows the editable record; a content-addressed atom ID identifies its current indexed version. Secrets are redacted before persistence.
Read the memory management guide for storage, redaction, tombstones, local MCP writes, and the recall benchmark.
Forget without rewriting another agent
docmancer memory forget <id> --dry-run
docmancer memory forget <id> --yes
Owned memory loses its body and leaves only a content-free tombstone. Harvested memory is suppressed locally, while the Claude Code, Codex, Cursor, or repository instruction file stays untouched.
Capture only when you choose it
docmancer install claude-code --capture-hooks
docmancer install codex --capture-hooks
Capture is separate from read-only recall hooks. It redacts a bounded lifecycle payload or transcript tail and stores only extracted durable memory atoms. It never copies raw transcripts, calls a hosted model, blocks an agent turn, or writes team memory. The automatic memory guide documents the supported events and removal commands.
Share reviewed memory through Git
docmancer memory promote <id> --team --project "$PWD" --dry-run
docmancer memory promote <id> --team --project "$PWD"
git diff -- .docmancer/memory/
Team memory is one editable Markdown file per memory atom under .docmancer/memory/. Docmancer never stages or commits it, so your existing pull-request workflow stays in charge. Team memory is part of the free MIT-licensed package; it does not depend on accounts, a dashboard, or a remote service. See the team memory guide for scope and review behavior.
Measure recall instead of guessing
docmancer memory eval --dataset tests/fixtures/memory-eval-sanitized-real.jsonl --gate
The evaluator reports top-one correctness, Hit@3, Hit@5, MRR, failed cases, and p50/p95 latency. The checked-in twenty-case corpus uses sanitised question shapes from real Claude Code, Codex, and Cursor workflows. The gate covers exact and semantic recall, negative instructions, conflicts, project collisions, merging, forgetting, capture, and team memory.
OpenRouter consolidation still exists as optional maintenance for people who want a review-only cleanup draft. It is no longer the center of the story. The durable memory loop, from discovery through Git review, now runs locally.