Compress local documentation context for coding agents.
Project description
Docmancer fetches documentation, normalizes it into inspectable sections, indexes those sections with SQLite FTS5, and returns compact context packs with source attribution. The goal is agentic runway: your agent should burn tokens on implementation, tests, and debugging, not on rereading entire documentation sites.
Product shape: the open source CLI on PyPI is the main distribution. You can pull versioned, pre-indexed packs from the public registry at www.docmancer.dev, or add docs from URLs and local paths and index them yourself. Either way, sections land in a local SQLite database on your machine. There is no hosted “query API”: retrieval runs in the CLI, so your agent loop stays local-first.
In a typical agentic coding session, raw docs pages can consume 30 to 40 percent of the context window. Docmancer compresses that overhead by 60 to 90 percent, so the agent stays sharp longer, runs more iterations before context degradation, and produces more output per session.
Quickstart
pipx install docmancer --python python3.13
docmancer setup
docmancer pull react
docmancer query "How do I use hooks?"
setup creates ~/.docmancer/docmancer.yaml, initializes ~/.docmancer/docmancer.db, and installs detected agent skills. Use setup --all for non-interactive installation across all supported agents.
What It Does
- Pull pre-indexed packs from the public registry, or add docs from any URL or local path.
- Uses SQLite FTS5 by default. No Qdrant server, no embedding model download, no vector database startup.
- Stores normalized sections in SQLite and writes extracted markdown/json files under
.docmancer/extracted/for inspection. - Supports documentation URLs, GitHub README and docs markdown, local directories, and markdown/text files.
- Returns compact context packs with estimated docs-token savings and agentic runway.
Registry
The docmancer registry is a hosted catalog of pre-indexed, version-aware documentation packs (built by crawl workers from package-registry metadata and published docs URLs). Think of it as a place to install trusted docs packs the same way you install packages: search, pull a version, and query locally without re-crawling the whole site on your laptop.
docmancer search langchain
docmancer pull langchain
docmancer pull react@18.2 # optional version pin
docmancer packs # list installed packs
Packs use a three-tier trust model (values in APIs and manifests use snake case, for example maintainer_verified):
- Official — provenance traced to package registry metadata (PyPI, npm, etc.)
- Maintainer verified — maintainer has claimed ownership through the registry
- Community — user-submitted (for example via
publish); requires--communityto pull and should passaudit
Project manifest
Declare your project's documentation stack in docmancer.yaml:
packs:
react: "18.2"
nextjs: "14.1"
langchain: "0.2"
Then run docmancer pull with no arguments to install everything. Share the manifest with your team so everyone has the same docs context.
Commands
| Command | What it does |
|---|---|
docmancer setup |
Create config/database and install detected agent skills |
docmancer setup --all |
Non-interactively install all supported agent integrations |
docmancer add <url-or-path> |
Fetch or read documentation and index normalized sections |
docmancer pull [pack[@version]] |
Pull a pack from the registry (or all packs from manifest) |
docmancer search <query> |
Search the public registry for available packs |
docmancer publish <url> |
Submit a docs URL to the registry for indexing |
docmancer packs |
List locally installed registry packs |
docmancer packs sync |
Sync installed packs with manifest (additive by default) |
docmancer audit <pack> |
Scan a pack for suspicious patterns |
docmancer auth login |
Authenticate with the registry (device code flow) |
docmancer auth status |
Show authentication and subscription tier |
docmancer update |
Re-fetch and re-index all existing docs sources |
docmancer query <text> |
Return a compact markdown context pack |
docmancer query <text> --format json |
Return the same context pack as JSON |
docmancer query <text> --expand |
Include adjacent sections around matches |
docmancer query <text> --expand page |
Include the full matching page, subject to the token budget |
docmancer list |
List indexed docsets or sources |
docmancer inspect |
Show SQLite index stats and extract locations |
docmancer remove <source> |
Remove a source, docset root, or installed pack |
docmancer doctor |
Check config, SQLite FTS5, index stats, registry, and agent skill installs |
docmancer init |
Create a project-local docmancer.yaml |
docmancer install <agent> |
Advanced/manual skill installation for a single agent |
Retrieval Shape
By default, query uses a 2400 token budget and returns markdown. It includes a summary like:
Context pack: ~900 tokens vs ~4800 raw docs tokens (81.2% less docs overhead, 5.33x agentic runway)
The savings are estimates, but the direction is explicit: compress docs overhead so the remaining token budget goes into useful agent work.
Workflow
The recommended workflow combines registry packs with custom docs:
# 1. Pull pre-indexed packs for your stack
docmancer pull react
docmancer pull nextjs
# 2. Add project-specific or internal docs
docmancer add https://internal-docs.company.com
docmancer add ./docs
# 3. Query — results come from both packs and local docs
docmancer query "How do server components work?"
Registry packs and locally indexed docs live in the same SQLite index. Queries search both seamlessly.
Keeping Docs Up To Date
Run docmancer update to refresh all locally-added sources. Docmancer re-fetches each URL or re-reads each local path and updates the index in place.
For registry packs, run docmancer packs sync to update installed packs to their latest versions.
Project-Local Config
Global config is stored under ~/.docmancer/ by default. To use a project-local index:
docmancer init
docmancer add ./docs
The generated docmancer.yaml points to .docmancer/docmancer.db and .docmancer/extracted inside the project. If no project config exists, docmancer falls back to the global config.
Add a packs: section to declare your project's documentation stack:
index:
db_path: .docmancer/docmancer.db
extracted_dir: .docmancer/extracted/
packs:
react: "18.2"
nextjs: "14.1"
Supported Agents
setup detects common agent installations. Manual installation remains available:
docmancer install claude-code
docmancer install claude-desktop
docmancer install codex
docmancer install cursor
docmancer install cline
docmancer install gemini
docmancer install opencode
Claude Desktop receives a zip package that can be uploaded through Claude Desktop's Skills UI.
Evals
docmancer eval is available as an optional quality layer for benchmarking compression quality. It compares raw docs context against docmancer context packs and measures whether token reduction degrades answer quality.
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.3.2.tar.gz.
File metadata
- Download URL: docmancer-0.3.2.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a784a6a42f2c6c27c38e1ba453175340e2701379ec13cb064eea6c653411d65a
|
|
| MD5 |
d1328f5acdec270276e5370fbb96e4b7
|
|
| BLAKE2b-256 |
96fac3b8d6952dab14d303a18db42d5a1944b54949935115cda3d1027795ca88
|
Provenance
The following attestation bundles were made for docmancer-0.3.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.3.2.tar.gz -
Subject digest:
a784a6a42f2c6c27c38e1ba453175340e2701379ec13cb064eea6c653411d65a - Sigstore transparency entry: 1296459645
- Sigstore integration time:
-
Permalink:
docmancer/docmancer@ab0aa8c05e70911d3e059ff4445bbf7c329e703c -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/docmancer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ab0aa8c05e70911d3e059ff4445bbf7c329e703c -
Trigger Event:
push
-
Statement type:
File details
Details for the file docmancer-0.3.2-py3-none-any.whl.
File metadata
- Download URL: docmancer-0.3.2-py3-none-any.whl
- Upload date:
- Size: 96.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9caa0f3c753ae4df8f78ece5c77197542f0cc465bf80690b5b6a5f68373a3dad
|
|
| MD5 |
6f9d17dff6c57db49454156d6292c116
|
|
| BLAKE2b-256 |
5b41f4689c124f0148274bc53933284490e049efe60e2f23bcfc67ed3493bf1e
|
Provenance
The following attestation bundles were made for docmancer-0.3.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.3.2-py3-none-any.whl -
Subject digest:
9caa0f3c753ae4df8f78ece5c77197542f0cc465bf80690b5b6a5f68373a3dad - Sigstore transparency entry: 1296459740
- Sigstore integration time:
-
Permalink:
docmancer/docmancer@ab0aa8c05e70911d3e059ff4445bbf7c329e703c -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/docmancer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ab0aa8c05e70911d3e059ff4445bbf7c329e703c -
Trigger Event:
push
-
Statement type: