Jarvis

io.github.phuongddx由 GitHub 帳號 phuongddx 發布v0.10.0更新於 Nov 3, 2026

Local-first SCIP code navigation and Zoekt search over your own indexed repositories

已驗證STDIO僅桌面知識與記憶開發者工具

概覽

AI 產生的概覽

本地優先的程式碼智慧伺服器,讓助手在你自行建立索引的儲存庫中進行精確的符號導覽與詞法搜尋。

可以做什麼
  • 符號導覽:解析定義位置、找出符號的所有參照、追蹤呼叫階層與型別階層。
  • 檔案大綱:列出單一檔案中定義的所有符號。
  • 程式碼搜尋:詞法或正規表示式搜尋,可限定於單一儲存庫。
  • 影響範圍分析:查看其他已建立索引的儲存庫對某個套件的相依關係,最多兩層。
  • 索引管理:查看索引狀態與新舊程度,並為指定路徑的儲存庫建立索引。
適用情境
適合程式碼助手在 grep 式搜尋上耗費大量上下文,而需要關於符號定義、使用與呼叫位置的精確檔案與範圍答案時使用。面向在本機一個或多個 git 儲存庫上工作、希望檢索完全留在本機的開發者。
執行需求
以本機 stdio 程序由用戶端啟動。README 的快速開始使用獨立的 Homebrew 二進位檔(僅支援 macOS arm64/x86_64 與 Linux arm64/x86_64,不支援 Windows),其中已內嵌 Python 與 Zoekt/SCIP 工具。查詢前必須先用命令列明確建立索引。選用的分語言索引器依語言需要 Node.js/npm、JDK 或 Xcode。可用 JARVIS_DATA_DIR 覆寫預設資料目錄。
安裝前請注意
設計上為唯讀:README 說明它從不修改程式碼,查詢以唯讀方式開啟索引;但 indexRepo 工具與命令列索引會將索引資料寫入資料目錄。語意搜尋雖已註冊,但在獨立發行版中無法使用。索引需明確執行,若未重新索引或開啟監看,結果可能相對於工作區已過期。依 README 說明,程式碼與索引不會離開本機。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Jarvis,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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.

Without jarvisGrep → comments, tests, imports mixed with real hits → opens files to filter → guesses at call sites → burns context on search instead of reasoning
With jarvisfindReferences("AuthService") → exact file-and-range occurrences → callHierarchy for the graph → searchCode("token refresh") → answers without opening every match

[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:

bash
brew install jarvis-intelligence/jarvis/jarvis

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):

bash
jarvis index /path/to/your/repo

3. Register the MCP server:

bash
claude mcp add jarvis --scope user -- jarvis-server

Ask your agent "find all references to AuthService" — it calls findReferences instead of grepping.

Other MCP clients (Cursor, Claude Desktop, any stdio client)
json
{  "mcpServers": {    "jarvis": {      "command": "jarvis-server"    }  }}

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.

/plugin marketplace add jarvis-intelligence/jarvis-index/plugin install jarvis@jarvis
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:

LanguageInstallerToolchain
TypeScript/TSXsh setup.sh --only scip-typescriptNode.js/npm
Pythonsh setup.sh --only scip-pythonNode.js/npm
Java/Kotlinsh setup.sh --only scip-javaJDK; Kotlin repos require Kotlin 2.2.0 exactly
Swiftsh setup.sh --only scip-swiftXcode on macOS arm64

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:

bash
uv run jarvis install-semantic

Then index explicitly:

bash
uv run jarvis index /path/to/repo --semantic

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

ToolWhat it does
goToDefinitionResolve a symbol to its defining file and range
findReferencesEvery occurrence of a symbol across the indexed repo
callHierarchyIncoming/outgoing calls for a symbol
typeHierarchySupertypes/subtypes
documentSymbolsOutline of every symbol defined in one file
searchCodeZoekt lexical/regex search, optionally filtered to one repo
semanticSearchReturns the Homebrew distribution's semantic-unavailability error
blastRadiusWhich other indexed repos depend on a package, up to 2 hops
getIndexStatusPublished commit, freshness, staleness vs. working tree
indexRepoBuild an index for a git repo at path

Dashboard

bash
jarvis dashboard          # serves http://127.0.0.1:6080 and opens a browser

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 (or jarvis 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.

[jarvis architecture]

  • Publishing is atomic — a reindex writes a new snapshot, then flips the current pointer via os.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
bash
jarvis index /path/to/your/repo            # slug defaults to the directory namejarvis index /path/to/your/repo --slug foo # or pick one explicitlyjarvis index /path/to/your/repo --scheme MyScheme # Swift repo with an ambiguous Xcode schemejarvis index /path/to/your/repo --language python # force the language instead of detecting itjarvis index /path/to/your/repo --no-scip   # skip optional SCIP enrichment; syntax baseline + Zoekt still publishjarvis index /path/to/your/repo --scip      # re-enable SCIP enrichment (both flags persist per repo)jarvis listjarvis status foojarvis reindex foojarvis forget foojarvis watch /path/to/your/repo [--debounce 5.0]  # debounced auto-reindex on file changes (foreground)
Known upstream limitations
  • scip-java can'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-kotlinc is compiled against one pinned release (currently 2.2.0). Detected automatically.
  • Maven-built Java repos need bash ≥ 4.4 on macOS — brew install bash fixes it.
  • Swift indexing requires scip >= v0.9.0 — older converters silently drop occurrence ranges. jarvis index refuses an older scip rather than publishing a broken index.
Configuration
VariablePurpose
JARVIS_DATA_DIROverride default ~/.jarvis for all indexes and registry

The source-development semantic path has additional model-prefix overrides; they have no effect in the standalone distribution.

Documentation

License

MIT

來源:README.md,提交 4cf9176

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.10.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分