Index status
Check whether a repo is indexed, how fresh it is, and which capabilities are available.
9 tools for navigating and searching your code — computed locally from your own repositories.
JARVIS gives your coding agent go-to-definition, find-references, call and type hierarchy, and semantic search across your own code. Everything runs on your machine — nothing is uploaded.
See it in action
Three real scenarios — pick a question, see the MCP call and the recorded result.
{
"repo": "toy-repo"
} {
"repo": "toy-repo",
"indexed": true,
"status": "indexed",
"commit": "abc1234",
"generated_at": "2026-07-08T12:00:00+00:00",
"stale": false,
"freshness": "fresh",
"checked_at": "2026-07-08T12:00:05+00:00",
"searchCoverage": {
"expected": 120,
"indexed": 120,
"complete": true
},
"last_index_run": {
"outcome": "indexed",
"origin": "signature",
"reason": null,
"recovery": null
},
"capabilities": {
"navigation": {
"available": true,
"reason": null,
"recovery": null
},
"search": {
"available": true,
"reason": null
},
"semantic": {
"available": false,
"reason": "semantic index not built for this repo (requires the `semantic` extra)"
}
}
} Tools
7 core tools work out of the box. Two advanced tools require extra setup.
Check whether a repo is indexed, how fresh it is, and which capabilities are available.
Jump to where a symbol is defined — resolved via SCIP's precise AST.
List every occurrence of a symbol across the codebase, definition included.
Walk callers and callees of a function — single-level, bidirectional.
List every top-level symbol defined in a file with its range.
Lexical search via an embedded Zoekt index — fast, precise, always available.
2-hop bounded BFS over the package dependency graph to scope change impact.
Natural-language code search powered by embeddings.
requires[semantic] extra + reindex Single-level super/subtypes for a symbol within a repo.
requires fork-built scip + reindexLanguages
TypeScript, Python, Java/Kotlin, and Swift. Everything else gets search only.
| Language | Navigation | Caveat |
|---|---|---|
| TypeScript / TSX | ✅ Yes | — |
| Python | ✅ Yes | — |
| Java / Kotlin | ✅ Yes | Android/Gradle, Kotlin version, Maven on macOS |
| Swift | ✅ Yes | Version floor + code-signed targets |
| Go | — | — |
| Ruby | — | — |
| Rust | — | — |
| C | — | — |
| C++ | — | — |
| C# | — | — |
| PHP | — | — |
| Scala | — | — |
| shell | — | — |
| SQL | — | — |
Privacy
All computation is local. No telemetry, no network, no cloud.
Zero telemetry. jarvis phones home to exactly zero endpoints. No usage data, no error reports, no analytics. The server process connects to nothing outside your filesystem.
Zero cloud. Every index, every search, every hierarchy walk is computed on your machine from your own git-tracked source. There is no jarvis API, no jarvis account, and no jarvis server that sees your code.
Zero network at runtime. After the one-time install, jarvis needs no network. The MCP server listens on a local stdio pipe. Your code never leaves your machine.
Architecture
The runtime half reads storage to answer your queries. The indexing half writes storage when you build or update an index. The seam between them is the only shared state — and it flips atomically.
The storage seam (L4) is the only shared state. The runtime half reads it; the indexing half writes it atomically.
Any step that raises leaves the previous index live — the pointer is never touched until the new version is fully ready.