The search half is what most indexers give you; the session half is the unusual part - decisions and touched files are recorded as you work and come back on the next run, so context survives a restart. A dashboard and a savings command turn the effect into figures you can check rather than take on faith.
A local index over your repository - chunks, embeddings and a graph of calls and imports - exposed as MCP tools. Nothing leaves the machine, and one index serves whichever editor you happen to be in.
- Hybrid vector and BM25 search over the codebase, expanded along graph edges
- Full source for any compressed result, pulled back on demand
- Related code found through call and import edges rather than filename guessing
- Decisions and worked-in areas recorded now and recalled in a later session
- A turn-by-turn timeline of a past session, drillable down to the raw input and output of one event
- Index freshness checks, targeted or full re-indexing, and a switch for how verbose responses are
Python 3.11+ and a C compiler for the tree-sitter grammars. One command sets everything up: uvx --from "code-context-engine[local]" cce init, which indexes the project and writes the MCP config for whichever editors it detects. If Ollama is already running it is used for embeddings instead.
One command — uvx --from "code-context-engine[local]" cce init
