jarvis-setup
Prerequisites, setup.sh, MCP registration, and your first index. Fires when you are setting up a machine or indexing a repository for the first time.
Everything your agents need to know, remember, and do.
JARVIS is an intelligent layer that gives agents access to their code, knowledge, context, memory, tools, and runtime — starting locally on your machine, with the ability to extend into the cloud.
Codebase intelligence ships today: indexing and search across your own repositories, available in Claude Code, Codex CLI, and Cursor.
Pipeline
One command turns a repository into a local index. Your agent queries that index directly — same machine, same disk, no round trip.
No step in this pipeline contacts a network service.
Using jarvis
The plugin ships three skills. Your client loads the right one on demand — you never call an MCP tool by hand.
Prerequisites, setup.sh, MCP registration, and your first index. Fires when you are setting up a machine or indexing a repository for the first time.
The matrix below, plus one rule it applies before every call: check the index, reindex it if stale, and fall back to grep if the repository was never indexed.
Collects the error payload, version, and OS, checks them against the known limitations, and drafts the report — then asks you before filing anything public.
| What you ask | What jarvis-use runs |
|---|---|
Where is X defined? | goToDefinition(repo, X) |
Who calls X? | findReferences(repo, X) |
What calls X, and what does X call? | callHierarchy(repo, X) |
What are X's supertypes and subtypes? | typeHierarchy(repo, X) |
| What lives in this file? | documentSymbols(repo, path) |
| Is this repository indexed, and is it current? | getIndexStatus(repo, repo_path) |
| What else breaks if I change this package? | blastRadius(repo, pkg) |
| Find this exact string. | searchCode(query, repo?) |
| Find this idea, however it is worded. | semanticSearch(repo, query) |
you Who calls search_zoekt?
→ getIndexStatus(repo="jarvis", repo_path="~/src/jarvis")
← indexed · fresh at HEAD
→ findReferences(repo="jarvis", symbol="search_zoekt")
← 3 references
src/search/zoekt.py:212
src/router.py:88
tests/test_search.py:41
A bare symbol name is enough. When one is ambiguous, jarvis returns a list of candidates rather than guessing — you retry with the one you meant.
One caveat worth knowing up front. semanticSearch needs the [semantic] extra, and the plugin's default MCP registration deliberately omits it so cold start stays free of lancedb and torch. Using it means registering a second, differently-named server — jarvis-semantic.
Agent skills
One plugin carries all three. Add the marketplace, install it, then run setup.sh once — it skips whatever is already present.
Two commands in the client. The marketplace and the plugin share a name.
Same two steps from your shell, pinned to the main ref.
Cursor exposes no CLI for adding a marketplace. On Teams or Enterprise: Dashboard → Plugins → Add Marketplace → Import from Repo. On any plan, symlink the plugin directory instead.
setup.sh, then index a repo.
Local-first
These are checkable rather than promised. Every row names the thing you can go read.
| Claim | Enforcement |
|---|---|
| No telemetry, no analytics | No analytics code, and no outbound calls during queries. |
| The only network egress at runtime is the wheel fetch | uvx on first server start, plus a one-time embedding-model download if you install the [semantic] extra. |
| Indexes are read-only | Opened mode=ro&immutable=1. |
| Dependencies are pinned and verified | Exact commit or tag pins, each with a written justification; every tarball SHA256-verified before install. |
Roadmap
Three things an agent needs, and the axis jarvis is built along. Only the first has started shipping, and nothing here carries a date.
What an agent can look up. Your codebase is indexed and searchable today. Next is everything written around it — docs, wikis, and the decisions that never made it into a file.
What survives the end of a session. The context an agent built up, what it already tried, and what it should not try again — kept, rather than thrown away with the window.
Tools and a runtime, so an agent can act on what it knows and remembers instead of handing you a summary and waiting.
It starts on your machine and stays useful there. The cloud is an extension for when you want one — a shared index, a team's memory — and never a requirement for any of the above.
Built in the open
Read the plugin documentation before you install, or open an issue if something on your machine disagrees with this page.