
Jarvis
io.github.jarvis-intelligencePublished by GitHub account jarvis-intelligencev0.8.0Updated Oct 11, 2026
Local-first SCIP code navigation and Zoekt search over your own indexed repositories
Overview
Local-first code intelligence server that gives an assistant precise symbol navigation and lexical search over repositories you have indexed on your machine.
- What you can do
- Resolve symbols to their defining file and range, and list every reference to a symbol across an indexed repo, including call and type hierarchies and per-file symbol outlines. Run lexical or regex code search, optionally limited to one repository. Check which other indexed repos depend on a package, up to two hops. Report index status such as published commit, freshness and staleness against the working tree. Build an index for a git repository at a given path.
- When to use it
- Useful when a coding agent keeps burning context on grep and file re-reads to find where a symbol is defined or used. Suited to developers working on one or more local git repositories who want exact reference and call-path answers instead of noisy text matches.
- Requirements
- Runs as a local stdio process on macOS arm64/x86_64 or Linux arm64/x86_64; Windows is not supported. Install the standalone Homebrew binary, which embeds its runtime and search tools, then index each repository with the CLI before querying. Optional per-language indexers need their own toolchains (Node.js/npm, JDK, Xcode). Indexes live in ~/.jarvis unless JARVIS_DATA_DIR overrides it.
Installation
In SourceWeft
- Open Jarvis in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
jarvis
[CI] [Platforms] [License: MIT] [MCP]
Your coding agent should not spend its context window on grep.
When your agent asks "where is AuthService used?", grep returns comments,
markdown, test fixtures, and similarly named symbols in one noisy pile. The
agent burns context re-reading files to filter signal from noise — and still
misses call sites.
jarvis precomputes a local code-intelligence layer so your agent calls
findReferences for exact occurrences, goToDefinition for the defining
range, callHierarchy for call paths, and searchCode for precise lexical
search — ten MCP tools for Claude Code, Cursor, or any MCP client.
Your code and indexes never leave your machine.
[grep returns noisy results vs jarvis findReferences returning 10 exact file:line:col occurrences]
Quick start · MCP tools · Dashboard · Limits · Details · Docs
Quick start
1. Install the standalone binary:
Linux users need Homebrew/Linuxbrew
installed first. The formula supports macOS arm64/x86_64 and Linux
arm64/x86_64, installs both jarvis and jarvis-server, and embeds Python
3.12, dashboard assets, tree-sitter libraries, watch, scip,
zoekt-git-index, and zoekt-webserver. Homebrew supplies
universal-ctags. No Python, uv, pip, or PyPI installation is required.
Upgrade with brew upgrade jarvis; recover a damaged installation with
brew reinstall jarvis.
2. Index a repo (slug defaults to the directory name):
3. Register the MCP server:
Ask your agent "find all references to AuthService" — it calls
findReferences instead of grepping.
Other MCP clients (Cursor, Claude Desktop, any stdio client)
If your client can't find jarvis-server on PATH (GUI apps often don't
inherit your shell's), use the absolute path from which jarvis-server.
Claude Code plugin (registers MCP + ships agent skills)
Install the Homebrew binary first. The plugin adds jarvis skills and can
register the already-installed jarvis-server.
Optional language indexers
The standalone package includes the SCIP converter and both Zoekt binaries.
The Homebrew formula does not install setup.sh; from a jarvis source
checkout, install the optional per-language indexer for your repo:
For Maven-built Java repositories on macOS, also install a modern Bash with
brew install bash, then run sh setup.sh --only bash-shim from that same
source checkout. Reindex after adding an indexer. Without the matching
indexer, documentSymbols and goToDefinition still work via Tree-sitter
where coverage exists;
findReferences, callHierarchy, and typeHierarchy return recovery
guidance.
Not included
semanticSearch is registered for MCP compatibility but is excluded from the
standalone distribution. It returns a Homebrew-specific unavailability error
that points to the source-build steps below; lexical search and symbol search
remain available.
Source-build semantic search
The standalone Homebrew package excludes semantic dependencies. In a source checkout, install them with:
Then index explicitly:
install-semantic also pre-downloads the embedding model (BAAI/bge-m3,
~4.3 GB, one time) into the shared Hugging Face cache
(~/.cache/huggingface/); every indexed repo reuses it. If the download is
interrupted, the next jarvis index retries it automatically.
MCP tools
Dashboard
A localhost web console over the same ~/.jarvis data the CLI and MCP server read:
[Repositories view] [Tool playground]
Requirements and limits
- macOS arm64/x86_64 and Linux arm64/x86_64 only. Windows is not supported.
- Semantic search is unavailable in the Homebrew distribution.
- One language per repo — detected by extension plurality across git-tracked files; override with
--language. - jarvis never edits code. It is the retrieval half — Serena complements it for renames/refactors.
- Indexing is explicit — run
jarvis index(orjarvis watch) before querying.
Details
How it works
One indexing CLI writes precomputed indexes into ~/.jarvis; one stdio
runtime reads them down. The two share no other contract.
- Publishing is atomic — a reindex writes a new snapshot, then flips the
currentpointer viaos.replace. A query reading the old snapshot keeps working; no downtime window. - The runtime path never writes — every query opens the published snapshot read-only (
mode=ro&immutable=1). - The package graph is rebuilt, not accumulated — each reindex clears that repo's outgoing edges before recomputing.
Full detail: docs/system-architecture.md
Indexing CLI reference
Known upstream limitations
scip-javacan't index Android/Gradle repos — its Gradle plugin keys off standard source sets that AGP replaces (scip-java#177). Detected automatically; degrades to search-only.- Kotlin indexing requires an exact Kotlin version match —
scip-kotlincis compiled against one pinned release (currently2.2.0). Detected automatically. - Maven-built Java repos need bash ≥ 4.4 on macOS —
brew install bashfixes it. - Swift indexing requires
scip >= v0.9.0— older converters silently drop occurrence ranges.jarvis indexrefuses an oldersciprather than publishing a broken index.
Configuration
The source-development semantic path has additional model-prefix overrides; they have no effect in the standalone distribution.
Documentation
docs/project-overview-pdr.md— scope, value prop, out-of-scope itemsdocs/system-architecture.md— architectural guarantees, storage layout, query pathsdocs/codebase-summary.md— module map, test coveragedocs/code-standards.md— code patterns and conventionsdocs/dashboard.md— dashboard views, actions, security model
License
Source: README.md at commit 4cf9176
Tools
0Version history
1- v0.8.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts