mrkeyoor.com_
Wed 23 Sept 16:41 UTC
LLM Toolsevaluationupdated 26 Aug 2026

code-graph-rag review

Code-Graph-RAG turns a mixed-language repository into a graph of files, symbols, calls, imports, and data flow, then lets people or coding agents query and edit it. It uses Tree-sitter and language-specific analysis, stores the graph in Memgraph, and can expose its tools to Claude Code and other MCP clients.

+21stars / 7d
Verdict

Our Code-Graph-RAG run installed 150 packages and built in 10 seconds, but pytest stopped at 200 Docker connection errors after only 24 passes, so Docker is a real prerequisite rather than an optional extra. Try it when cross-language relationships would change how your team searches a monorepo and you can operate the graph services. Keep a human on every edit, and choose a simpler coding assistant when symbol search plus Git diffs already answer the question.

We ran it

Lab card: what happened when we ran code-graph-ragScreenshot of code-graph-rag (code-graph-rag.com)
Install✓ · 63s150 packages · 325 MB
Build✓ · 10s
Tests✗ · 79s24 passed · 0 failed · 3 skipped · 200 errors of 224 (pytest)
Known vulns0(pip-audit)
Repo1312 files~386,716 lines of source · 31.6 MB · 13 CI workflows · Dockerfile

Answers from our run

Does code-graph-rag build from source?

Dependencies installed in 63 seconds (150 packages), and the build succeeded in 10 seconds. We cloned commit 46dae44 into a clean Debian container with 3 CPUs and no project-specific setup.

Do code-graph-rag's tests pass?

Yes: 24 of 224 passed when we ran the project's own test command (pytest), with 200 collection errors. Some failures need services or credentials a bare container does not have.

Does code-graph-rag have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use code-graph-rag?

Developers who cannot run Docker: the README requires it for Memgraph, and open issue #386 tracks an embedded alternative as unfinished work.

What are the alternatives to code-graph-rag?

Sourcegraph, Aider, Continue. Our Code-Graph-RAG run installed 150 packages and built in 10 seconds, but pytest stopped at 200 Docker connection errors after only 24 passes, so Docker is a real prerequisite rather than an optional extra.

Setup2/5Package installs cleanly, but useful tests and runtime need Docker services
Docs5/5Specific install, language matrix, architecture, CLI, and MCP guides
Community4/5Pushed August 2026 with frequent releases and active issue work
Maturity3/5Broad feature set, with semantic depth and platform gaps still open

Discussed on

  1. hnGraph-Code: A Graph-Based RAG System for Python Codebases4 points
  2. hnMonorepos solved: graph-based search3 points
  3. hnGraph-Code: A Graph-Based RAG System for Any Codebases3 points
  4. hnGraph-Code: A Multi-Language Graph-Based RAG System3 points

Who it’s for

Engineers investigating large monorepos where text search misses symbol relationships.
Teams that want an MCP server to give coding agents graph-backed repository context.
Security and maintenance groups exploring call paths, dead code, or taint-style data flow.
Polyglot projects willing to operate Docker services and verify generated edits.

Who it’s NOT for

Developers who cannot run Docker: the README requires it for Memgraph, and open issue #386 tracks an embedded alternative as unfinished work.
Teams expecting equal semantic depth in every language: the README separates fully supported languages from a structural-only tier and says Scala is still in development.
Windows users with non-ASCII identifiers who need a settled path today: open issue #1454 documents locale decoding problems across many subprocess calls.
Anyone wanting a read-only indexer by default: the product can edit code through its agent and MCP surface, so permissions and diff review need deliberate limits.
Operators who may use --clean casually: the README warns that it deletes every project in the shared graph, not only the current repository.

Setup reality

Our commit 46dae44 run installed 150 Python packages in 63 seconds and used 325 MB, then built in 10 seconds. Pytest ran for 79 seconds: 24 passed, 3 skipped, and 200 collection or setup errors stopped the run. Every shown error is a Docker API connection failure from integration tests; the log does not establish anything beyond unavailable Docker connectivity.

Useful operation needs Python 3.12+, Docker, cmake, ripgrep, Memgraph, Qdrant for semantic search, and an LLM configuration for natural-language work. Optional language frontends bring their own toolchains.

The 31.6 MB checkout had 13 CI workflows and a Dockerfile. Pip-audit found 0 known vulnerabilities. Indexes share one graph, so project naming, backup, and the destructive scope of --clean deserve attention.

The graph answers questions that text search cannot

Code-Graph-RAG parses source into nodes for files, functions, classes, methods, and modules, then connects them through structural and semantic relationships. Natural-language questions become Cypher queries against Memgraph. The result can include the source behind a symbol, its callers, imports, inheritance, and optional flow information rather than a bag of nearby text chunks.

The README lists 13 fully supported languages: Python, TypeScript, TSX, JavaScript, Rust, Go, Java, C, C++, C#, PHP, Lua, and Dart. Scala remains in development. Another group, including Ruby, Kotlin, Swift, Bash, and Nix, receives structural support through ast-grep. Buyers should read the per-language matrix because one unified schema does not mean identical analysis quality.

This is most useful in a monorepo where a question crosses packages or languages. A plain search can find a function name; the graph can help trace which code calls it or which file imports it. The system also supports dead-code walks, structural search, runtime trace overlays, and graph exports. Each result still needs source verification, especially where language analysis falls back to heuristics.

Editing is available, so read access is not the only risk

The interactive tool can retrieve code, propose AST-based patches, and show a diff before applying them. Its MCP server gives Claude Code and other clients the same repository-query and editing surface. That is convenient for an agent working across a large codebase, but it changes the trust model: an indexing service with write tools needs narrower permissions than a search-only service.

Keep the graph process on loopback or another controlled network, scope filesystem access, and require diff review. The project documentation includes a security guide, yet deployment policy remains the operator's job. An LLM-generated Cypher query can also be wrong even when it is syntactically valid. Graph candidates should lead back to named files and lines before an edit is accepted.

The shared graph has one particularly sharp command. The README says --clean deletes every indexed project, not merely the repository currently being updated, and prompts when other projects exist. Back up the data and avoid granting unattended automation permission to use that flag. A confirmation prompt is helpful until a script learns how to bypass it.

What happened when we ran it

We cloned commit 46dae44 into an unprivileged Debian container with 3 CPUs and 8 GB of RAM. Installing 150 packages took 63 seconds and consumed 325 MB. The build succeeded in 10 seconds. Pip-audit reported 0 known vulnerabilities in the installed environment.

Pytest ran for 79 seconds and exited 1. It recorded 24 passing tests, 3 skips, and 200 collection or setup errors out of 224 before stopping. The shown failures all came from integration cases attempting to fetch the Docker server API version. The log says the connection failed; it does not say that the language parsers themselves produced wrong graphs.

That distinction helps, but it does not turn the run green. Docker is a documented prerequisite because cgr daemon up starts Memgraph and Qdrant. Our sandbox did not provide a reachable daemon, and the test suite did not skip those integration cases. Teams running CI in restricted containers must supply Docker access or select an upstream-supported test slice that does not require it.

The checkout contained 1,312 files, about 386,716 source lines, and 31.6 MB of data. We found 13 CI workflows and a Dockerfile, but no top-level tests directory; the actual tests live under codebase_rag/tests. The large ratio of setup errors to passes makes a Docker-capable rerun essential before adopting this commit.

Memgraph and Qdrant turn installation into a service deployment

The published package is the easy part. Python 3.12 or newer, uv tool install, cmake, and ripgrep establish the CLI. cgr daemon up then starts the packaged Memgraph and Qdrant stack. Parsing a repository populates the shared graph, while a second command opens the interactive query path. Semantic search uses the vector side of that stack.

Memgraph is currently a hard dependency in the documented route. Open issue #386 proposes embedded graph and vector alternatives specifically to remove Docker and a running database server, but its acceptance boxes remain unchecked. Until that changes, laptop users and CI operators must budget ports, volumes, image updates, resource limits, backups, and recovery for two data services.

Language depth can add more prerequisites. The release notes mention Jedi for Python, javac facts for Java, Roslyn work for C#, libclang for C++, and structural ast-grep additions. Those frontends improve resolution where available, but they also create toolchain and platform variation. Start with the languages actually present in your repository rather than installing every extra because the matrix is long.

Release v0.0.720 is active, while precision work remains open

The repository was pushed on August 26, 2026, four days after release v0.0.720. GitHub showed 47 combined issues and pull requests. The release added or refined Java and C# taint propagation, Python semantic facts, protobuf indexing, and structural language coverage. This is active maintenance, not a project living on an old tag.

The project's version policy is unusual but documented. Git tags advance on every merge, while GitHub releases and PyPI publish every 50th version or immediately for a security fix. A newer tag than the package is therefore expected and should not be called abandonment. Teams still need to decide whether to pin the packaged release or a specific main-branch commit.

Open issue #1454 gives a concrete reason for platform testing: it reports many subprocess calls relying on locale decoding, which can corrupt non-ASCII tool output on Windows. Issue #386 shows that removing the Docker requirement remains work rather than a shipped option. Code-Graph-RAG is worth a controlled trial for polyglot investigation, but its graph results, edit path, and deployment all need verification on the exact repository and operating system you use.

Alternatives

ProjectWhat it isPick it when
SourcegraphCode search and intelligence for navigating large repositories across teams.pick this instead when organization-wide search, permissions, and a mature web product matter more than a local graph agent.
Aider gh↗A terminal coding assistant that edits a Git worktree with repository context.pick this instead when the main job is reviewed code editing and you do not need Memgraph-backed relationship queries.
Continue gh↗An open coding-agent platform with IDE and command-line workflows.pick this instead when editor integration and configurable model access matter more than a code knowledge graph.

What people are saying

  1. [github-trending] vitali87/code-graph-rag

Sources

  1. Code-Graph-RAG README
  2. Code-Graph-RAG v0.0.720 release
  3. Embedded database alternatives issue
  4. Windows locale decoding issue

More llm tools reviews

MiMo-Code · pi-claude-bridge · treg · train-llm-from-scratch · mistral.rs · flue · the whole board →