Crawl markdown corpora into a typed link graph, audit connectivity health, and explore them in a WebGL galaxy viewer.
| Galaxy | Local | Audit | Search |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Large doc trees drift: broken links, orphan pages, islands that never join the main hub. cpmp gives you:
- A typed multigraph (schema v2) from real markdown links + structure + mentions
- A deterministic audit (broken links, orphans, islands, hub stubs) and an LLM-ready brief
- A fast Galaxy / Local / Audit viewer to navigate and triage without leaving the browser
# From GitHub
cargo install --git https://github.com/QaAudio/cpmp.git
# Or from a checkout
git clone https://github.com/QaAudio/cpmp.git
cd cpmp
cargo build --releaseRequires Rust 1.80+.
# One-shot: crawl folder(s) then open the galaxy viewer
cpmp open path/to/docs
# Stepwise
cpmp crawl path/to/docs notes -o out/graph.json --timings
cpmp audit -i out/graph.json
cpmp report -i out/graph.json -o out/report --format md
cpmp view -i out/graph.jsonFrom a cargo checkout without installing:
cargo run --release -- open tests/fixtures/mini_corpusSubcommands: open · crawl · audit · report · view — full flags in docs/cli.md.
| View | Role |
|---|---|
| Galaxy | Ambient edges, hover/multi-highlight, legend layers, frustum pins, optional drag |
| Local | 1–2 hop constellation around the focused node |
| Audit | Health score, severity facets, virtualized findings, Export |
Keyboard: 1 Galaxy · 2 Local · 3 Audit · / search · ? help · C clear · X hide · H ambient · Esc dismiss ladder.
Deep links: ?view=audit&severity=high, ?focus=path/to.md, ?highlight=id1,id2.
More interaction detail: docs/viewer.md.
| Edge kind | Meaning |
|---|---|
md_link |
Resolved markdown links |
parent_of |
Hub README / INDEX / SKILL → child |
sibling |
Adjacent files in the same folder |
unlinked_mention |
Title/slug hit without an explicit link |
| Audit rule | Typical severity |
|---|---|
broken_link |
high |
orphan |
medium (catalog-like → info) |
island_member |
low / medium |
hub_stub |
low |
cpmp audit --strict fails if any high findings exist. Schema and brief fields: docs/schema.md.
gitignore-compatible excludes for crawl content (ancestors from cwd + nested under roots). See docs/ignore.md.
**/raw/
**/sandbox/
out/
target/| Guide | |
|---|---|
| Architecture | Pipeline, budgets, ceilings |
| Schema | Graph v2, findings, audit.brief |
| CLI | Every subcommand and flag |
| Viewer | Galaxy / Local / Audit |
| Ignore | .cpmpignore rules |
| Contributing | Build, test, e2e, screenshots |
cargo test
cargo build --release
# Playwright e2e (Chrome baselines)
npm install
npx playwright install chromium
npm run test:e2e
# Refresh README / docs screenshots
npm run docs:shots


