Compress local documentation context for coding agents.
Project description
Actionable context for every coding agent, stored as local Markdown.
Install | Getting started | Commands | MCP | Cloud | Wiki
Claude Code, Codex, Cursor, Gemini, OpenCode, Cline, Windsurf, and other coding agents already write useful decisions, rules, instructions, and session summaries, then forget them. Docmancer turns that scattered evidence into a curated Markdown memory tree that every supported agent can address, search, and compile into task-specific context.
Markdown files are canonical; the SQLite and vector index is disposable derived state that rebuilds from the files. Stable docmancer://memory/<id> addresses survive file moves, and every entry keeps its source attribution, revision lineage, and content hash. The complete single-machine product is free, local, and keyless: the default retrieval path uses packaged Model2Vec embeddings and sqlite-vec, with no daemon and no model download. FastEmbed and Qdrant remain an optional heavy path, and docs retrieval runs as a separate surface on the same engine.
Install
pipx install docmancer --python python3.13
Getting started
Five steps take you from a fresh install to agents that recall and capture memory automatically. Every step is local and reversible.
1. Install skills into your agents
docmancer setup
setup discovers supported agents (Claude Code, Codex, Cursor, Gemini, OpenCode, Cline, and others) and installs skill files that teach them to call the docmancer CLI directly. No memory is captured yet; this only makes the agents docmancer-aware.
2. Create a memory tree
cd /path/to/project
docmancer init
init creates ./.docmancer/tree for canonical curated memory and ./.docmancer/inbox for uncurated evidence, without enabling capture. Global memory lives under ~/.docmancer/tree. Use --scope global on later commands to target it.
3. Populate the tree
You can seed the tree three ways and mix them freely.
Harvest what your agents already wrote. Preview is read-only; --apply copies bounded evidence into the inbox and never edits the original source file.
docmancer harvest ~/.claude/projects/my-project
docmancer harvest ~/.claude/projects/my-project --apply
Curate inbox notes or any Markdown file into complete curated files. Preview shows the whole file; --apply writes it. Deterministic local curation is the default. Add --llm --yes-provider to opt into BYOK synthesis, which redacts evidence before the provider call, validates citations, rejects mandatory authority, and falls back to deterministic curation on failure.
docmancer curate --source ./notes/release.md --path decisions/release.md
docmancer curate --source ./notes/release.md --path decisions/release.md --apply
Write a decision directly, then rebuild the disposable local index:
docmancer write $'# Release process\n\nDeploy the API on Railway.' --path deployment/release.md
docmancer reindex
Existing-file changes always require the current content hash (--expect <hash>), which stops a stale or concurrent client from silently overwriting newer Markdown. The same guard protects edit and move.
4. Turn on automatic recall and capture
docmancer agent install claude-code --hooks --capture-hooks
docmancer agent install codex --hooks --capture-hooks
--hooks installs recall: relevant curated context is injected at session start and on each prompt, fenced explicitly as reference data rather than instructions. --capture-hooks installs capture: redacted session checkpoints are written into the inbox. Capture is opt-in, bounded, fail-open, and never blocks the coding session. Captured notes stay in the inbox until you curate them, so recall only ever surfaces curated memory. Remove either with docmancer agent remove claude-code --hooks.
5. Recall and browse
docmancer context "prepare the production release" --project-path "$PWD"
docmancer search "Railway deployment"
docmancer read docmancer://memory/<id>
docmancer web
context runs the Context Compiler: it selects mandatory policy first, then relevant curated memory within the token budget, and returns exact stable citations with a bounded retrieval trace. web opens an authenticated loopback-only workbench on 127.0.0.1; it never binds to an external interface.
Local workbench
docmancer web
docmancer web --project /path/to/project --no-open
The workbench exposes the curated tree, Context Compiler, inbox, source inventory, capture status, agent delivery, docs, and optional Cloud state. Canonical file mutations stay local and reuse the same hash guards as the CLI and MCP. Docs remain visibly separate from memory results.
Command line
docmancer init Create or adopt the project tree
docmancer write Write one curated Markdown file
docmancer read Resolve a stable address, path, or title
docmancer edit Guarded body update
docmancer move Guarded move or rename
docmancer search Search curated memory
docmancer context Compile task-specific context
docmancer harvest Preview or ingest read-only evidence
docmancer curate Preview or apply a complete curation operation
docmancer capture Process one bounded lifecycle event
docmancer reindex Rebuild disposable local indexes
docmancer status Inspect local, agent, security, and Cloud state
docmancer web Open the local Context Workbench
docmancer mcp Run or install the local MCP server
docmancer docs Manage separate documentation indexes
docmancer sync Push and pull encrypted Cloud revisions
docmancer agent Install agent skills and optional hooks
docmancer package-check Verify distribution artifacts
The docmancer tree ... namespace remains as a compatibility alias for the top-level commands above. Older docmancer query and docmancer memory ... workflows are still available through the 0.8.x line and are scheduled for removal in 0.9.0; new integrations should use the curated tree and stable addresses.
MCP
docmancer mcp install codex --print
docmancer mcp serve
The MCP server exposes read_memory, search_memory, build_context, write_memory, guarded edit_memory and move_memory, and duplicate, recoverable trash, and restore. build_context is the same Context Compiler operation as the CLI context command. Tool annotations distinguish read-only, mutating, and destructive actions; responses are bounded and unknown arguments are rejected by the tool schema. A server pinned to a project cannot be redirected to another project by a tool argument.
Docs
Documentation search is a separate surface from memory:
docmancer docs init --dir .
docmancer docs add ./docs
docmancer docs add https://docs.pytest.org
docmancer docs query "How do I parametrize a fixture?"
docmancer docs list
docmancer docs sync
Optional encrypted Cloud
Local capture, curation, recall, MCP, docs, export, and the workbench never require an account. Paid Cloud adds encrypted transport, managed history and recovery, device continuity, and Team coordination.
docmancer cloud connect
docmancer sync
docmancer cloud devices
docmancer cloud disconnect
The local client encrypts revisions before transport. The hosted service cannot execute local actions, connect back to the loopback application, or read plaintext memory. docmancer sync means encrypted Cloud continuity only; it is never a local reindex.
Data locations
<project>/.docmancer/tree/**/*.md: canonical curated project memory.<project>/.docmancer/inbox/*.md: uncurated capture and harvested evidence.<project>/.docmancer/trash/: recoverable local deletions.~/.docmancer/tree/**/*.md: canonical global memory.~/.docmancer/memory.db: rebuildable local retrieval state.docmancer.yaml: optional secondary docs-index configuration.
There is no telemetry. Network access happens only for explicit documentation fetches, explicit provider-backed curation, package checks that contact registries, or encrypted Cloud operations.
More documentation
See the wiki for architecture, sources, integration details, Cloud behavior, and troubleshooting.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file docmancer-0.8.2.tar.gz.
File metadata
- Download URL: docmancer-0.8.2.tar.gz
- Upload date:
- Size: 30.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
832320ea0237df4f5db5e36e20f374a5bfeb9214f9b086acb3d2f5aa296b4999
|
|
| MD5 |
c3525e0bfd8b187a46c8ad8b892f31d5
|
|
| BLAKE2b-256 |
71aacf3b37125e2c4cfe31e8015f0967743f80aa1fcbb1a758088c8f7793195e
|
Provenance
The following attestation bundles were made for docmancer-0.8.2.tar.gz:
Publisher:
publish.yml on docmancer/docmancer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
docmancer-0.8.2.tar.gz -
Subject digest:
832320ea0237df4f5db5e36e20f374a5bfeb9214f9b086acb3d2f5aa296b4999 - Sigstore transparency entry: 2223844176
- Sigstore integration time:
-
Permalink:
docmancer/docmancer@032df5512a38a067bf78209e2cf5154036ee69b6 -
Branch / Tag:
refs/tags/v0.8.2 - Owner: https://github.com/docmancer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@032df5512a38a067bf78209e2cf5154036ee69b6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file docmancer-0.8.2-py3-none-any.whl.
File metadata
- Download URL: docmancer-0.8.2-py3-none-any.whl
- Upload date:
- Size: 29.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0aca1c67f1f9872e65d5f557dd9cbea7721785b80e498d3544a1982912e0e61
|
|
| MD5 |
635b4ddf1f89d8373937036cbdec6e67
|
|
| BLAKE2b-256 |
dee3dec5e29802d56f3978c8f48ec9c9acd5e0e9ca5dbb78590241a225f77330
|
Provenance
The following attestation bundles were made for docmancer-0.8.2-py3-none-any.whl:
Publisher:
publish.yml on docmancer/docmancer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
docmancer-0.8.2-py3-none-any.whl -
Subject digest:
c0aca1c67f1f9872e65d5f557dd9cbea7721785b80e498d3544a1982912e0e61 - Sigstore transparency entry: 2223845230
- Sigstore integration time:
-
Permalink:
docmancer/docmancer@032df5512a38a067bf78209e2cf5154036ee69b6 -
Branch / Tag:
refs/tags/v0.8.2 - Owner: https://github.com/docmancer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@032df5512a38a067bf78209e2cf5154036ee69b6 -
Trigger Event:
push
-
Statement type: