# Feature catalog — Graphify-Labs/graphify

> Canonical page: https://codevetter.com/unpack/graphify/feature-catalog

# Feature catalog — Graphify-Labs/graphify

Scanned commit 20a20d30d8e7eef77675651f0199d87f913bd3e7 (2026-09-20). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

User-facing surface = one CLI with ~30 subcommands, a generated `/graphify` skill for 20+ AI assistants, an MCP server exposing 10 graph tools, and a large set of export formats and corpus ingestors. Features span: corpus detection (code/docs/papers/images/video), AST extraction across ~40 language extensions, semantic (LLM) extraction with pluggable backends, community detection + report, multiple export sinks, git-hook auto-rebuild, cross-repo/global graphs, PR triage via `gh`, and work-memory reflection.
- `graphify extract <path>` is the headless full pipeline (detect -> AST -> semantic -> merge -> build -> cluster -> outputs) with flags --backend/--model/--mode deep/--out/--no-cluster/--code-only/--no-dedup/--postgres/--cargo/--max-workers/--token-budget/--exclude/--no-gitignore/--force/--allow-partial/--timing. — [graphify/cli.py#L3218-3420](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L3218-L3420)
- Graph query commands: `query` (BFS/DFS with --budget/--context), `path` (shortest path), `explain`, `affected` (reverse traversal over DEFAULT_AFFECTED_RELATIONS incl. calls/imports/inherits/dynamic_import), `god-nodes`, and `diagnose multigraph`. — [graphify/cli.py#L1202-1322](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L1202-L1322) [graphify/affected.py#L11-29](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/affected.py#L11-L29) [graphify/cli.py#L1549-1950](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L1549-L1950)
- Export formats via `graphify export <fmt>`: html, callflow-html, obsidian, wiki, svg, graphml, neo4j, falkordb; push_to_neo4j upserts via the neo4j driver with label/relation sanitization against Cypher injection. — [graphify/cli.py#L2782-2790](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L2782-L2790) [graphify/exporters/graphdb.py#L9-40](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/exporters/graphdb.py#L9-L40)
- The MCP server registers 10 tools — query_graph, get_node, get_neighbors, get_community, god_nodes, graph_stats, shortest_path, list_prs, get_pr_impact, triage_prs — and injects an optional `project_path` into every schema for multi-project serving. — [graphify/serve.py#L1866-2019](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/serve.py#L1866-L2019)
- `graphify install/uninstall` supports ~20 assistant platforms through _PLATFORM_CONFIG (claude, codex, opencode, kilo, aider, copilot, claw, droid, trae, trae-cn, hermes, kiro, pi, codebuddy, antigravity, windows, kimi, amp, ...), each mapping a generated skill-<platform>.md to a per-platform destination dir. — [graphify/install.py#L120-260](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/install.py#L120-L260) [graphify/__main__.py#L536](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/__main__.py#L536)
- `graphify hook install` writes post-commit and post-checkout git hooks that detect a working Python interpreter (pinned path, .graphify_python file, launcher shebang, uv tool envs, PATH fallback) and detached-launch `graphify.watch._rebuild_code` on changed files. — [graphify/hooks.py#L19-138](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/hooks.py#L19-L138) [graphify/hooks.py#L144-352](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/hooks.py#L144-L352)
- `graphify update <path>` / `watch` / post-commit hooks all funnel into watch.py::_rebuild_code: AST-only incremental rebuild (no LLM), serialized by a per-repo flock with a .pending_changes queue drained by the lock holder. — [graphify/cli.py#L2403-2461](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L2403-L2461) [graphify/watch.py#L1355-1441](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/watch.py#L1355-L1441)
- Semantic/LLM extraction supports backends claude, kimi, ollama, gemini, openai, deepseek, azure, bedrock, and a `claude-cli` path that shells to the claude binary; `graphify provider add/list/show/remove` registers custom OpenAI-compatible providers in a user-global JSON file. — [graphify/llm.py#L101-200](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/llm.py#L101-L200) [graphify/cli.py#L1065-1181](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L1065-L1181)
- Non-code ingestors: mcp_ingest.py turns .mcp.json/claude_desktop_config.json into mcp_server/mcp_command/mcp_package/env_var nodes (env VALUES never read); manifest_ingest.py makes package manifests (pyproject, go.mod, pom.xml...) into depends_on edges; pg_introspect.py introspects live Postgres via psycopg; cargo_introspect.py handles Rust workspaces; transcribe.py does faster-whisper/yt-dlp video-to-text; google_workspace.py converts .gdoc/.gsheet shortcuts. — [graphify/mcp_ingest.py#L1-40](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/mcp_ingest.py#L1-L40) [graphify/pg_introspect.py#L1-35](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/pg_introspect.py#L1-L35) [graphify/transcribe.py#L1-30](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/transcribe.py#L1-L30) [graphify/extract.py#L6502-6516](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/extract.py#L6502-L6516)
- Cross-repo features: `merge-graphs` union-merges graph.json files, `merge-driver` is a git merge driver for graph.json, and `graphify global add/remove/list` maintains a cross-repo graph at ~/.graphify/global-graph.json with per-repo tags. — [graphify/cli.py#L2551-2758](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L2551-L2758) [graphify/global_graph.py#L1-30](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/global_graph.py#L1-L30) [graphify/cli.py#L3152-3217](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L3152-L3217)
- Work-memory features: `save-result` stores Q&A outcomes into graphify-out/memory/, and `graphify reflect` aggregates useful/dead_end/corrected signals with time-decay scoring into graphify-out/reflections/LESSONS.md (deterministic, no LLM). — [graphify/reflect.py#L1-40](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/reflect.py#L1-L40) [graphify/cli.py#L1461-1548](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L1461-L1548)
- Auxiliary commands: `prs` (PR dashboard via gh CLI), `clone` (clone GitHub repo into ~/.graphify/repos), `add <url>` (fetch URL to ./raw with author/contributor tags), `benchmark` (corpus vs subgraph token comparison), `tree` (HTML tree view), `cache-check`, `cluster-only`, `label`, `check-update`, `merge-chunks`, `merge-semantic`, `diagnose`. — [graphify/cli.py#L1182-1201](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L1182-L1201) [graphify/cli.py#L2480-2606](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L2480-L2606) [graphify/cli.py#L3135-3151](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L3135-L3151) [graphify/cli.py#L4649-4831](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L4649-L4831) [graphify/prs.py#L140-215](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/prs.py#L140-L215)
- Hook-integration commands `hook-check` and `hook-guard` emit PreToolUse nudge/deny JSON payloads consumed by Claude Code/Gemini hooks; strict mode (GRAPHIFY_HOOK_STRICT=1) denies the first raw source read per session and redirects the agent to `graphify query`. — [graphify/cli.py#L18-81](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L18-L81) [graphify/cli.py#L814-944](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L814-L944) [graphify/cli.py#L2463-2479](https://github.com/Graphify-Labs/graphify/blob/20a20d30d8e7eef77675651f0199d87f913bd3e7/graphify/cli.py#L2463-L2479)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
