Pointed at a project, `engram-serve` gives an agent six ways to ask about a codebase without opening the files, and every answer comes from an index sitting on your own disk — no account, nothing uploaded. Two things shape what you actually get: the automatic read-interception engram is known for arrives through `engram install-hook` in Claude Code rather than through these six tools, and the graph is a snapshot that answers for the repo as of your last `engram init` unless you wire up `engram watch` or `engram hooks install` to rebuild it.
`engramx` is an npm package that indexes a codebase into a local SQLite knowledge graph and then serves that graph to an MCP client. The MCP server is one of the binaries in the package — `engram-serve` — and speaks JSON-RPC over stdio. The config block is `npx -y -p engramx engram-serve /path/to/your/project`, or `engram-serve` with the project path in `args` once the package is installed globally. The project path is baked into the arguments, so it is one server instance per repo. The graph is built beforehand by `engram init`, which writes `.engram/graph.db` inside the project from a tree-sitter parse plus git history; the same file is what the CLI and the Claude Code hooks read.
- Natural-language search over the index — `query_graph` answers from the graph rather than from file contents
- Orientation in an unfamiliar repo — `god_nodes` for the most-connected entities, `graph_stats` for node and edge counts with a confidence breakdown
- `shortest_path` traces the connection between two concepts, so you can ask how one part of the codebase reaches another
- `list_mistakes` returns past failure nodes — engram captures these from the repo's git revert history, and filters out the ones a later refactor made stale
- `benchmark` measures token reduction on the repo the server points at. The README's own figure is an 89.1% aggregate per-file reduction across 87 files of engram's repo (163,122 tokens read raw against 17,722), and it labels that a structural context-packet reduction rather than a bill saving
- 10 languages parsed into the AST graph: TypeScript, JavaScript, Python, Go, Rust, Java, C, C++, Ruby, PHP
- A REST route to the same graph — `engram server --http` serves `/query`, `/gods`, `/stats`, `/path`, `/mistakes` and `/hook-stats` on port 7337, bound to `127.0.0.1`
Nothing to authorize — no account, no API key, no cloud service; the README states the only network call is `npm install`. What it does need is Node.js 20+ and a graph to serve: `npm install -g engramx`, then `engram init .` in the project before you point a client at it, because `engram-serve` reads `.engram/graph.db`. There are no native dependencies — SQLite runs through sql.js WASM, so no Rust, Python or system libraries. Every environment variable is optional: `ENGRAM_API_TOKEN` is the bearer token for the HTTP server and is auto-generated at `~/.engram/http-server.token` when unset, `ENGRAM_MISTAKE_GUARD` turns pre-mortem warnings on ('1' warns, '2' denies), `ENGRAM_ANTHROPIC_MEMORY_PATH` and `ENGRAM_MCP_CONFIG_PATH` override file locations, and `ENGRAM_NO_UPDATE_CHECK` set to '1' silences the update notice. Apache 2.0.
One command — npm install -g engramx
