Shipped · 8 languages live · free in every tier

A code-graph that never forgets what your codebase looks like.

Drop structural code intelligence into Claude Code, Cursor, Codex, or any MCP-aware agent. Your agent stops grepping ten files to find who calls X and just asks the substrate. Sub-millisecond answers. Persistent across sessions. $0 per query.

How it works

One pipeline. Eight languages. One substrate.

Your codebase is parsed locally into structural triples (caller / callee / class / module / import edges) and pushed to the substrate as a portable knowledge graph. The agent queries it through 5 MCP tools — no LLM in the loop on the substrate side, just a deterministic engine.

Neruva code-graph indexing and query pipelineSource files in 8 languages are parsed by per-language extractors into a unified triple schema, stored in the Neruva substrate, and queried via 5 MCP tools by any AI coding agent.1. SOURCEyour_app.pyui.tsxmain.golib.rsService.javamodel.rbengine.cpp2. EXTRACTAST → triples.py → stdlib ast.ts → Babel.go → tree-sitter.rs → tree-sitter.java → tree-sitter.rb / .cpp → ts3. SUBSTRATEHD knowledge graph(subject, relation,object) triplescalls · called_bydefined_in_classimports_frominherits · implements4. QUERYcode_kg_calleescode_kg_callerscode_kg_class_ofcode_kg_module_ofcode_kg_importsAI coding agentsub-ms · $0/call · deterministic · MCP-native · portable .neruva export

Eight languages, same triple schema.

Every language indexes into the same (subject, relation, object) shape. defined_in_module, defined_in_class, calls, called_by, imports_from, inherits, implements. The agent asks the same MCP tool regardless of language; the substrate returns the same answer shape.

LanguageExtensionsParserInstall
Python.pystdlib astincluded in base
JavaScript.js / .jsx / .mjs / .cjsBabelincluded in base
TypeScript.ts / .tsxBabelincluded in base
Go.gotree-sitter[multilang] extra
Rust.rstree-sitter[multilang] extra
Java.javatree-sitter[multilang] extra
Ruby.rbtree-sitter[multilang] extra
C / C++.c / .h / .cpp / .hpptree-sitter[multilang] extra

Five MCP tools. Five questions your agent stops grepping for.

Each is a thin wrapper over the substrate's graph query surface, with “Call this when…” routing nudges in the tool description so your agent picks the structural path instead of opening files.

code_kg_callees

Who does this function call?

code_kg_callees("engines.kg::HDKnowledgeGraph.query")
code_kg_callers

What calls this function?

code_kg_callers("bind")
code_kg_class_of

What class owns this method?

code_kg_class_of("engines.kg::HDKnowledgeGraph.query")
code_kg_module_of

What module owns this name?

code_kg_module_of("HDKnowledgeGraph")
code_kg_imports

What does this module import?

code_kg_imports("engines.kg")

Install in under a minute.

Auto-fires on every Claude Code session. No CI step, no extra service, no separate billing.

# 1. install (Python + JS/TS in the base package)
pip install neruva-record

# 2. wire the SessionStart hook
neruva-record install --api-key <your-key>

# 3. optional: add Go / Rust / Java / Ruby / C++
pip install 'neruva-record[multilang]'

# 4. open any project — your code-graph indexes silently
cd ~/projects/my-repo && claude

Index runs in the background; if the same project was indexed within the last hour, it's skipped. Subsequent sessions re-resolve the same code-graph automatically via a stable hash of the project path.

Why this is different from grep, embeddings, or repo-maps.

Persistent

Index once at SessionStart, query forever. Survives across sessions, across machines, across the same agent revisiting the codebase a week later. The .neruva export means you own it — mail the file, version it in git, replay it bit-identically.

Structural, not similarity

Embeddings tell you 'this function is semantically near that one.' A code-graph tells you 'this function calls that one,' with exact answers and calibrated confidence. The questions an agent actually needs answered are structural, not approximate.

Free at every tier

Code-graph triples land in HD knowledge graphs on the substrate, not the records bucket. They don't consume your tier's records cap. Query cost on the substrate side is $0 per call — no LLM in the loop.

How this compares.

See /compare for the full breakdown vs Sourcegraph / SCIP / LSP / Cursor @codebase / Aider / roll-your-own.

vs Sourcegraph / SCIP / Kythe

Hosted enterprise service · web UX · per-seat pricing. Strong cross-repo. Separate billing from your AI stack, no MCP, no agent-memory pairing.

vs LSP (per-editor)

Per-process, dies when the editor closes. No persistence across sessions, no cross-codebase queries, no portable export.

vs Cursor @codebase / Aider repo-map

Re-greps + re-reads every session. O(tokens × codebase) burned every turn for the same information.

vs Embeddings / vector RAG

Approximate semantic similarity. Right for 'docs that mention X,' wrong for 'who calls X' with exact answer.

Stop grepping. Start asking.

Your AI coding agent already has memory. Give it structural code intelligence too. One install, eight languages, free forever on the starter tier.