⚠️ Breaking changes
The default graph backend is now an embedded SQLite graph, not Memgraph. A first run needs no Docker, no server and no cmake: cgr start writes ~/.cgr/graph.sqlite and queries it in process. The engines do not share data.
To keep using Memgraph, install the driver extra and select it explicitly:
uv tool install "code-graph-rag[treesitter-full,memgraph]" # or: pip install 'code-graph-rag[memgraph]'
export GRAPH_BACKEND=memgraph
cgr daemon up
-
pymgclientis no longer installed by default; it moved to the memgraph extra. Selecting Memgraph without it fails with a message naming the extra. -
If your config sets
MEMGRAPH_HOST(or anotherMEMGRAPH_*setting) but notGRAPH_BACKEND, cgr now opens an empty embedded graph and logs one warning per process. SetGRAPH_BACKEND=memgraph(or sqlite) to settle it. -
If you ran Memgraph purely on defaults, with no
MEMGRAPH_*orGRAPH_BACKENDsetting, there is no warning: cgr silently starts on an empty embedded graph. SetGRAPH_BACKEND=memgraphto get your existing graph back. -
.env.example now sets
GRAPH_BACKEND=sqlite.
To move to the embedded graph, leave GRAPH_BACKEND unset and re-index each project with cgr start --repo-path <repo> --update-graph.
See Switching backends.
Highlights
- Embedded graph matches Memgraph 3.3: all 154 of cgr's read queries return the same rows on a 38k-node graph, in 33 s (with the Rust extension) against 221.5 s on Memgraph.
- New Rust extension, cgr-graph-rs: Cypher parser, graph procedures, ingest and result decoding in Rust, shipped as abi3 wheels for Linux (x86_64/aarch64, glibc and musl), macOS and Windows. Other platforms fall back to the pure-Python path.
- Optional serverless vector store: CGR_VECTOR_STORE_BACKEND=sqlite with code-graph-rag[sqlite-vec]. Qdrant stays the default.
- Neo4j 5: two queries it rejected as ambiguous aggregations are fixed.
What's Changed
Full Changelog: v0.1.91...v0.2.0