Skip to main content

codingest

CI crates.io PyPI Docs License: MIT

Give AI agents a live, queryable map of any codebase — locally, privately, and without running the code you are analysing.

codingest turns polyglot source into a KGLite knowledge graph of functions, types, calls, imports, inheritance, routes, documentation, and git revisions. Use it from Python, the command line, or as an MCP server for coding agents.

pip install codingest
import codingest

graph = codingest.build(".")
graph.cypher("MATCH (f:Function) RETURN f.name LIMIT 10")

No language servers, databases, or repository-specific build steps are required. The native Rust builder bundles parsers for 15 languages and returns a real kglite.KnowledgeGraph, ready for Cypher queries.

Built for agents and code analysis

  • Agent-ready MCP: give an MCP client graph_overview, cypher_query, read_code_source, repository switching, and automatic graph refresh. opencode is set up and verified end to end — including a config that needs no absolute paths — and codingest skill install packages the review skill for Claude Code and Codex, which opencode also discovers with no extra step.
  • Fast local review: map definitions, callers, dependencies, routes, inheritance, and affected tests without uploading or executing the project.
  • Open-source intelligence: clone and analyse a GitHub repository with one Python call, or let an agent manage cached public repositories through MCP.
  • Polyglot by default: one graph across Python, Rust, TypeScript, JavaScript, Java, Go, C/C++, C#, Swift, PHP, HTML, CSS, Dart, and AGC assembly.
  • Revision-aware: analyse a tag, branch, commit, or multiple revisions in one graph and query what changed.

AGC assembly receives architecture-aware control and data relationships rather than a generic text-level call graph; see the AGC graph model.

Give your agent a code-review MCP server

pip install codingest
codingest-mcp --watch /absolute/path/to/repo

Point an MCP client at the same command:

{
  "mcpServers": {
    "code-review": {
      "command": "codingest-mcp",
      "args": ["--watch", "/absolute/path/to/repo"]
    }
  }
}

The server builds the graph at startup, refreshes it when source files change, and gives the agent schema discovery, Cypher, and source-reading tools over stdio. For a multi-repository agent sandbox with runtime set_root_dir, use the local-workspace manifest described in the MCP guide.

For a zero-configuration CLI workflow, install the packaged code-review Agent Skill instead:

pip install codingest
codingest skill install

The skill teaches compatible agents to build a fresh graph, discover its schema before querying, combine Cypher with the git diff, and verify findings against source lines. See the MCP guide and CLI guide.

Analyse a local codebase

import codingest

graph = codingest.build(
    ".",
    include_docs=True,
)

rows = graph.cypher("""
MATCH (caller:Function)-[:CALLS]->(target:Function)
RETURN target.qualified_name, count(caller) AS callers
ORDER BY callers DESC
LIMIT 10
""")

codingest.build(".", save_to="code-review.kgl")

The bundled terminal command offers the same workflow:

codingest build /path/to/repo
codingest status --output /path/to/repo/.kglite/code-review.kgl
codingest query -g /path/to/repo/.kglite/code-review.kgl \
  "MATCH (f:Function)-[:CALLS]->(g:Function) RETURN f.name, g.name LIMIT 20"
kglite describe /path/to/repo/.kglite/code-review.kgl --connections

codingest query prints unbounded TSV to stdout (use --format csv|json, or Cypher LIMIT to bound rows), warns on stderr when the graph has gone stale, and with --require-fresh refuses a stale graph with exit code 3 — see docs/cli.md.

Analyse an open-source repository

import codingest

graph = codingest.repo_tree("pallets/flask")
graph.cypher("""
MATCH (route:Function)-[:CALLS]->(dependency:Function)
RETURN route.qualified_name, dependency.qualified_name
LIMIT 25
""")

repo_tree() shallow-clones the requested repository into a temporary directory, builds the graph, and cleans up afterward. Pass branch=, clone_to=, or token= for a specific revision, a reusable cache, or a private repository.

Compare revisions

graph = codingest.build(".", revs=["v1.0", "v2.0"])
graph.cypher("""
MATCH (f:Function)
WHERE 'v2.0' IN f.revs AND NOT 'v1.0' IN f.revs
RETURN f.qualified_name
""")

Revision builds use tracked git content without changing the working tree. Multi-revision graphs store shared entities once and expose revision membership for direct Cypher analysis.

Install options

pip install codingest          # Python API + CLI + MCP server + KGLite runtime
codingest skill install        # code-review Agent Skill

The wheel bundles every grammar plus the codingest and codingest-mcp commands. KGLite ≥0.15.6 is installed automatically as the query/storage engine; its MCP server and the transitive mcp-methods framework power the builder-aware Codingest server. Nothing else needs to be installed.

Rust-only environments can instead use cargo install codingest-cli codingest-mcp; these are alternative distributions of the same commands, not Python prerequisites.

Rust crate

[dependencies]
codingest = "0.1"
kglite = "0.15.6"
use codingest::build_code_tree;

let graph = build_code_tree(
    dir,
    false, // verbose
    true,  // include tests
    None,  // save path
    None,  // max lines per file
    false, // include docs
)?;

How it fits together

codingest owns code-graph construction, the Python/CLI interfaces, the builder-backed MCP executable, and the code-review Agent Skill. KGLite provides the graph engine, Cypher, persistence, and reusable query/read tools. Keeping that boundary explicit lets codingest focus on accurate code understanding while reusing a dedicated graph engine.

Documentation: codingest.readthedocs.io

Workspace layout

Crate What it is
crates/codingest The component library (codingest): builder, parsers, manifest reader, docs pass, multi-rev merge, cross-language edges. Extracted from the former KGLite/crates/kglite/src/code_tree/ (removed upstream 2026-07-16) and re-targeted at the public kglite::api facade. Ships the codingest_stats + codingest_bench binaries.
crates/codingest-cli codingest binary — build a checkout or git revision(s) into a .kgl graph, status to check staleness, and skill to install Codingest's code-review Agent Skill.
crates/codingest-mcp codingest-mcp binary — the full MCP tool surface imported from the kglite-mcp-server library, with the codingest builder injected.
crates/codingest-py PyO3 wrapper built by maturin into the codingest wheel (pip install codingest). Python package source is codingest/; pyproject.toml drives the maturin build. Not published to crates.io (publish = false).

CI-equivalent local gate

cargo build --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo test -p codingest --test parity

The golden-digest oracle (also the determinism gate)

KGLite deleted its in-tree code_tree builder on 2026-07-16, so the old two-builder parity sweep is gone. The authority it enforced was frozen while the builders were still verified identical, into per-corpus SHA-256 digests under crates/codingest/tests/goldens/ (committed fixtures — no network). The golden_parity test builds each corpus three times with only the codingest builder, digests a canonical exhaustive graph rendering, and requires every build to match every other build and the frozen golden. Repeating the build is what makes this the determinism gate: hash iteration order is randomized per HashMap, so an order-dependent builder fails it (the tests/corpus/dup_minified_assets fixture reproduces the original DEFINES-edge nondeterminism bug). Disagreement between builds is reported as NONDETERMINISM; agreement between builds but not with the golden is reported as a behaviour change. The multi-rev fixture is guarded instead by rev_self_consistency. Regenerate goldens only for deliberate builder-behavior changes: cargo test -p codingest --test parity -- --ignored capture_goldens (details in crates/codingest/tests/goldens/README.md).

Everything the gate needs is committed to this repository, so it is hermetic and runs in CI. It replaced a local-only make step that asserted an exact edge count against a sibling checkout — a verdict this project did not control. make determinism-soak REPO=… keeps the large-repo reproducer available as a diagnostic.

Dependency policy

kglite and kglite-mcp-server use matching crates.io requirements with a 0.15.6 minimum and a shared lockfile. This keeps the builder, persistence handoff, and embedded MCP server on one compatible engine patch line.

Parity with the (now-removed) in-tree component

codingest was extracted to be feature- and performance-identical to kglite's in-tree code_tree. KGLite removed that module on 2026-07-16, so parity is now enforced against a frozen record of its last-known-good output rather than live cross-comparison. See PARITY.md (stats-diff + timing), BENCHMARKS.md (build-time + Cypher benchmarks), crates/codingest/tests/parity.rs (the golden oracle), and docs/mcp-parity.md (the MCP↔builder coupling and the hook).

tests/python-legacy/ preserves KGLite's full 47-file kglite.code_tree behavioral suite verbatim as the dormant behavioral spec — the source of truth for what the Python builder guaranteed (see its README).

License

MIT © Kristian dF Kollsgård. codingest is an independent project; it depends on kglite at runtime but is not otherwise affiliated with it.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codingest-0.1.7.tar.gz (343.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

codingest-0.1.7-cp310-abi3-win_amd64.whl (11.3 MB view details)

Uploaded CPython 3.10+Windows x86-64

codingest-0.1.7-cp310-abi3-manylinux_2_28_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

codingest-0.1.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

codingest-0.1.7-cp310-abi3-macosx_11_0_arm64.whl (10.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

codingest-0.1.7-cp310-abi3-macosx_10_12_x86_64.whl (10.9 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file codingest-0.1.7.tar.gz.

File metadata

  • Download URL: codingest-0.1.7.tar.gz
  • Upload date:
  • Size: 343.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for codingest-0.1.7.tar.gz
Algorithm Hash digest
SHA256 338f77fab8ae88bc34ca44403adae350fa8705efa2095dc7c3b1b880c29bb6d5
MD5 ccd65c8493d7c68dfc84c713b6ab69bf
BLAKE2b-256 1b2ae9995b59c7377a6647210b6be5d35e1fae1d4197778941dee9069744bf56

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingest-0.1.7.tar.gz:

Publisher: release.yml on kkollsga/codingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codingest-0.1.7-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: codingest-0.1.7-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 11.3 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for codingest-0.1.7-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 171d5dbcbc4eb09ad9f7430292f00808ae4201e0029022f49a4eb17ab803b3e3
MD5 fe2419fad0a4a3c174b05bccbc68a489
BLAKE2b-256 5b8ed9a8a11455547caf40ae5f805486d6bc1dba99a24f9be7796b188571565b

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingest-0.1.7-cp310-abi3-win_amd64.whl:

Publisher: release.yml on kkollsga/codingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codingest-0.1.7-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for codingest-0.1.7-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2330d036f6e3316496f70821a4a40c4b31998c3d6beab67cfbdf5970c4f17063
MD5 03364464379b3d3fe79a035cbd3b43d8
BLAKE2b-256 26290b7a22a908657175dfd8caa253fd1cc2a05703fe7423c19038c28ebd5dfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingest-0.1.7-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yml on kkollsga/codingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codingest-0.1.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for codingest-0.1.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7c6c442d45f3fdb2992028e6d0b3066ee6b780eaf6594287238d1542f1f81983
MD5 d3d62314dd5c8c7cfcdd5b36b3b22376
BLAKE2b-256 a536ba5da3effd2c92ea3b898d2d2e314d675af815cfb88a202a7cb127b319e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingest-0.1.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on kkollsga/codingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codingest-0.1.7-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for codingest-0.1.7-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9592a3eb5a43294f67d6b88cf385876fca47cc5bde2be3fd8307b7af423bd40
MD5 6e2ca71ba3a65f0220263a08c7f2cdc8
BLAKE2b-256 6286e679681f33e4d8e50ca2557ef1467c067db3216fef9844bd377b77aa3e70

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingest-0.1.7-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on kkollsga/codingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codingest-0.1.7-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for codingest-0.1.7-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f7c90a0edd73657430734fd64288127ad6067fc837b92322cd88d4f9fe10577c
MD5 bb55dc2191b1514dc428db8c64f771d1
BLAKE2b-256 edf6354d6efe96a5f33d8602f59e98e72eebb2b5c737eaf859ff9db6e713dfe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingest-0.1.7-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on kkollsga/codingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page