About NeuralMind

Open-source semantic code intelligence for AI agents. Built for cost efficiency, security, and compliance.

More than token reduction — four data-backed benefits

NeuralMind is not just "fewer tokens." Every claim below ships with a committed eval. The first two run on real, pinned OSS repos (requests, click) and are fully reproducible — python -m evals.public.run. The last two are measured A/Bs on the bundled reference fixture, so they're real but smaller-scope.

Honest scope: the cost and accuracy rows run on real, pinned OSS repos (fully reproducible — see the methodology); the learning and grounding rows are committed A/Bs on the bundled reference fixture, so they're real but smaller-scope. We report where NeuralMind doesn't win too — a well-tuned vector RAG ties it on pure findability and is cheaper on raw tokens; that's in the benchmark table. The competitor comparison is pure retrieval ranking, not their LLM-agent loop.

By the numbers — measured, not claimed

Every figure below is produced by code in the repo and gated in CI, so it can't silently regress. Where a number is a real-repo extrapolation or an estimate, it says so. Reproduce them all with python -m tests.benchmark.run and the evals/ harnesses — details on the Benchmarks page.

What we don't claim: the CI numbers come from a tiny fixture (they prove the mechanism and catch regressions, not a real-repo ceiling); TurboQuant is an approximate index whose compression win matters at scale; 40–70× is a range, not a fixed guarantee. Point it at your own repo to see your ratio.

Who it's for — and who it isn't

Reach for NeuralMind if you drive an AI coding agent (Claude Code, Cursor, Cline, Continue, or your own MCP/OpenRouter stack) over a non-trivial codebase, you want one shared memory across those agents, you're watching LLM spend on repo-level questions, or you work in a regulated/air-gapped setting that rules out SaaS code search.

You probably don't need it if your repo is under ~5K tokens (just paste it in), you don't use an agent, or you only want inline completions (use Copilot/Cursor directly).

Set expectations honestly: the 40–70× token reduction is a real-repo range — CI measures a conservative 6.2× on a tiny fixture, so prove it on your own code. ChromaDB is still the default (the slim, ChromaDB-free backend is opt-in while it bakes). It's a fast-moving, single-maintainer beta with a lot of surface area — pin a version for CI. The compressed backend is approximate, with parity gated on the reference fixture rather than measured at large-repo scale. If those trade-offs are fine, the upside is real and the receipts are in the repo.

Where NeuralMind is going next — the eval-first roadmap

A staged plan — the first increment (v0.13.0) has shipped. After the v0.10→v0.12 ergonomics + diagnostics work, the current arc is about proving and future-proofing the core. The spine is simple: measure, then change, then measure again.

The arc (v0.13 → v0.16)

A decision we've made for the team story

Committable, opt-in team/shared memory is approved in principle: a reviewed team baseline that travels in your git repo (no SaaS, no exfiltration), overlaid by each developer's private personal layer. Its day-one onboarding lift will be measured by the v0.13 harness before the design is locked — we sign off on data, not assertion.

Read the full next-release plan & feature map → · Roadmap →

The Context Engineering Stack: NeuralMind, Ponytail, and Headroom

NeuralMind is one piece of a broader context engineering ecosystem. Three tools address token waste at different points in the LLM pipeline — and they compose without conflict:

Where each tool intervenes

Tool Locus Primary Mechanism Verified Savings
NeuralMind Retrieval Hebbian synapse networks 40–70× fewer query tokens
Ponytail Generation Sequential decision ladder 80–94% output token savings
Headroom Transport Reversible CCR loops 60–95% payload reduction

For enterprise-scale agentic fleets, the full stack delivers maximum token efficiency, 100% local privacy, and a traceable technical debt ledger. Read the full comparative guide →

What's New in v0.42.0 — the code graph learns to answer "what does this touch?"

NeuralMind's recall has always run on two soft signals — semantic similarity and the learned synapse graph. v0.42.0 adds the hard one the graph carried all along: how the code is actually wired. graphify already extracts typed structural edges — calls, inherits, imports_from, contains — into every graph.json, and the embedder already loads them. Until now they were dead weight, used only by the graph-view UI. This release turns them into a first-class, queryable capability an agent can call. No new extraction, no schema bump, and default retrieval stays byte-identical to v0.41.0.

Structural neighbors — neuralmind structural <symbol>

Ask how any symbol is wired and get its callers, callees, base classes, subclasses, and importers straight from the static graph. The neuralmind_structural_neighbors MCP tool returns the same, shaped for agent consumption; the query may be a symbol name or a natural-language description, resolved to the closest code node (rationale/doc nodes are skipped, since they carry no structural edges). This is the precise, day-one answer to "what calls foo?" — the kind of correctness question an editing agent gets wrong when it changes a function but misses two callers.

Blast radius — neuralmind structural <symbol> --blast-radius

Pass --blast-radius (CLI) or blast_radius=true (MCP) to get the transitive reverse-dependency set — everything that (transitively) calls, imports, subclasses, or implements the symbol. It's depth-bounded, cycle-safe, and hub-capped so one over-connected utility can't explode the result. Run it before a rename or a risky change and edit with every affected caller, importer, and subclass in view instead of discovering them from a red CI run.

Structural recall in retrieval (opt-in)

With NEURALMIND_STRUCTURAL_RECALL=1, a query that lands on a called function also pulls its callers/callees into L3 context — budget-neutral: a pulled-in neighbor displaces the weakest vector hit rather than adding to the count, and recalled nodes are tagged [wired] in the rendered context. This is opt-in, not default: on graphs where the call/inherit signal is strong it can saturate top-k recall and crowd out the tuned synapse signal, so default retrieval is left byte-identical and the always-on structural tools carry the headline value with zero effect on the retrieval stack. The whole layer is killable with NEURALMIND_STRUCTURAL=0.

Structural edges are innate wiring — compiler/AST-derived, precise, known before you've run a single query. Synapses are learned potentiation — earned from how you work. Structure says what can be related; synapses say what actually gets used together. A static index can copy the structure; it cannot copy the fusion.

Full v0.42.0 release notes →  |  Blast-radius-before-a-rename walkthrough →

What's New in v0.41.0 — the feedback loop closes, and the relevance signal goes on the wire

Two features that make NeuralMind's half of a modular agent stack real: the retrieval layer now learns from what the agent did, and emits the relevance signal it already computes as structured data a downstream tool can consume. The standard critique of a modular split is that the layers can't see each other — a compressor downstream shrinks spans without knowing why they were retrieved, and nothing feeds what the agent reused vs. rewrote back into memory. v0.41.0 closes NeuralMind's half of both seams. Both are opt-in / off-by-default on the wire, so nothing about default retrieval changes.

Reuse-vs-rewrite feedback loop

A new Edit/Write PostToolUse hook (edit-activity) fires on every edit: it resolves the edited file to its graph nodes, then scans the new code for identifiers that name a symbol defined elsewhere in the graph. Those references are a reuse signal — the edited file and the reused definitions fired together in one thought — so their synapse edges are reinforced, and the existing L2/L3 synapse boost surfaces the reused nodes more readily on future queries. It's the implicit complement to v0.38.0's explicit neuralmind_feedback MCP tool: the agent doesn't have to say anything; NeuralMind observes what it reused from the edit it already made and learns from that. Language-agnostic by construction (it operates on graph nodes and identifier tokens, never on source syntax), a pure side effect that never triggers a build and fails open, and surfaces possible duplication (not yet penalized) when new code redefines a name that already exists. Off-switch: NEURALMIND_REUSE_FEEDBACK=0.

Structured relevance sidecar

Every retrieved node already carries three relevance signals — a vector similarity score, a learned synapse boost, and a recall flag. The ranked context string renders these as prose, which is fine for the model but opaque to a tool. v0.41.0 exposes them as a structured, parseable relevance block keyed by source file — per-file max_score plus per-node score / synapse_boost / recalled / line spans — built from the post-boost L3 hits, so it reports the same signals the visible context used. Request it with neuralmind_query(include_relevance=true) (MCP) or neuralmind query --relevance (CLI). A downstream compression proxy can read this and protect the load-bearing spans instead of compressing them away. Because the signal travels alongside the payload as versioned, stably-keyed metadata, a tool running after NeuralMind can re-associate it regardless of pipeline order — the sidecar is order-independent by design.

Full v0.41.0 release notes →

What's New in v0.40.0 — Schema artifact indexing: OpenAPI, SQL, and Protocol Buffers

NeuralMind now indexes non-code schema artifacts alongside your source, closing the most-requested documentation gap from the v0.38 audit. Three new extractors join the document layer: OpenAPI/AsyncAPI YAML specs, SQL DDL files, and Protocol Buffer definitions. All three reuse the existing document node type — no new MCP tools, no config changes, no new retrieval concepts. The synapse layer learns cross-artifact associations automatically, so POST /payments/charge co-activated with process_payment() strengthens the synapse edge without any manual wiring.

OpenAPI / AsyncAPI (.yaml, .yml)

Parses files that carry an openapi, asyncapi, or swagger key using PyYAML (falls back to JSON). Emits one file-level node labelled by info.title, one node per path+method labelled by summary or operationId (e.g. Charge a card), one node per schema component (e.g. schema:Payment), and one node per AsyncAPI channel. Plain YAML config files (no API key) are silently skipped — NeuralMind never indexes infrastructure config as API documentation. Honest scope: $ref resolution and inline response body schemas are not modelled.

SQL DDL (.sql)

Regex-matches CREATE TABLE, CREATE VIEW, CREATE PROCEDURE, CREATE FUNCTION, CREATE TRIGGER, CREATE INDEX, and CREATE TYPE statements (case-insensitive; handles OR REPLACE and IF NOT EXISTS variants). Emits one node per database object (e.g. TABLE:accounts, VIEW:active_users). ALTER TABLE, INSERT, and SELECT are not indexed — only DDL CREATE is the object layer agents actually query.

Protocol Buffers (.proto)

Regex-extracts message, service, rpc, and enum block headers (proto2 + proto3). Emits one node per definition (e.g. service:UserService, rpc:GetUser, message:GetUserRequest, enum:Status). Proto import edges (cross-file message references) are not modelled as graph edges; GraphQL support is planned for v0.42.0.

Incremental rebuild and synapse integration

Schema files participate in neuralmind watch --reindex. A changed .yaml, .sql, or .proto re-extracts only that file's nodes on the next incremental build pass — same as .py/.ts files. The synapse layer applies the same Hebbian co-activation to schema nodes: if an agent retrieves schema:Payment and then process_payment(), that association strengthens automatically over queries.

Full v0.40.0 release notes →

What's New in v0.39.0 — Trust, transparency, and quality gaps closed

Five developer-experience improvements shipped together: dry-run indexing, instant synapse decay on file deletion, retrieval explainability, diff-aware co-break detection, and a cumulative token savings dashboard. None change the retrieval path — progressive disclosure, Hebbian synapses, and team memory are unchanged. Each improvement closes a specific gap in how transparent and trustworthy NeuralMind is to work with daily.

neuralmind build --dry-run

Scans the project, counts files and lines by language, and prints an estimated token savings table — without touching the vector store or synapses. Safe to run in CI as a pre-build gate. Pass --json for machine-readable output. Typical output: Estimated savings: 6.2× (89,400 tokens → 14,400 tokens) across 247 files.

Faster synapse decay on file deletion

The file watcher (neuralmind watch) now detects when source files are removed and immediately calls decay_node() on every graph node belonging to that file — using the watchdog on_deleted event (event-driven) or set-difference detection in the poll loop. Deletion callbacks fire without the normal debounce delay, so deleted-code associations are pruned in real time rather than gradually fading over many sessions. Existing watch callers without a deletion_callback are unaffected (the parameter is optional, defaults to None).

neuralmind query --explain

Appends a structured trace to query output showing exactly how the context budget was allocated: which layers (L0/L1/L2/L3) fired and how many tokens each consumed, which community clusters loaded, the top search hits with their scores, and which synapse associations influenced recall. This is the primary tool for debugging a retrieval that felt wrong — the trace makes the L0–L3 progressive-disclosure decision auditable.

neuralmind review — diff-aware co-break detection

Reads git diff --name-only <base>, maps each changed file to its graph nodes, runs spreading activation (depth 2, top-k configurable) from those seed nodes, and surfaces the most likely co-break candidates — the nodes most strongly associated with the changed code but not themselves in the diff. Prints a ranked table of candidates with their edge weights. Also available as the neuralmind_review MCP tool, so agents can call it automatically before a commit or push. Handles cold (unbuilt) graphs gracefully.

neuralmind savings — cumulative token savings dashboard

Reads the JSONL event log (NEURALMIND_MEMORY=1), groups events by session, and prints a dashboard: total sessions tracked, total tokens saved, average reduction ratio, and a table of the most recent queries with their individual ratios. Run it after a week of use to get a concrete, cumulative number for the token cost you've avoided.

Full v0.39.0 release notes →  |  Claude Code walkthrough →

What's New in v0.38.0 — VS Code native extension

VS Code users now get first-class NeuralMind integration without Cline or a hand-wired tasks.json. The extension (editors/vscode/) is a thin TypeScript shell over the existing Python CLI and HTTP server — no new retrieval logic, no new Python dependencies.

Status bar

A persistent status bar item shows index state at a glance: ✓ NeuralMind · 2.1k nodes (green, fresh), ⚠ NeuralMind · 2.1k nodes (yellow, stale), or ⊘ NeuralMind (red, not built). Staleness is measured against graphify-out/graph.json mtime vs. the neuralmind.autoBuildThresholdHours setting. Clicking opens the graph panel.

Command palette

Ctrl+Shift+P → NeuralMind exposes eight commands: Query (retrieved context to the Output panel), Wakeup, Skeleton (structural outline of the active file), Build Index (with a progress notification), Probe Retrieval (answerability / MRR / recall@k), Open Graph View, Setup Cline MCP, and Setup VS Code MCP.

Graph panel

The neuralmind serve UI is embedded in a VS Code WebView via <iframe> — all existing frontend JS and CSS reused untouched. The panel retains its graph layout when hidden (retainContextWhenHidden: true).

Hover cards (opt-in)

Set "neuralmind.enableHover": true in VS Code settings to get structural skeleton cards on symbol hover, LRU-cached (50 entries, 60 s TTL).

MCP registration

neuralmind install-mcp --client vscode writes the server entry to Code/User/settings.json under "mcp.servers" (VS Code 1.99+ native MCP format). If settings.json is JSONC, the command prints the entry to paste manually rather than clobbering the file.

VS Code extension walkthrough →  |  Full v0.38.0 release notes →

What's New in v0.38.0 — hybrid search, explicit feedback, and CI auto-index

Three retrieval-quality improvements that directly address the gaps between NeuralMind and LlamaIndex/mem0 on code-specific retrieval. None touch the existing token-reduction machinery — progressive disclosure, Hebbian synapses, and team memory are unchanged.

BM25 hybrid search

A code-aware BM25 keyword index is built alongside the vector store and merged via Reciprocal Rank Fusion at query time. The tokeniser splits camelCase (UserService["user", "service"]), snake_case (get_auth_token["get", "auth", "token"]), dots, and hyphens so identifier fragments score exact-name matches instead of relying entirely on semantic similarity. Queries like "UserService authentication" now rank the exact UserService node first, not just semantically similar nodes. The merge is budget-neutral — same result count as pure vector search, just reordered. Disable with NEURALMIND_BM25=0. The BM25 index is persisted at <project>/.neuralmind/bm25_index.json and rebuilt on every neuralmind build.

neuralmind_feedback MCP tool

The new neuralmind_feedback MCP tool exposes explicit positive/negative signal on a retrieved node — closing the feedback loop gap that mem0 delivers. Positive signal (signal="positive" with context_node_ids) fires an immediate Hebbian reinforcement between the target node and the other nodes from the same retrieval round, identical to what happens during natural co-editing but instant rather than end-of-session. Negative signal (signal="negative") applies a targeted single-tick decay to all synapse edges for that node — LTP-protected edges (activation_count ≥ 5, weight ≥ 0.20) are never fully removed by a single negative signal, so a mis-click can't erase long-established associations.

CI auto-index GitHub Action

A drop-in GitHub Action (.github/workflows/neuralmind-autoindex.yml) auto-builds the index on every push to main/master, caches .neuralmind/ under a source-hash key (so only real source changes trigger a re-embed), and auto-commits the updated .neuralmind-team-memory.json team memory snapshot. No secrets needed — NeuralMind is 100% local. Copy it into any repo to get automated indexing and fresh team memory on every push.

Full v0.38.0 release notes →

What's New in v0.37.0 — multi-language: PHP

The bundled tree-sitter backend now indexes PHP out of the box, taking it to ten languages — Python, TypeScript, Go, Rust, Java, C, C++, C#, Ruby, and PHP — with no external tooling, completing the C#/Ruby/PHP breadth tier. PHP (.php) is registered behind the same _SUFFIX_LANG_EXTRACTORS seam every other language uses, emitting the same graphify-compatible graph.json the whole retrieval stack already consumes. neuralmind build . now just works on a PHP project, no graphify. The tree-sitter-php grammar is bundled as a runtime dep.

How the PHP extractor maps onto the model

Why PHP rides a proven shape

PHP maps almost 1:1 onto the existing Java extractor plus a namespace layer — class/interface/trait/enum → type nodes; extends/implementsinherits; useimports_from (resolved by class name, like Java imports) — so it rides a proven shape at the smallest risk, one language per PR, each clearing the parity gate in isolation. This release completes the C#/Ruby/PHP breadth tier. Honestly out of scope: compiler-accurate call resolution (no $obj->method receiver-type resolution; SCIP remains the exact path), require/include path imports (use is the edge source), and trait-use-inside-a-class-body as inheritance (only extends/implements emit inherits).

Proven at parity, not asserted

graphify can't parse PHP standalone, so the gold is a hand-authored expected symbol set — what a correct parser should recover, enumerated from the fixture independently of our implementation. PHP passes the same gate as Rust/Java/C/C++/C#/Ruby — 54/54 symbols (100% structural coverage), zero dangling edges — on a dedicated sample_project_php fixture.

Full v0.37.0 release notes →

What's New in v0.36.0 — multi-language: Ruby

The bundled tree-sitter backend now indexes Ruby out of the box, taking it to nine languages — Python, TypeScript, Go, Rust, Java, C, C++, C#, and Ruby — with no external tooling. Ruby (.rb) is registered behind the same _SUFFIX_LANG_EXTRACTORS seam every other language uses, emitting the same graphify-compatible graph.json the whole retrieval stack already consumes. neuralmind build . now just works on a Ruby project, no graphify. The tree-sitter-ruby grammar is bundled as a runtime dep.

How the Ruby extractor maps onto the model

Honestly out of scope

Ruby is dynamic (no static receiver types), so compiler-accurate call resolution isn't done — calls stays bare-name best-effort and dynamic dispatch / metaprogramming (define_method, method_missing) isn't resolved (SCIP remains the exact path). Mixins aren't modelled as inheritanceinclude/extend/prepend are not emitted as inherits edges (only class Foo < Bar is). The structural layer — class/module/method structure — is clean and recovers well, which is what the parity gate proves.

Proven at parity, not asserted

graphify can't parse Ruby standalone, so the gold is a hand-authored expected symbol set — what a correct parser should recover, enumerated from the fixture independently of our implementation. Ruby passes the same gate as Rust/Java/C/C++/C# — 46/46 symbols (100% structural coverage), zero dangling edges — on a dedicated sample_project_ruby fixture.

Full v0.36.0 release notes →

What's New in v0.35.0 — multi-language: C#

The bundled tree-sitter backend now indexes C# out of the box, taking it to eight languages — Python, TypeScript, Go, Rust, Java, C, C++, and C# — with no external tooling. C# (.cs) is registered behind the same _SUFFIX_LANG_EXTRACTORS seam every other language uses, emitting the same graphify-compatible graph.json the whole retrieval stack already consumes. neuralmind build . now just works on a C# project, no graphify. The tree-sitter-c-sharp grammar is bundled as a runtime dep.

How the C# extractor maps onto the model

Why C# rides a proven shape

C# maps almost 1:1 onto the existing Java extractor — namespaces ≈ packages; class/interface/struct/record/enum → type nodes; base_listinherits; usingimports_from — so it rides a proven shape at the smallest risk, one language per PR, each clearing the parity gate in isolation. Honestly out of scope: compiler-accurate call/inherit resolution (SCIP remains the exact path), generics/partial-class merging and using aliases, and top-level-statement implicit Main.

Proven at parity, not asserted

graphify can't parse C# standalone, so the gold is a hand-authored expected symbol set — what a correct parser should recover, enumerated from the fixture independently of our implementation. C# passes the same gate as Rust/Java/C/C++ — 52/52 symbols (100% structural coverage), zero dangling edges — on a dedicated sample_project_csharp fixture.

Full v0.35.0 release notes →

What's New in v0.34.0 — answerability, not just findability

Gold-file recall measures whether the right file lands in the window — locating, not answering. The new opt-in answerability arm (python -m evals.public.run --judge) closes that gap honestly, without ever displacing the deterministic recall headline.

How it works

For each query it takes the real context each backend would put in the window — whole files for full-file/ripgrep, retrieved chunks for embedding-rag, the compact L0–L3 assembly for neuralmind — and asks a pinned model (claude-opus-4-8) to answer using only that context (it must say "insufficient context" when the window can't support an answer). A separate judge call grades each answer against the same def-site gold anchor (the query's oracle_symbol) on a 0–2 scale, plus a grounded flag.

Hard to dismiss

Full v0.34.0 release notes →

What's New in v0.33.0 — the competitor head-to-head, run for real

The public benchmark's competitor row is no longer a scaffold — it's a live, reproducible head-to-head vs. codebase-memory-mcp 0.8.1 (the obvious incumbent: DeusData, single-binary, on-device embeddings, no LLM API key). It runs on the same pinned repos, same questions, same objective def-site gold, scored by the same quality.py as every other backend, at retrieval depth matched to embedding-rag (top-8).

The result — on reproducible retrieval ranking

At matched retrieval depth, NeuralMind finds the objectively-correct file every time and ranks it far higher: 100% gold-file recall with MRR 0.96 on requests and 0.60 on click, against the competitor's 0.50 recall / 0.23 MRR (requests) and 0.64 recall / 0.50 MRR (click) — i.e. it surfaces the gold file in its top-8 only ~half the time, and the files it does surface cost an order of magnitude more tokens to read (25K–38K vs ~1K). The win is on reproducible retrieval ranking, not a claim about end-to-end agent behavior.

Fair by construction (and honest about what it is)

Reproduce it

The competitor adapter is off the default run (it needs an external binary download). From a clone: pip install codebase-memory-mcp==0.8.1 (pins 0.8.1) and python -m evals.public.competitor. Raw per-query traces, results.json, and pinned REPRODUCE.md are committed under bench/public/competitor/; full caveats live in the "Competitor head-to-head" section of docs/benchmarks/public.md.

Full v0.33.0 release notes →

What's New in v0.32.0 — multi-language: C and C++

The bundled tree-sitter backend now indexes C and C++ out of the box, taking it to seven languages — Python, TypeScript, Go, Rust, Java, C, and C++ — with no external tooling. C (.c/.h) and C++ (.cpp/.cc/.cxx + .hpp/.hh/.hxx) are registered behind the same _SUFFIX_LANG_EXTRACTORS seam every other language uses, emitting the same graphify-compatible graph.json the whole retrieval stack already consumes. neuralmind build . now just works on a C/C++ project, no graphify.

How the C/C++ extractors map onto the model

Honestly out of scope (disclosed, not hidden)

C/C++ is where naive multi-language indexers fall over: a widely-cited competitor advertises 158 languages yet scored 0.58 on C because preprocessor density wrecks a shallow parse. NeuralMind takes the opposite tack — index the parseable code at full parity and be honest about what's out. So: preprocessor macros are not indexed as symbols (#defines, including function-like macros, are skipped), templates are not specialized (a template<...> is emitted as one symbol), and #ifdef is not evaluated (conditionally-compiled code is indexed as visible). These are deliberate MVP boundaries, tracked as follow-ups.

Proven at parity, not asserted

graphify can't parse these standalone, so the parity gate proves parity structurally: both C and C++ pass the same gate as Rust/Java — 100% symbol coverage, zero dangling edges — on dedicated fixtures, with hand-listed expected symbols/edges in tests/test_graphgen.py as the independent oracle.

Full v0.32.0 release notes →

What's New in v0.31.0 — the honest public benchmark

NeuralMind's headline has always been "40–70× fewer tokens on code questions." v0.31 backs it with evidence built to survive hostile expert scrutiny. neuralmind benchmark --public runs a reproducible, no-cherry-picking comparison on real, pinned OSS repos (requests @0e322af877, click @874ca2bc1c), against strong baselines (full-file paste, ripgrep, a same-encoder vector RAG), reporting cost and correctness together — and it ships the forkable runner plus raw data so anyone reproduces it without trusting us. Run it from a source checkout (the evals/public harness ships in the repo, not the pip wheel).

The result (reproduce it yourself)

Gold-file recall — an objective def-site oracle, no LLM judge — vs. context tokens (tiktoken o200k_base, deterministic):

Honest headline: against what agents actually do today — paste files or grep — NeuralMind hits 100% gold-file recall at 38–85× fewer tokens, and beats ripgrep on both recall and cost. We also show, without hiding it, that a well-tuned vector RAG is excellent at findability too (and cheaper on raw tokens) — credibility comes from reporting the losses, not just the wins.

Why it's hard to dismiss

Full methodology, caveats, and where NeuralMind loses → · v0.31.0 release notes →

What's New in v0.30.0 — team memory: agents inherit each other's intuition

NeuralMind's synapse layer learns what code goes with what from how you work. v0.30 makes that learned signal a team artifact. A team commits one file and every teammate's agent inherits the team's learned associations automatically — a fresh git clone starts with the team's earned intuition instead of relearning it from scratch. This is the differentiator a static code-index can't copy: there's no learned signal to share.

How it works

Safe by construction

Off-switch NEURALMIND_TEAM_MEMORY=0; writes the shared namespace only (never a teammate's personal/branch memory); MAX-merge + decay mean a stale bundle can't permanently distort recall (neuralmind memory reset --namespace shared clears it); fail-open on a missing/corrupt bundle; and the bundle is association pairs + weights — no source code, no prose — traveling via git, 100% local. Measure the day-one lift with neuralmind eval --onboarding.

Full v0.30.0 release notes →

What's New in v0.29.0 — ChromaDB-free by default

On mainstream platforms, pip install neuralmind no longer pulls ChromaDB. The default install uses the ChromaDB-free turbovec/ONNX backend (vectors byte-identical to ChromaDB's), removing ChromaDB's large transitive dependency tree — and the recurring ChromaDB CVE surface — from the default. The vector backend is platform-gated by wheel availability, so the install never breaks: on platforms turbovec has no wheel for (Intel macOS, Windows ARM) ChromaDB is auto-installed as a transparent fallback. ChromaDB is also a one-line opt-in anywhere: pip install "neuralmind[chromadb]" (then backend: graph).

The honest trade-off

"ChromaDB-free" is not a claim of "smaller install": the turbovec path pulls onnxruntime, a heavy native wheel. The precise win is removing ChromaDB's sprawl (FastAPI / grpcio / OpenTelemetry / kubernetes client / …) and its CVE surface from the default, in exchange for one focused native dependency.

Unchanged, and safe to upgrade

This was low-risk because the migration was staged across v0.21 (the turbovec/ONNX backend) and v0.22 (ChromaDB-free import neuralmind + auto-preferring turbovec); v0.29.0 simply flips which dependency set is installed by default.

Full v0.29.0 release notes →

What's New in v0.28.0 — multi-language: Java

The bundled tree-sitter backend now indexes Java out of the box, taking it to five languages — Python, TypeScript, Go, Rust, and Java — indexed in one pass. Java (.java) is registered behind the same _SUFFIX_LANG_EXTRACTORS seam every other language uses, emitting the same graphify-compatible graph.json the whole retrieval stack already consumes. neuralmind build . now just works on a Maven/Gradle/plain Java project, no graphify.

How the Java extractor maps onto the model

Proven at parity, not asserted

graphify can't parse Java, so the parity gate proves parity structurally: the built-in backend must recover ≥90% of the gold graph's symbols with a valid, dangling-free graph. On the reference fixture it recovers 100% (54/54 symbols, zero dangling edges). The independent correctness oracle is a hand-listed set of expected symbols/edges/rationale in tests/test_graphgen.py. Next per the PRD: C/C++ and Ruby.

Full v0.28.0 release notes →

What's New in v0.27.0 — multi-language: Rust

The bundled tree-sitter backend now indexes Rust out of the box, taking it to four languages — Python, TypeScript, Go, and Rust — indexed in one pass. Rust (.rs) is registered behind the same _SUFFIX_LANG_EXTRACTORS seam every other language uses, so it emits the same graphify-compatible graph.json the whole retrieval stack already consumes. Nothing downstream of graph.json changed — only the set of languages the producer understands. pip install neuralmind && neuralmind build . now just works on a Rust crate, no graphify.

How the Rust extractor maps onto the model

Proven at parity, not asserted

graphify can't parse Rust, so the parity gate proves parity structurally: the built-in backend must recover ≥90% of the symbols in the committed gold graph with a valid, dangling-free graph. On the reference fixture it recovers 100% (49/49 symbols, zero dangling edges). The independent correctness oracle is a hand-listed set of expected symbols, edges, and rationale in tests/test_graphgen.py; the parity gate then guards against regressions. This release executes Phase 1 of the language-extractor expansion PRD — Java, C/C++, and Ruby follow the same gated recipe, one language per PR.

Full v0.27.0 release notes →

What's New in v0.26.0 — the selector starts tuning itself

NeuralMind's progressive-disclosure selector can now adjust its own L2 recall depth from how an agent actually uses it. This is phases 1–2 of the self-improvement engine (issue #156): a logging substrate that records query and wakeup events with a session_id, and an opt-in tuner that reads that signal back to widen or narrow how many community summaries L2 surfaces per query. The whole thing is off by default behind NEURALMIND_SELECTOR_AUTOTUNE=1, and with the flag unset behavior is byte-identical to v0.25 — zero extra I/O on the hot path.

How it tunes

The signal is the re-query rate: when an agent issues two consecutive same-session queries whose recalled communities heavily overlap, the first query under-disclosed and the agent had to come back. Persistent overlap means L2 is too narrow, so the tuner raises the recall depth one step (up to 6); a consistently low overlap means it can narrow (down to 2). The tuned value is persisted in the synapse store's meta table, so it carries across sessions per project. A transition-margin dampener (v0.11+) suppresses an otherwise-warranted raise when the agent's directional-transition graph already predicts the next hop decisively (top-1 probability ≥ 0.70) — if the agent already knows where it's going, widening L2 wouldn't reduce the re-query, it would just spend tokens.

What the agent actually sees

Conservative by design

The tuner only moves the cheapest, most reversible knob — the L2 community budget — and every guard keeps it from acting on thin or self-referential data: a 50-event warm-up gate, a hysteretic dead band so it doesn't oscillate, single-step moves clamped to [2, 6] (enforced both before persisting and on read), a window keyed to since the last tune so it doesn't chase a distribution it just perturbed, the transition-margin dampener, and fail-open everywhere — the tuner never raises and the SessionStart hook always returns 0. Phase 3 (eval-driven closed-loop tuning) is future work, surveyed in evals/self_improvement/PLAN.md.

Full v0.26.0 release notes →

What's New in v0.25.0 — one learning system: the synapse layer

NeuralMind now has a single learning signal. The old learned_patterns cooccurrence reranker is removed, and neuralmind learn becomes an exit-0 deprecation no-op. The Hebbian synapse layer — which already learns continuously from your queries, edits, and tool calls, and lets unused edges decay — is now the only thing that adapts retrieval to how you actually use the codebase. One system instead of two means automatic learning instead of a manual step, and decay instead of staleness. This is a removal, not a regression: warm-path recall is synapse-driven exactly as it was in v0.24.

The A/B evidence

A 2×2 on the benchmark fixture measured top-k hit rate with the reranker on vs. off, crossed with synapses on vs. off. The reranker moved the number by 0.0 points in both rows (71.7% → 71.7% cold, 83.3% → 83.3% warm), while the synapse layer alone moved it by +11.6 points. The reranker was also runtime-inert on the warm path — the synapse boost re-sort discarded its ordering anyway — required the manual neuralmind learn step to populate, and went stale between runs. The learning that matters is the synapse layer's, and that is the signal NeuralMind keeps.

What the agent actually sees

Why this matters

Two learning mechanisms that nominally do the same job is two places for behavior to drift, two things to document, and two things to keep honest. The A/B settled which one earns its keep. Automatic beats manual: the reranker only improved with a neuralmind learn step you had to remember to run, while the synapse layer learns as you work. And decay beats staleness: the reranker's JSON captured a snapshot that aged between runs, whereas the synapse layer continuously reinforces what's used and decays what isn't, so recall tracks current usage instead of a stale batch. To see what's been learned, use neuralmind stats or neuralmind memory inspect.

Full v0.25.0 release notes →

What's New in v0.24.0 — memory namespaces & branch isolation

The learned synapse layer is now namespace-aware (PRD 4). Branch experiments, your personal long-term memory, an imported team baseline, and throwaway session scratch live in separate namespaces inside the same store — branch:<name>, personal, shared, ephemeral — so a weekend spike on a feature branch can't pollute what the agent learned about main. Reads stay smart by default: a transparent merged view prioritizes recent branch-local context while retaining long-term priors, with the weighting published as three constants. Existing learned memory migrates in place, losslessly — everything you've taught NeuralMind becomes the personal namespace, and on the default branch behavior is byte-identical to v0.23.

What ships

Why this matters

A learned usage memory is only trustworthy if the wrong lessons can be contained and removed. Namespaces give branch experiments a place to live and die, give a team a clean channel to ship baseline knowledge to a new teammate (shared at 0.5× — informative, never louder than your own experience), and give throwaway exploration a memory that forgets itself. And because the migration is the riskiest part of touching a memory store, it's a single transaction with rollback-on-error and a no-data-loss test — the pattern future schema bumps follow.

Full v0.24.0 release notes → · Branch-isolated memory walkthrough →

What's New in v0.23.0 — versioned IR, quality harness, debug traces, and a local daemon

Four future-proofing foundations land together. PRD 1: NeuralMind now builds a canonical, versioned intermediate representation (IR) of your code graph and validates it on every build — a new neuralmind validate command checks that contract and reports schema problems, decoupling retrieval/memory/UI/MCP from any one graph producer's field names. It's a Phase-1, hidden-adapter rollout: the embedder still reads graph.json exactly as before, so nothing about retrieval changes. PRD 2: a new neuralmind benchmark --quality mode proves retrieval finds the right code — precision@k / recall@k / MRR / answerability over golden suites — and fails CI on a regression. PRD 3: neuralmind query --trace shows why a result came back — per-layer candidates, cluster scoring with vector-vs-synapse attribution, synapse boosts, and final hits. PRD 5: an experimental neuralmind daemon holds project state warm so repeat queries skip cold backend init, with the CLI auto-preferring it and falling back to direct mode.

What ships

Why this matters

Retrieval no longer has to assume one producer's exact JSON shape — the IR is the single contract, and the graphify/tree-sitter reader is just the first adapter behind it. validate turns "why is retrieval weird?" debugging into a one-line schema check, surfacing dangling edges and orphaned nodes before they cost a query. And the quality harness closes the loop the token-reduction benchmark left open: it proves the context NeuralMind selects is relevant, not just cheap, so a ranking or synapse-recall change that quietly drops the right files fails CI instead of shipping. The embedder still consumes graph.json today; future phases dual-write, then make the IR the read path.

Full v0.23.0 release notes →

What's New in v0.22.0 — ChromaDB-free by default (when available)

import neuralmind no longer requires ChromaDB, and the default backend is now auto. v0.21.0 made a complete ChromaDB-free retrieval path (the turbovec backend). v0.22.0 starts switching everyone onto it — safely: the package imports without ChromaDB, and auto prefers turbovec when its deps are installed, else falls back to chroma. Nothing breaks for a plain install, and the old ChromaDB index is never deleted.

What ships

Why this matters

A plain pip install neuralmind (no [turbovec] extra) resolves auto → chroma, so existing installs and CI are unchanged; users who added the extra get the ChromaDB-free path by default, letting it bake before v0.23 makes it universal. The flip is deliberately softturbovec is still an optional extra and chromadb is still a core dependency. This release removes only the import-time requirement and makes turbovec the preferred default; folding the turbovec deps into core and dropping chromadb are the staged next steps (v0.23).

What's New in v0.21.0 — ChromaDB-free retrieval

NeuralMind can now embed and search with zero ChromaDB. v0.20.0 moved vector search to TurboVec (Google Research's TurboQuant compressed index); v0.21.0 moves the last ChromaDB-only job — embedding — into a bundled module, so the opt-in turbovec backend is fully self-contained.

What ships

Why this matters

ChromaDB drags in a large dependency tree and the recurring CVE-2026-45829 advisory surface. This release is the foundation for retiring it entirely — making the package import ChromaDB-free, flipping the default to turbovec with a migration, and dropping the dependency are the staged next steps (v0.22–v0.23).

What's New in v0.20.0 — measure the onboarding lift

The static code graph is commoditizing; the learned synapse layer is the moat. v0.20.0 turns that moat into a number: neuralmind eval --onboarding measures whether an agent that inherits a committed team memory retrieves better on its first queries than a cold agent with none.

What ships

Why this matters — the moat

AST-derived code graphs are table stakes now. NeuralMind's durable edge is usage memory — the synapse layer that learns what your team edits together. This release makes that edge measurable and regression-gated, formalising the self-benchmark's Phase-3 synapse A/B into a committed-baseline eval.

Full v0.20.0 release notes →

What's New in v0.19.0 — one-command MCP setup

Distribution is half the moat. The static code graph is commoditizing; what NeuralMind has that a static graph can't copy is usage memory (the learned synapse layer) plus being the memory an agent actually reaches for. v0.19.0 makes the latter frictionless: one command registers NeuralMind's MCP server with every agent you have installed.

What ships

Why this matters — the moat

AST-derived code graphs are becoming table stakes. NeuralMind's durable edge is usage memory + distribution. The self-benchmark already measures the learned uplift directly (Phase 3 — synapse-recall A/B: top-k hit rate 71.7% → 83.3%, +11.7 points with recall on, at a neutral token budget). v0.19.0 invests in the other half — making NeuralMind trivial to plug into every agent, so it sees more usage and learns more.

Full v0.19.0 release notes →

What's New in v0.18.0 — incremental per-file graph updates

Stay fresh without rebuilding. Picking up a code change used to mean re-running neuralmind build — a whole-repo re-parse. v0.18.0 re-parses just the file you edited and re-embeds only its nodes, leaving everything else byte-for-byte untouched.

What ships

Why this matters

The built-in backend was already file-by-file and the embedder already content-hashed; v0.18.0 closes the loop so the parse is incremental too and it happens automatically as you work. The graph contract is unchanged — retrieval, synapses, the graph view, and MCP tools just see a fresher graph.

Full v0.18.0 release notes →

What's New in v0.17.0 — optional SCIP precision pass

Compiler-accurate edges, where you have them. The built-in backend resolves calls/inherits edges heuristically — by name — which is wrong when two classes both define, say, handle(). If your repo has been indexed by a SCIP tool (scip-python, scip-typescript, scip-go), v0.17.0 can fold that compiler-accurate resolution in.

What ships

Why this matters

Tree-sitter gives breadth (66+ languages, no build); SCIP/LSP give compiler-grade precision per language. v0.17.0 is the proven hybrid: tree-sitter by default, exact edges where a SCIP index exists — both behind the same seam, so the retrieval stack is untouched. No runtime change unless you opt in.

Full v0.17.0 release notes →

What's New in v0.16.0 — multi-language (TypeScript + Go)

The built-in backend is no longer Python-only. v0.16.0 takes the bundled tree-sitter backend multi-language: neuralmind build . now indexes Python, TypeScript, and Go out of the box, with no graphify install — and a mixed-language repo is indexed in one pass.

What ships

Why this matters

The seam — not the parser — is the durable asset. Adding a language is now registering a pair of functions, with the parity gate guaranteeing each new grammar holds up before it ships. The retrieval stack downstream of graph.json is untouched; it simply sees more of the world. No runtime change for existing Python or graphify installs.

Full v0.16.0 release notes →

What's New in v0.15.0 — no graphify needed

The biggest barrier to trying NeuralMind on your own repo is gone. Until now you had to install a second, external tool (graphify) and run it before neuralmind build would do anything. v0.15.0 ships a built-in tree-sitter graph backend, so pip install neuralmind && neuralmind build . just works.

What ships

Why this matters

Removing the external-tool dependency cuts the #1 onboarding drop-off and a single-maintainer bus-factor risk, and unblocks a cleaner fresh-install on more platforms. The static code graph is commoditizing across the industry; making the producer pluggable — and gating every swap on measured retrieval quality — is how NeuralMind keeps the part that's actually unique (the learned synapse layer) honest. No runtime change for existing graphify-based installs.

Full v0.15.0 release notes →

What's New in v0.14.0 — measure faithfulness

The measurement foundation became a command. neuralmind eval turns "does NeuralMind's memory make an agent's answers better, not just shorter?" into a reproducible number — and, like everything here, the default judge is 100% local.

What ships

Why this matters

NeuralMind has always led with a token-reduction number. v0.14.0 adds the harder, more honest one: quality. It's a self-test against the bundled reference fixture today (like neuralmind benchmark), and the fitness function the rest of the roadmap — graph-backend decoupling, team memory — is validated against. No runtime change to your install.

Full v0.14.0 release notes →

What's New in v0.13.0 — measurement foundation

A foundation release: the scaffolding to prove the memory helps, not just claim it. v0.13.0 doesn't change what your install does at runtime — it builds the machinery to measure whether NeuralMind makes an agent's answers better (faithfulness), and to measure retrieval quality beyond Python. Plus a documentation process so the docs stop drifting.

What ships

Why this matters

NeuralMind's headline claims — cheaper, and the memory makes answers better — deserve to be measured, not asserted. v0.13.0 is the first brick: an honest, offline, reproducible way to score answer faithfulness, and fixtures that extend quality coverage past Python. Nothing here is a runtime feature; all of it is the fitness function the rest of the eval-first roadmap builds on. No migration, no new dependencies, no behavior change for existing installs.

Full v0.13.0 release notes →

What's New in v0.12.0 — install doctor

One command tells you exactly what's wired up and what isn't. NeuralMind has accumulated moving parts — a code graph, a semantic index, a synapse memory db, Claude Code hooks, an MCP server, a query-memory consent flag. When one isn't in place, the old symptom was a stack trace or a silent no-op. v0.12.0 makes the setup legible.

What ships

Why this matters

Most NeuralMind support friction is setup friction: a piece isn't installed, and the failure doesn't say which one. doctor turns "it doesn't work" into a checklist with fixes — for the human dropped into a fresh clone, and for the agent that has to verify its own environment before relying on the tool. No new dependencies, no behavior change for working installs.

Full v0.12.0 release notes →

What's New in v0.11.0 — directional synapses

The brain-like layer now learns what comes next, not just what goes together. The Hebbian co-activation signal that's powered NeuralMind since v0.4.0 has always been symmetric: nodes that fire together wire together, no ordering. v0.11.0 adds a parallel directional signal — after touching file A, you typically touch file B with probability p.

What ships

Why this matters

The existing undirected synapse graph answers association: "given this file, what other files belong to the same thought?" Directional transitions split that signal into before (prefetch this file's skeleton when the implementation file is loaded) and after (remind the agent to update this when the implementation changes). Same source data — every activate_files call writes to both the undirected and directional tables — two views.

No migration. The new table is created on first connection. Existing co-activation edges in synapses.db are untouched. Disable by ignoring the new API — the watcher still records transitions in the background, but if nothing reads them, they just sit there decaying like any other edge.

Full v0.11.0 release notes →

What's New in v0.10.0 — agent ergonomics

Three friction-removing changes to the PostToolUse Bash compressor — the surface AI coding agents see on every shell call. Built from real session feedback where the previous footer forced a second query round-trip just to recover dropped middle content.

What ships

Why this matters

The PostToolUse compressor is the most-visible surface NeuralMind exposes — the agent sees it on every Bash call. v0.10.0 converts the common "I need to see the dropped middle" friction from a re-run loop into a single cache lookup, and turns the footer text itself into actionable messaging: concrete benefit visible, concrete affordance, clear escape hatch.

No migration. Same graph.json, same synapses.db, same hooks. The new cache file is additive; disable via NEURALMIND_OUTPUT_CACHE=0.

Full v0.10.0 release notes →

What's New in v0.9.0 — enterprise-ready

Phase 3 of the release arc. Turn the v0.6.0 → v0.7.0 → v0.8.0 foundation into something a CTO, security team, or regulated-industry operator can actually adopt.

What ships

No production code changes — pure CI + docs. No migration. Same graph.json, same synapses.db, same hooks.

Full v0.9.0 release notes →

What's New in v0.8.0 — always-on

neuralmind watch and neuralmind serve are first-class production processes now. The synapse store accumulates 24/7 whether you're at the keyboard or not, and the graph view is always listening on 127.0.0.1:8765.

What ships

The canvas still requires the per-session auth token by default; pass --no-auth in the templates or read the tokenized URL from the service logs.

Full v0.8.0 release notes →

What's New in v0.7.0 — install anywhere

Distribution release, not a features release. The brain is the same brain. What changed is how many ways you can install it.

Five install paths

All five paths deliver the same package: the neuralmind CLI, the neuralmind-mcp server (for Claude Code, Cursor, Cline, Continue, and any MCP client), and the live graph view from v0.6.0. Smoke test is identical: neuralmind --help works everywhere; python -c "import neuralmind" works for pip / uv / source paths.

Also in v0.7.0

No migration. Same graph.json, same synapses.db, same hooks. Upgrade is whatever your install path's --upgrade equivalent is.

Full v0.7.0 release notes → · Install paths walkthrough →

What's New in v0.6.0 — see the brain learning, live

The pitch flipped. v0.5.4 made the brain inspectable. v0.6.0 makes it legible. neuralmind serve now streams a live activity feed: synapse + file events pulse across the canvas in real time as the agent and the codebase interact. The graph stops being a static map and becomes a window into the hippocampus learning your codebase.

"You can sit there, in real time, and watch the hippocampus learn your codebase. That's the moment when 'code RAG' turns into 'associative memory for your codebase.'"

Headline changes

The shared-brain unlock

The cross-process JSONL bridge means that if you run Claude Code, Cursor, OpenClaw, and Hermes-Agent against the same project — they reinforce the same synapse store, and the v0.6.0 graph view shows the union of their activity. Pre-v0.6.0, the synapse store was shared but the experience wasn't — three tools talking to a black box. Now the brain is visibly one brain. See the multi-agent walkthrough.

No migration: same graph.json, same synapses.db, same hooks. Upgrade is pip install --upgrade neuralmind. Then neuralmind serve and save a file — that's the demo and the verification in one motion.

Full v0.6.0 release notes →

Mission

NeuralMind exists to solve a fundamental problem: AI agents waste tokens loading raw source code when they only need small, semantic context.

"Why load 50,000 tokens of raw source to answer 'How does authentication work?' when you could use 800 tokens of smart, indexed context?"

Our mission is to make semantic code intelligence accessible, affordable, and trustworthy—without data exfiltration, vendor lock-in, or compliance headaches.

The Problem We Solve

For Individual Developers

For Teams & Enterprises

How We Solve It

Four-Phase Architecture

Phase 1 — Smart Retrieval: Instead of loading entire files, NeuralMind uses a 4-layer semantic index to surface only the ~800 tokens of code your question actually needs.

Phase 2 — Output Compression: PostToolUse hooks compress Read, Bash, and Grep output 88–91% smaller before agents see it.

Phase 3 — Brain-like Memory (v0.4.0): A second brain runs alongside the LLM — a persistent weighted graph that learns associations between code nodes from how the agent and the codebase actually interact. Stronger connections form between code that gets used together, weaker ones decay, and the agent's prompts trigger spreading-activation recall over the learned graph.

Phase 4 — Graph View (v0.5.4, made live in v0.6.0): neuralmind serve renders the whole system as an Obsidian-style force-directed graph in the browser. Structural edges, the learned synapse overlay, backlinks, a semantic quick-switcher, and one-click open-in-editor. v0.6.0 adds a live activity feed — synapse and file events pulse on the canvas in real time, with a cross-process JSONL bridge that lets Claude Code, Cursor, OpenClaw, and Hermes-Agent all feed the same canvas. The brain stops being a black box — you can finally watch what it's learning, live.

Result: 40–70× per-query token reduction (50K+ tokens of raw source compressed into ~800 tokens of structured context) and 40–70% bill drops on real codebases. Retrieval that gets sharper the longer the system runs on a codebase.

Enterprise Ready

Technical Innovation

4-Layer Progressive Disclosure

NeuralMind doesn't load code randomly. It uses a 4-layer index that progressively surfaces context:

The agent gets exactly what it needs, in order, without bloat.

Learnable Patterns

NeuralMind learns from how you actually use the codebase. Over time, the brain-like synapse layer (described below) improves retrieval quality based on which code you query, edit, and run tools over together — automatically and continuously, with no external training and no manual step.

Brain-like Synapse Layer (v0.4.0)

The newest layer is an associative memory inspired by how brains actually learn. NeuralMind tracks weighted "synapses" between code nodes, and applies three classic neuroscience principles:

The synapse store is local SQLite, project-scoped, and inspectable. It exports a markdown summary that Claude Code's auto-memory system loads natively, so the learned associations show up in every session — no MCP tool call required.

Graph View — neuralmind serve (v0.5.4, made live in v0.6.0)

The agent-facing brain is now also a human-facing tool. A stdlib HTTP server renders a force-directed graph of the entire codebase in the browser — structural edges (calls and imports) drawn together with the learned synapse overlay, where edge thickness encodes weight. Each node has Obsidian-style backlinks and outgoing-links panels, a "synaptic neighbours" list with weights and activation counts, and a one-click "open in editor" button (smart support for VS Code, Cursor, vim, sublime, JetBrains). A semantic quick-switcher lets you type a phrase and jump straight to the matching node. Zero CDN dependencies; per-session access token bound to 127.0.0.1.

v0.6.0 adds a live activity feed. The server now exposes a long-lived /api/events SSE stream subscribed to an in-process event bus. Every SynapseStore.reinforce() call and every coalesced file-edit batch publishes an event; affected nodes pulse on the canvas with short animated radial rings, and a sidebar log shows the most recent ~80 events. A cross-process JSONL bridge (<project>/.neuralmind/events.jsonl) lets a separate neuralmind watch daemon, a Claude Code session, an OpenClaw call, or any other process feed the same canvas. One canvas, every agent. Opt out with NEURALMIND_EVENT_LOG=0.

Why it matters: pre-v0.6.0 the graph view was inspectable but static — you had to refresh to see new state. With the live feed, you can sit there in real time and watch the hippocampus learn your codebase. "The agent has a learning memory" stops being a claim and becomes a visual.

Compliance-First Design

Every query is logged with full provenance: which code was retrieved, why, which embeddings were used, code state (git commit). Export for NIST AI RMF, SOC 2, GDPR, HIPAA.

Open Source & Community

NeuralMind is MIT licensed and fully open source. No hidden business model, no vendor lock-in, no surprise rate limits.

View on GitHub →

Get Involved

Status & Roadmap

Current Release: v0.19.0 — One-command MCP setup

The latest release leans into the distribution moat: neuralmind install-mcp --all auto-detects your installed agents (Claude Code, Cursor, Cline, Claude Desktop) and registers NeuralMind's MCP server with each — a non-destructive, idempotent merge. The learned synapse layer's uplift is already measured by the self-benchmark's Phase-3 A/B (top-k hit rate 71.7% → 83.3% with recall on). See the v0.19.0 release notes or the summary above.

Future Releases

See the next-release plan → · Roadmap →

Why NeuralMind?

Not Affiliated with NeuralMind.ai

This is an independent, open-source project. No relationship to NeuralMind.ai (a different company). We chose the name because it reflects our philosophy: a "neural" index that learns your codebase.

Compared to Alternatives

See detailed comparisons →

Core Values

Privacy First

Your code stays local. Zero cloud calls, zero telemetry, zero data exfiltration.

Transparency

Open source, MIT licensed. Every decision is auditable, every result is explainable.

Compliance Ready

Built for regulated industries. NIST AI RMF, SOC 2, GDPR, HIPAA friendly.

Interoperable

Works with your tools. Claude Code, Cursor, ChatGPT, local LLMs—not locked in.

Efficient

Smart context reduces per-query tokens 40–70×. Lower costs, better answers.

Community Driven

Built in public. Issues, discussions, and contributions welcome.

Getting Started

Ready to reduce your per-query token costs by 40–70×?