Claude Code remembers useful details while you work. It records architecture choices, deployment decisions, repository conventions, and the corrections you do not want to repeat. The problem appears when you need one of those details later: the memory is spread across project files, global instructions, and the private stores used by other coding agents.
A normal file search only works if you know the wording and location. A new Claude Code session may not load the relevant note, and Codex or Cursor cannot reliably search memory written by another agent. What you need is a Claude Code memory search that works across all of those local sources and still shows where each result came from.
Docmancer builds that search layer locally. The complete workflow is three steps:
pipx install docmancer --python python3.13
docmancer setup
docmancer memory query "why did we pick Railway"
The query searches decisions your agents already wrote down. It does not ask a model to invent a plausible reason.
The decision is probably on disk already
Suppose your team chose Railway for production six weeks ago. The decision may have been captured in a Claude Code project memory, a repository CLAUDE.md, a Codex memory atom, or a Cursor rule. By the time you need the reasoning again, you may remember the outcome but not the trade-off that led to it.
You could open each tool's memory directory and grep for Railway, but that assumes the note used the same word. The useful record might instead say that production needed long-running workers, straightforward service networking, or one deployment surface for the web process and background jobs.
Docmancer extracts those files into small, source-attributed memory atoms and puts them in one hybrid search index. Lexical retrieval catches exact terms such as Railway; dense retrieval catches the same decision when your question and the original note use different language.
Step 1: install Docmancer
Docmancer requires Python 3.11, 3.12, or 3.13. pipx keeps the CLI isolated from your project dependencies:
pipx install docmancer --python python3.13
The default memory engine runs locally with SQLite, sqlite-vec, and a static embedding model included in the package. Searching your agent memory does not require an API key or a hosted vector database.
Step 2: index the memory your agents wrote
Run setup once:
docmancer setup
Setup discovers supported coding agents, creates the local memory index, scans their existing memory and instruction files, and installs the relevant agent skills. It covers Claude Code, Codex, Cursor, and repository-level files such as CLAUDE.md and AGENTS.md, alongside other supported harnesses found on the machine.
When those files change, refresh the index with:
docmancer memory sync
If you want to inspect the harvest before writing anything to the index, use the dry run first:
docmancer memory sync --dry-run
Sync redacts likely secrets, extracts self-contained memory atoms, merges repeated facts, and preserves source provenance. The original Claude Code, Codex, and Cursor files stay where they are. Docmancer is building a searchable local index, not moving your agents into a new workspace.
Step 3: search the decision
Now ask the question you actually care about:
docmancer memory query "why did we pick Railway"
For a repository-specific decision, run the query from that repository and include the project scope:
docmancer memory query "why did we pick Railway" --project "$PWD"
Project-aware search includes matching project and team memory plus relevant global preferences, while excluding decisions from unrelated repositories. That matters if several projects on your machine use different deployment platforms for different reasons.
The result includes the matching memory and its source, so you can distinguish a recorded decision from a confident guess. If nothing credible clears the relevance threshold, Docmancer returns no result instead of presenting the nearest unrelated note as evidence.
Check exactly what was indexed
Memory search should be inspectable. These commands show the files and atoms behind the result:
docmancer memory sources
docmancer memory status
memory sources lists the source path, agent, content type, scope, and atom count for every indexed file. memory status shows where the local index lives and how much it contains. If a decision is missing, these commands help you tell the difference between a source that was never discovered and a query that needs more specific wording.
You can then resync and try a question that names the project, decision, and constraint:
docmancer memory sync
docmancer memory query \
"why did this project choose Railway for production workers?" \
--project "$PWD"
Search across agents, not just sessions
The practical benefit is not limited to finding one deployment decision. Once the index exists, the same command can recall the context that usually gets lost between tools and sessions:
docmancer memory query "why is billing handled asynchronously?" --project "$PWD"
docmancer memory query "what did we decide about database migrations?" --project "$PWD"
docmancer memory query "which API errors are safe to retry?" --project "$PWD"
docmancer memory query "why did we reject the previous auth approach?" --project "$PWD"
Claude Code may have written the deployment rationale, Codex may have captured a migration constraint, and Cursor may contain the repository rule that explains an unusual implementation. Docmancer makes those records searchable through the same command without uploading them or erasing their provenance.
That changes the start of a coding session. Instead of reconstructing a decision from commit messages and half-remembered conversations, you can retrieve the explanation your agents already recorded and continue from it.
Install, setup, query
Run the complete Claude Code memory search workflow:
pipx install docmancer --python python3.13
docmancer setup
docmancer memory sync
docmancer memory query "why did we pick Railway" --project "$PWD"
The getting started guide explains agent discovery and setup in more detail. If you want to inspect, add, forget, or evaluate individual memory atoms, continue with the memory management guide.