Skip to content
@codellm-devkit

Codellm Devkit

A framework that bridges the gap between traditional program analysis tools and Large Language Model (LLM) based Agents.
CodeLLM-DevKit

One analysis interface over every language: call graphs, symbol tables, and reachability — program analysis your agents can call.

Documentation | Quickstart | Discussions | Discord

CodeLLM-DevKit (CLDK) loads a codebase and hands you back a typed object model of it — classes, methods, fields, call graphs, and dataflow — through one consistent analysis object. Instead of token-heavy crawls through files to answer questions like "what calls this method?" or "is this code reachable?", agents and developers run precise, deterministic lookups against the actual program. The result is grounded answers from ground truth rather than approximations from grepping.

Every language is analyzed by a dedicated codeanalyzer-* engine that emits the same canonical schema — as analysis.json or as a Neo4j property graph — and the SDK normalizes it into the same typed API. Java, Python, TypeScript/JavaScript, and Infrastructure as Code (Helm) ship today; Go, Rust, C/C++, and more are in development.

Getting Started

  • 📚 Read the documentation for guides, core concepts, and common tasks
  • 💻 Install the Python SDK and query your project:
pip install cldk
from cldk import CLDK
from cldk.analysis import AnalysisLevel

analysis = CLDK.python(
    project_path="/path/to/python/project",
    analysis_level=AnalysisLevel.call_graph,
)

print(len(analysis.get_classes()), "classes")
print(analysis.get_call_graph())

Swap CLDK.python(...) for CLDK.java(...) or CLDK.typescript(...) — the query API is the same across languages. The Python and TypeScript analyzers install as dependencies and the Java analyzer is bundled, so pip install cldk is all you need — analyzing Java projects only needs a JDK on your PATH.

Repositories

Python SDK

Repository What it is Install
python-sdk The official Python SDK. Typed facades over every analyzer below, plus a read-only Neo4j backend for graphs populated out of band. pip install cldk
pip install "cldk[neo4j]"

Analyzers

Each analyzer is a standalone CLI. All four ship on PyPI, so pip install works without a language toolchain: Python, TypeScript, and IaC as prebuilt binaries, Java as a JAR with a bundled JVM. Homebrew formulas live in homebrew-tap; Java also has a one-line installer for the bare JAR.

Repository Language CLI Install
codeanalyzer-java Java / Jakarta EE (source or bytecode), via WALA and JavaParser. The wheel bundles a JVM; the installer needs Java 11+. canjv pip install codeanalyzer-java
brew install codellm-devkit/tap/codeanalyzer-java
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/codellm-devkit/codeanalyzer-java/releases/latest/download/codeanalyzer-installer.sh | sh
codeanalyzer-python Python. Symbol table, call graph, and native CFG/PDG/SDG dataflow. canpy pip install codeanalyzer-python
pip install "codeanalyzer-python[neo4j]"
brew install codellm-devkit/tap/codeanalyzer-python
codeanalyzer-typescript TypeScript / JavaScript. Symbols, call graph, types, decorators, and intra/interprocedural dataflow. cants pip install codeanalyzer-typescript
brew install codellm-devkit/tap/codeanalyzer-typescript
codeanalyzer-iac Infrastructure as Code, starting with Helm charts. Rendered-resource graph with typed configuration facets. caniac pip install codeanalyzer-iac
brew install codellm-devkit/tap/codeanalyzer-iac

All analyzers also read and write the shared contract in codeanalyzer-schema.

Experimental

Under active development or exploratory. APIs, output, and packaging may change without notice.

Tooling & docs

Contributing

We welcome contributions of all kinds! Whether you want to fix bugs, improve documentation, or propose new features, please see our contributing guide to get started.

Have questions? Join the discussion in our community forum or Discord server.

Reference

To cite CodeLLM-DevKit, please use the following reference:

@article{krishna2024codellm,
  title={Codellm-Devkit: A Framework for Contextualizing Code LLMs with Program Analysis Insights},
  author={Krishna, Rahul and Pan, Rangeet and Pavuluri, Raju and Tamilselvam, Srikanth and Vukovic, Maja and Sinha, Saurabh},
  journal={arXiv preprint arXiv:2410.13007},
  year={2024}
}

IBM Public Repository Disclosure

CodeLLM-DevKit is an open source project from IBM Research and open to contributions from the entire community. All content in these repositories including code has been provided by IBM under the associated open source software license and IBM is under no obligation to provide enhancements, updates, or support. IBM developers produced this code as an open source project (not as an IBM product), and IBM makes no assertions as to the level of quality nor security.

Contact

For any questions, feedback, or suggestions, please contact the authors:

Name Email
Rahul Krishna i.m.ralk@gmail.com
Rangeet Pan rangeet.pan@ibm.com
Saurabh Sinha sinhas@us.ibm.com

Popular repositories Loading

  1. python-sdk python-sdk Public

    The official Python SDK for Codellm-Devkit

    Python 186 73

  2. codeanalyzer-python codeanalyzer-python Public

    Python Static Analysis Backend for CLDK

    Python 52 20

  3. codeanalyzer-java codeanalyzer-java Public

    Static Analysis on Java source code (and/or binary) using WALA and JavaParser.

    Java 6 2

  4. codeanalyzer-rust codeanalyzer-rust Public

    Static Analysis on Rust source code (and/or binary) using IR of the Rust Compiler.

    Rust 2

  5. codeanalyzer-typescript codeanalyzer-typescript Public

    Typescript/Javascript: Codeanalyzer Backend

    TypeScript 2 1

  6. typescript-sdk typescript-sdk Public

    The official Typescript SDK for Codellm-Devkit

    TypeScript 1

Repositories

Showing 10 of 18 repositories

Top languages

Loading…

Most used topics

Loading…