Skip to main content
V.I.S.O.R. logo

V.I.S.O.R.

Local-first context retrieval for Codex, Claude Code, and terminal coding agents.

CI PyPI Open VSX License: MIT Python

V.I.S.O.R. is a local-first context engine for Codex, Claude Code, and other coding agents. It builds an AST-backed repository index and dependency graph, then returns focused code context with the files, symbols, and reasons behind each selection.

It works from the terminal, through the Agent Skill, or over MCP. Lexical retrieval is the default and runs offline. Semantic retrieval is optional. A VS Code / Open VSX HUD is optional and is not required for the CLI or MCP server.

Terminal demo

From a checkout of this repository:

uv run visor doctor
uv run visor index
uv run visor context "resolve local workspace project root"

Terminal demo: doctor, index, and context on this repository

Recorded from demo/terminal_demo.tape. The same take is also at docs/assets/terminal-demo.mp4.

Quick Start

Prerequisite: uv. uvx installs visor-mcp into a temporary environment.

# Check local/headless compatibility
uvx --from visor-mcp visor doctor

# Index the current repository
uvx --from visor-mcp visor index

# Retrieve focused context
uvx --from visor-mcp visor context \
  "where is workspace detection handled?"

visor init prints an MCP configuration entry for review. It does not edit IDE files.

Register the stdio server with Codex or Claude Code:

codex mcp add visor -- uvx visor-mcp
claude mcp add visor -- uvx visor-mcp
Manual Cursor, VS Code, and Claude Desktop configuration

Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "visor": {
      "command": "uvx",
      "args": ["visor-mcp"]
    }
  }
}

VS Code (.vscode/mcp.json). The same file is the setup documented here for Antigravity:

{
  "servers": {
    "visor": {
      "command": "uvx",
      "args": ["visor-mcp"]
    }
  }
}

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "visor": {
      "command": "uvx",
      "args": ["visor-mcp"]
    }
  }
}

Agent Skill

The Skill tells an agent to request V.I.S.O.R. context, treat the files, symbols, and reasons as leads, and verify those leads in the repository. Installing it does not guarantee that every client will select it automatically.

Supported integrations

Client How it connects
Codex CLI codex mcp add visor -- uvx visor-mcp
Claude Code claude mcp add visor -- uvx visor-mcp
Cursor ~/.cursor/mcp.json
Claude Desktop claude_desktop_config.json
VS Code .vscode/mcp.json, plus the optional HUD
Antigravity The VS Code MCP file above, plus the optional HUD
Terminal visor doctor, visor index, visor context

Any other MCP client can launch the same stdio command: uvx visor-mcp.

Measured pilot results

Two published pilots are in this repository. Neither is a universal token-reduction claim. Both depend on the task, agent, model, cache behavior, and context. Provider token fields are not comparable across Codex and Claude Code. V.I.S.O.R. context was supplied as leads and had to be checked against the repository.

Patch correctness, 31 October 2026

Three seeded fixes, three repeats, Codex and Claude Code, native and V.I.S.O.R., 36 paired cells. Every cell had its own detached worktree. A check command scored the patch after the agent. Deltas are V.I.S.O.R. minus native. Full figures: benchmarks/results/v1.2.1-patch-pilot-summary.json.

Agent Condition Patches passed Median input-token delta Median output-token delta Median runtime delta
Codex Native 9/9 baseline baseline baseline
Codex V.I.S.O.R. 9/9 −6,352 (95% CI −55,316 to 36,583) +78 (95% CI −324 to 192) −0.2 s (95% CI −10.2 s to 6.6 s)
Claude Code Native 9/9 baseline baseline baseline
Claude Code V.I.S.O.R. 9/9 −2 (95% CI −2 to 0) +50 (95% CI −219 to 303) +0.4 s (95% CI −2.0 s to 1.3 s)

All 36 patches passed. The token and runtime intervals are wide and, except for Claude's two-token uncached input difference, include both directions. Claude's input_tokens value is the uncached remainder; cache-read tokens are a separate field and that paired interval also crosses zero. Codex does not report monetary cost. This does not show that V.I.S.O.R. saves a fixed share of tokens.

Diagnostic navigation, v1.2.0

The v1.2.0 diagnostic pilot compared native repository navigation with the same tasks plus V.I.S.O.R. context. Figures are from benchmarks/results/v1.2.0-diagnostic-pilot-summary.json. Paired intervals were recomputed from the preserved scored records.

Fact Value
Successful records 144
Failed records 0
Tasks 12 diagnostic navigation tasks
Repeats 3
Native/V.I.S.O.R. pairs per agent 36
Codex median paired duration delta −4.17 s (95% CI −8.22 s to −2.21 s)
Claude Code median paired duration delta −3.63 s (95% CI −6.68 s to −0.91 s)
Median evidence recall 100% in both native and V.I.S.O.R. conditions

Limitations:

  • The navigation pilot does not measure patch correctness, refactoring quality, or task success.
  • The patch pilot is three small fixtures, not a general coding benchmark.
  • Timing and token counts are machine-, model-, provider-, plan-, and cache-dependent.
  • Evidence recall is a heuristic, not human correctness review.
  • These results are not proof that V.I.S.O.R. makes coding agents universally faster, cheaper, or better.

Protocol: benchmarks/README.md. Published-result notes: benchmarks/results/README.md.

Why V.I.S.O.R.

V.I.S.O.R. complements normal repository inspection, including an agent's own search. It adds a persistent local index the agent can query.

Property What the implementation provides
Persistent local index Project graph stored under ~/.visor/
AST symbol extraction Tree-sitter classes, functions, and imports
Dependency graph Import edges used by trace, impact, and context scoring
Terminal interface visor doctor, index, status, context, fix, explain, trace, drift
MCP integration 17 stdio tools, including build_context and health_check
Agent Skill skills/visor-context/SKILL.md directs verification of leads
Drift detection Hash comparison and recent file-changelog warnings
Optional visual HUD VS Code / Open VSX extension; CLI and MCP work without it
Offline lexical retrieval Default mode. No model download on the lexical path

build_context classifies a query into an intent profile, can apply a built-in skill (bug-fixer, architecture-explainer, refactor-assistant, performance-optimizer), and returns a reason string for each selected node. Those reasons explain the score. They do not establish that the selection is sufficient for a code change.

Each context response also includes an internal size estimate: tokens for the full text of candidate files compared with tokens for the returned snippets. That estimate is not a measured change in agent token use.

Optional visual HUD

The HUD is a VS Code extension that draws the indexed graph and shows local telemetry. The MCP server and CLI do not need it.

Install V.I.S.O.R. HUD from the editor's extension view or Open VSX. Extension notes: src/visor/extension/README.md.

Optional V.I.S.O.R. HUD showing a dependency graph and telemetry panels

Current 1280×720 capture generated from this repository's real get_architecture_map, get_telemetry, and build_context outputs. The token panel is V.I.S.O.R.'s local byte-based estimate, not measured agent usage. Reproduce it with node demo/capture_hud.mjs.

Local-first and privacy

  • The index and dependency graph are stored locally, under ~/.visor/.
  • Lexical retrieval works offline and does not download a model.
  • Semantic mode is optional (visor --retrieval-mode semantic or VISOR_RETRIEVAL_MODE=semantic) and uses all-MiniLM-L6-v2, which may be downloaded on first use.
  • V.I.S.O.R. itself does not require uploading the whole repository to a hosted V.I.S.O.R. service. The MCP server speaks stdio.
  • Retrieved snippets are still passed to whichever coding agent the user has configured, subject to that provider's policies.

store_memory embeds the stored text with the semantic model. Lexical indexing does not.

Languages

Tree-sitter parsing covers eight languages. TSX uses the TypeScript grammar's TSX variant. It is not a ninth language.

Language Extensions
Python .py
TypeScript .ts, .tsx
JavaScript .js, .jsx
Go .go
Rust .rs
Java .java
C .c, .h
C++ .cpp, .cc, .cxx, .hpp

Adding a language is a small parser change. See CONTRIBUTING.md.

CLI

visor doctor
visor index
visor status
visor init
visor context "how is auth handled"
visor fix "login crash on null user"
visor explain "database client"
visor trace src/visor/server.py src/visor/workspace.py
visor drift

fix and explain call build_context with bug-fixer and architecture-explainer. Terminal details: docs/TERMINAL.md.

MCP tools

The server registers 17 tools in src/visor/tools/core.py and src/visor/server.py. get_visor_skill is an MCP prompt, not one of those tools. Clients do not have to call any of them automatically.

Category Tools
Intelligence build_context
Search search_codebase, get_symbol_context, get_file_context
Graph get_dependency_chain, impact_analysis, trace_route, dead_code_detection
Drift get_drift_report
Memory and skills store_memory, list_custom_skills, add_custom_skill, delete_custom_skill
HUD get_architecture_map, get_telemetry, set_hud_focus
Server health_check

Reference: docs/MCP_TOOLS.md.

Documentation

Document Contents
docs/TERMINAL.md Offline lexical workflow and semantic opt-in
docs/AGENT_SKILL.md Skill installation notes
docs/MCP_TOOLS.md Tool reference
docs/ARCHITECTURE.md Local index, graph, and retrieval design
docs/FAQ.md Common questions
docs/TROUBLESHOOTING.md Setup failures
CONTRIBUTING.md Development setup and new languages
SECURITY.md Supported versions and private vulnerability reports
CHANGELOG.md Release notes

Community

A code of conduct is not in the tree. Adding one needs an owner-designated enforcement contact. No contact is designated for that purpose today.

git clone https://github.com/dibun75/visor.git
cd visor && uv sync --dev
uv run pytest tests/ -v

License

MIT © Arunav Mandal

Metadata

Release files for visor-mcp 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for visor-mcp 1.2.1
File Size Uploaded Provenance Actions
visor_mcp-1.2.1.tar.gz 817.8 kB With provenance Details for visor_mcp-1.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for visor-mcp 1.2.1
File Interpreter ABI Platform Actions
visor_mcp-1.2.1-py3-none-any.whl Python 3 none any Details for visor_mcp-1.2.1-py3-none-any.whl

Total release size: 1.6 MB

Release files / visor_mcp-1.2.1.tar.gz

Download URL visor_mcp-1.2.1.tar.gz
Size 817.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1656bdb2d767db6f7e6cfdf6f45e1da3b13c66297d7f97bed83df051109f315f
BLAKE2b-256 checksum
How to use checksums
e5c0fa40d7fb97bff29350b6c15ba78b48d52f6afe7cfbdab2452726a7b80aee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Release files / visor_mcp-1.2.1-py3-none-any.whl

Download URL visor_mcp-1.2.1-py3-none-any.whl
Size 824.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
16790e4cf5c38fa42423a7fba437ab3fc5838d1d06e1c18a59422d0d280a6343
BLAKE2b-256 checksum
How to use checksums
bd2b4dd9c6802a7a3c5e316b162ad16d61b137198fc06743cfd1843a95704081
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Security for visor-mcp 1.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for visor_mcp-1.2.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page