Navegador v1.6.0: Targeting, and a Graph That Matches the Code

Navegador v1.6.0: Targeting, and a Graph That Matches the Code

Navegador v1.6.0 is live.

The last time we wrote about Navegador it was v1.1.0, back in April. Five releases have landed since then, and two of them changed what the tool is for.

pip install -U navegador

What Changed in This Release

Ingest no longer indexes files that git ignores. The file walk used to prune against a hardcoded list of directory names and never read .gitignore at all. On one real graph that meant 54,543 of 54,552 indexed files were gitignored build output, so 99.98% of a 98 MiB index was generated code being handed to agents as though it were source. Git is now the oracle for that decision, which makes nested ignore files, negation patterns and core.excludesFile all correct without any further work on our side.

Three new commands answer the question of where to look. navegador locate returns ranked places along with the reason each one surfaced. navegador scope returns the files reachable from a symbol through calls, references and imports. navegador grep runs exact substring and regex search across indexed content. All three are exposed to agents over MCP alongside neighbourhood, bringing the server to 31 tools.

A shared server can now be kept honest. navegador storage audit classifies every graph as healthy, stale, empty, duplicate or junk, and reports why it reached that verdict. storage prune removes what is safe to remove. storage reindex rebuilds graphs holding content that a current ingest would exclude, which is what makes the gitignore fix apply to graphs created before it existed.

Semantic search moved inside the database. It used to fetch every embedded node with its full vector and compute cosine similarity in Python, costing roughly a gigabyte of transfer per query on a large graph, growing with the graph, and paid again by every agent sharing the server. It now runs against a native vector index, at 1.18 ms for 500 nodes and 1.37 ms for 5,000, so ten times the graph costs very nearly the same latency.

Federation, monorepo support and a long run of edge corrections arrived across v1.2 through v1.5. That work included a super-graph aggregator, ingest walks that stop descending into node_modules before filtering it out, exports that no longer truncate silently at 10,000 rows, and eight fidelity fixes where a query had been returning a confident answer that was wrong.

Why This Release Exists

Agents do not fail loudly. They fail by receiving a plausible answer and acting on it.

Nearly everything fixed here had that shape. Export and import dropped every edge and reported success. Incremental ingest never removed deleted files, so impact queries cited functions that no longer existed. Registration and ingest disagreed about repository identity, which left half a workspace’s files hanging off a node with no edges, and impact analysis consequently reported no callers at all. None of it raised an exception and none of it printed a warning.

That is also why locate and scope return places and reasons rather than answers. Being handed six files and told why each one surfaced is more useful than being handed a paragraph you have to take on trust, and it leaves the agent in a position to check the work.

What This Means In Practice

If you ingested a repository before this release, run navegador storage reindex. It reports which graphs are carrying build output and rebuilds them on request.

If you run agents against a codebase, the useful new move is scope. On Navegador’s own repository it reduces 264 files to the 2 reachable from a given symbol, which is a search space reduction no text index can compute, because it requires following the call graph rather than matching characters.

grep costs 0.1 ms on a miss where a full scan costs 13 ms, because its cost tracks the number of matches rather than the size of the codebase.

Nothing in this release is breaking.

Get It