Every coding agent you use is writing things down.
Claude Code saves notes to ~/.claude/projects/<project>/MEMORY.md. Codex accumulates decisions in ~/.codex/memories/. Cursor stores rules in .cursor/rules/. Windsurf has its own Cascade memories. Cline, OpenCode, Goose, and most of the others do too. Each one keeps a separate record of what you have built, what you have decided, and how your project works.
None of them can read what the others wrote.
When you switch from Claude Code to Codex mid-sprint, Codex starts from zero. When you open Windsurf on a project your Claude Code session has been annotating for three months, Windsurf does not know any of it. Every agent you use maintains its own memory silo, and context you built up in one tool evaporates when you open another.
Docmancer addresses this directly.
What the tool does
pipx install docmancer
docmancer setup --agent codex --agent claude-code
docmancer ask "why did we pick Railway over Fly?" --fresh
setup harvests the memory files your agents have already written: Claude Code project notes, Codex memories, Cursor rules, plus global instruction files from OpenCode, Cline, Windsurf, and other supported harnesses. Everything is processed locally, deduplicated by real path, and indexed under ~/.docmancer/. No cloud is involved.
ask runs retrieval over that index and returns grounded, cited results from your agents' accumulated notes. The --fresh flag waits for changed local sources to be combined first.
Seeing where the memory came from
docmancer status
status combines memory health, source coverage, security findings, pending review, agent delivery, and cloud state in one view. The source coverage section lists every indexed file with its agent, type (auto-written memory vs user-authored instructions), scope (global vs project), and atom count, so you can see exactly what the index is built from before you trust a result.
Combining scattered notes into reviewed context
The local index is useful on its own, but months of scattered agent notes still contradict each other, repeat the same decision three different ways, and mix one-off task logs with durable conventions. Docmancer combines that raw corpus into small, approved context packs that sit above it.
docmancer memory distill
docmancer memory review
distill proposes a combined patch to your personal-defaults pack. The combination is deterministic and runs entirely on your machine: it deduplicates near-identical atoms, tracks the source lineage of every statement, and proposes changes rather than rewriting anything silently. Nothing is model-generated and nothing leaves the machine.
review shows the proposed operations so you can approve, reject, or edit them one at a time. Approved statements become part of a durable, revisioned pack that your agents read directly. Because the pack is reviewed rather than auto-applied, a noisy or wrong note never quietly promotes itself into your always-loaded context.
You can also write a deliberate project decision as ordinary Markdown:
docmancer write "# Billing\n\nBilling is processed asynchronously so checkout never blocks on Stripe." --path decisions/billing.md
The file remains inspectable and can be shared through your existing file or Git workflow. Purpose-built Team publication is not part of the free package and Team Sync is not available yet.
Carrying context back to every agent
Approved context does not sit in a database you have to remember to query. Claude Code and Codex can receive relevant project and global memory through local recall hooks. Other supported agents use the installed skill or MCP surface to retrieve the same local memory on demand.
setup also injects a recall instruction into each agent's always-loaded file so the agent itself knows to query Docmancer before answering questions about past decisions:
Before answering any question about past decisions, prior work, or project context,
you MUST first run `docmancer ask "<the question>"` and ground your answer
in the returned entries.
The memory is therefore available in two directions: you can query it directly from the terminal, and your agents query it automatically when the question is about something they should already know.
What gets harvested
Discovery covers more than most developers expect. On a machine with several agents installed, a typical harvest finds:
- Claude Code: project memory files,
~/.claude/CLAUDE.md,~/.claude/rules/, projectCLAUDE.mdfiles - Codex:
~/.codex/memories/,~/.codex/AGENTS.md - Cursor:
.cursor/rules/,~/.cursor/AGENTS.md - OpenCode, Cline, Windsurf, Goose, and six more: global instruction files and agent-written memories at their documented paths
Each file is classified as auto-written agent memory, user-authored instructions, or project rules. The first three classes are indexed by default. Raw conversation transcripts (jsonl, sqlite, session logs) are excluded unless you explicitly opt in.
Local-first, offline by default
The default memory path requires no API key and makes no network calls. setup, ask, status, curated-memory writes, and hook recall all run locally with the vendored model2vec model and sqlite-vec. Online documentation, external models, package-registry checks, and Cloud are separate explicit network paths.
If you prefer a single consolidated markdown file to read through instead of a reviewed pack, docmancer memory consolidate remains available as an optional path. It sends selected, privacy-redacted atoms to OpenRouter, prints a cloud-use notice before anything leaves the machine, and returns a review-only draft that deduplicates, groups everything into sections, and flags conflicts instead of silently resolving them. It runs only when OPENROUTER_API_KEY is set; without a key it exits cleanly and leaves the local index untouched.
Optional: encrypted sync across your machines
Everything above works on one machine with no account. If you want the same personal memory on a second machine, Personal Sync adds opt-in end-to-end encrypted transport. Memory text, tags, and local paths are encrypted on the device before upload, so the service transports and stores ciphertext rather than decrypted memory. Team Sync is a separate planned product and is not available yet.
Try it
pipx install docmancer
docmancer setup --agent codex --agent claude-code
docmancer status
docmancer ask "what did we decide about the database schema?" --fresh
The index builds locally. Ask returns grounded results from your agents' accumulated notes, with the source paths needed to verify them.