Install guide
jarvis is distributed as the jarvis-mcp Python package on PyPI, plus external binaries
installed by setup.sh. This page covers every install method and what each component provides.
Prerequisites
Section titled “Prerequisites”- OS: macOS or Linux. jarvis does not support Windows.
uv: install from https://docs.astral.sh/uv/- PATH: after
setup.sh,~/.jarvis/binmust be onPATH.
Before installing, check your language is supported.
Install the CLI + MCP server
Section titled “Install the CLI + MCP server”uv tool (recommended):
uv tool install --python 3.13 jarvis-mcpPuts jarvis and jarvis-server on PATH via uv’s tool shims (uv tool dir’s bin/). This is
also the fix for the uvx cold-start timeout —
the wheel builds and caches once, so later uvx calls start in seconds.
uvx (ad-hoc, no install):
uvx --from jarvis-mcp jarvis-serverNothing is added to PATH — uvx runs the server ephemerally each time, rebuilding from a cold
uv cache the first time it’s invoked.
pip:
pip install jarvis-mcpPuts jarvis and jarvis-server in the active Python environment’s bin/Scripts directory —
only on PATH if that environment (a venv, or pip install --user’s target) is.
Two entry points are installed:
| Command | Purpose |
|---|---|
jarvis | The indexer CLI (index, list, status, reindex, forget, watch) |
jarvis-server | The MCP stdio server your client connects to |
Optional extras
Section titled “Optional extras”| Extra | Install | What it enables |
|---|---|---|
semantic | uv tool install --python 3.13 "jarvis-mcp[semantic]" | semanticSearch (BAAI/bge-m3 embeddings, LanceDB, reciprocal rank fusion) |
watch | uv tool install --python 3.13 "jarvis-mcp[watch]" | jarvis watch (debounced auto-reindex via watchdog) |
Both can be combined: uv tool install --python 3.13 "jarvis-mcp[semantic,watch]".
External binaries (setup.sh)
Section titled “External binaries (setup.sh)”curl -fsSL https://raw.githubusercontent.com/jarvis-intelligence/jarvis-index/main/setup.sh | shsetup.sh installs into ~/.jarvis/bin:
| Binary | What it does |
|---|---|
scip | Fork build (upstream v0.9.0 + scip#465 fix) — converts .scip to SQLite via scip expt-convert |
zoekt-git-index / zoekt-webserver | Lexical search (cross-compiled, pinned via ZOEKT_COMMIT) |
scip-typescript | TypeScript/JavaScript indexer |
scip-python | Python indexer |
scip-swift (macOS arm64 only) | Swift indexer (v0.1.2) |
scip-java | Java/Kotlin indexer (needs java on PATH) |
setup.sh is idempotent. Options: --only <name> (one dependency), --force (reinstall),
--help.
Data directory
Section titled “Data directory”jarvis stores everything under ~/.jarvis/:
~/.jarvis/├── bin/ # external binaries (from setup.sh)├── scip/_/<slug>/_/│ ├── index-<sha>.db # SQLite SCIP index (read-only at runtime)│ └── current # pointer file (contains the live <sha>)├── .zoekt/│ └── <slug>_v16.*.zoekt # Zoekt search shards├── lancedb/ # optional, semantic extra only│ └── <slug>_v*.lance # per-repo vector tables└── registry.db # repos table + dependency-graph edgesSee Concepts: Architecture for the full data layout.