V.I.S.O.R.
<div align="center">
<img src="./docs/assets/icon.png" alt="V.I.S.O.R. Logo" width="120"/>
<h1>V.I.S.O.R.</h1>
</div>
> **Your AI coding assistant wastes time reading the wrong files. V.I.S.O.R. fixes that.**
[](https://github.com/dibun75/visor/actions/workflows/ci.yml) [](https://pypi.org/project/visor-mcp/) [](https://open-vsx.org/extension/dibun75/visor-hud) [](LICENSE) [](pyproject.toml)
**Visual Intelligence System for Orchestrated Reasoning**
V.I.S.O.R. is a **smart helper for your AI coding assistant**. It reads your code, understands how files are connected, and gives your AI exactly the right context β so it spends less time searching and more time solving.
It works with **Antigravity, VS Code, Cursor, Claude Code, and Windsurf**.
<div align="center">
<img src="./docs/assets/hud_overview.png" alt="V.I.S.O.R HUD β 3D codebase visualization in your IDE" width="800"/>
</div>
<div align="center">
<h3>π¬ See it in action</h3>
</div>
<div align="center">
<img src="https://github.com/dibun75/visor/raw/main/docs/assets/demo.gif" alt="V.I.S.O.R HUD in action" width="800"/>
</div>
---
## π¬ What Can You Do With It?
Just talk to your AI agent like normal. V.I.S.O.R. works behind the scenes to find the right code automatically.
### Find a bug
> "Find the code related to the login crash"
Without V.I.S.O.R., your AI reads 20+ files blindly. With V.I.S.O.R., it gets the 3β5 most relevant files instantly.
### Understand your code
> "Explain how authentication works in this project"
V.I.S.O.R. traces the full auth flow across files β showing your AI exactly which functions call which, and in what order.
### Refactor safely
> "What files would break if I change the database client?"
V.I.S.O.R. runs an **impact analysis** and shows every file that depends on the one you're changing.
### Check for stale context
> "Are the files you read earlier still up to date?"
V.I.S.O.R. checks file hashes and warns your AI if something changed since it last looked.
---
## π Install (2 minutes)
### Step 1: The One-Command Install
You no longer need to manually copy and paste JSON configuration files. V.I.S.O.R. includes an interactive setup wizard that automatically configures your IDE.
```bash
# This will auto-detect Cursor, VS Code, or Antigravity and set up the MCP connection
uvx visor-mcp init
```
*Note: Claude Code handles installation natively via `claude mcp add visor -- uvx visor-mcp`.*
<details>
<summary><b>Prefer manual installation? Click here for raw configs</b></summary>
**Cursor** (`~/.cursor/mcp.json`):
```json
{
"mcpServers": {
"visor": {
"command": "uvx",
"args": ["visor-mcp"]
}
}
}
```
**VS Code / Antigravity** (`.vscode/mcp.json`):
```json
{
"servers": {
"visor": {
"command": "uvx",
"args": ["visor-mcp"]
}
}
}
```
**Claude Desktop** (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"visor": {
"command": "uvx",
"args": ["visor-mcp"]
}
}
}
```
</details>
> **Prerequisite:** You need [`uv`](https://docs.astral.sh/uv/getting-started/installation/) installed. `uvx` (included with `uv`) handles virtual environments and dependencies automatically β no manual setup needed.
### Step 2 (Optional): Install the 3D HUD Extension
Search for **"V.I.S.O.R. HUD"** in your editor's extension panel, or install from [Open VSX](https://open-vsx.org/extension/dibun75/visor-hud). This gives you a live 3D visualization of your codebase graph right in the sidebar.
---
## π€ The Proof: Why You Need V.I.S.O.R.
Every time your AI agent searches for context natively, it relies on brute-force text search (`grep` or ripgrep). This wastes tokens, misses dependencies, and hallucinates context.
Here is what happens when you ask an AI to **"refactor the database client"**:
| AI *Without* V.I.S.O.R. β | AI *With* V.I.S.O.R. π― |
|---|---|
| Searches `db_client` and reads 24 files blindly. | Instantly retrieves the `db_client.py` AST node. |
| Uses **14,500 tokens** filling the context window. | Uses **1,800 tokens** (an 87% reduction). |
| Misses `src/auth.py` because the word "database" wasn't explicitly mentioned in the file. | Identifies `src/auth.py` because it detects a hard dependency graph link. |
| **Result:** A broken refactor because it didn't update the authentication service that depended on the database. | **Result:** A perfect refactor because it had complete, surgically precise context. |
---
## β¨ Key Features
### π§ Smart Context Engine
The heart of V.I.S.O.R. When your AI asks "find code related to X", it doesn't just search by text β it **thinks**:
- **Understands your question** β Detects if you're fixing a bug, exploring, or refactoring, and adjusts accordingly
- **Scores code 5 different ways** β Combines meaning similarity, name matching, file proximity, code connections, and how recently the file was changed
- **Explains its choices** β Every code snippet includes a plain-English reason for why it was picked
- **Saves tokens** β Shows you exactly how many tokens it saved vs. a naive approach
### β‘ Built-in Skills
Pre-built strategies that change how V.I.S.O.R. finds code. Think of them as "modes":
| Skill | What it does |
|---|---|
| `bug-fixer` | Focuses on recently changed files and dependency chains |
| `architecture-explainer` | Casts a wide net to help explain how things connect |
| `refactor-assistant` | Traces all dependencies so you know what might break |
| `performance-optimizer` | Finds hotspots by prioritizing recently modified code |
You can also create your own custom skills.
### π Code Understanding
V.I.S.O.R. reads your code structure (classes, functions, imports) in **9 languages**:
| Language | File Types |
|----------|-----------|
| Python | `.py` |
| TypeScript | `.ts`, `.tsx` |
| JavaScript | `.js`, `.jsx` |
| Go | `.go` |
| Rust | `.rs` |
| Java | `.java` |
| C | `.c`, `.h` |
| C++ | `.cpp`, `.cc`, `.cxx`, `.hpp` |
> **Want more?** Adding a new language is ~15 lines of code. See [CONTRIBUTING.md](./CONTRIBUTING.md#how-to-add-a-new-language-most-common-contribution).
### π 3D HUD (VS Code / Antigravity)
A real-time interactive graph of your codebase β right in your editor sidebar. Shows:
- Your code as connected nodes you can explore
- Live stats: how many tokens your AI is using, how many files are indexed
- Drift alerts when files change under your AI
### β οΈ Drift Detection
Knows when your AI is looking at outdated code. Compares file hashes and warns before your AI makes decisions on stale information.
---
## π¦ Example: Finding a Bug
```bash
$ visor fix "authentication crash"
```
```
============================================================
V.I.S.O.R. Context Intelligence Engine
============================================================
Query: authentication crash
Intent: BUG_FIX
Skill: bug-fixer
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Tokens without V.I.S.O.R.: 11,400
Tokens with V.I.S.O.R.: 2,180
Reduction: 80.9%
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Selected 4 nodes (truncated=False):
[2.85] src/auth/jwt.py:verify_token
β Matched query token in symbol name
β Co-located in same file as top semantic hit
β Recently modified file (boosted)
[2.12] src/auth/middleware.py:auth_guard
β Reachable via dependency chain
β Semantic similarity (score: 0.375)
============================================================
```
**What happened:** Instead of your AI reading every file in the project, V.I.S.O.R. found the 4 most relevant functions and saved 80% of the tokens.
---
## π οΈ CLI Commands
You can also use V.I.S.O.R. from the terminal:
```bash
visor fix "login crash on null user" # Find bug-related code
visor explain "database client" # Understand how a module works
visor context "how is auth handled" # General code search
visor trace src/auth.py src/db/client.py # Show how two files are connected
visor drift # Check for changed files
```
---
## π οΈ MCP Tools (for AI Agents)
V.I.S.O.R. gives your AI agent **17 tools** across 5 categories. Your AI uses these automatically β you don't need to call them manually.
| Category | Tools |
|----------|-------|
| π§ **Intelligence** | `build_context` β the main tool that finds and ranks relevant code |
| π **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 & Skills** | `store_memory`, `add_custom_skill`, `list_custom_skills`, `delete_custom_skill` |
| π **HUD** | `get_architecture_map`, `get_telemetry`, `set_hud_focus` |
See [`docs/MCP_TOOLS.md`](./docs/MCP_TOOLS.md) for the full API reference.
---
## π Documentation
| Document | What's Inside |
|----------|--------------|
| [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md) | How V.I.S.O.R. works under the hood |
| [`docs/MCP_TOOLS.md`](./docs/MCP_TOOLS.md) | Complete reference for all 17 tools |
| [`docs/FAQ.md`](./docs/FAQ.md) | Common questions answered |
| [`docs/TROUBLESHOOTING.md`](./docs/TROUBLESHOOTING.md) | Fixing common problems |
| [`CONTRIBUTING.md`](./CONTRIBUTING.md) | How to add languages, tools, and skills |
| [`CHANGELOG.md`](./CHANGELOG.md) | What changed in each version |
---
## π€ Contributing
V.I.S.O.R. welcomes contributions! The easiest way to start is by [adding a new language](./CONTRIBUTING.md#how-to-add-a-new-language-most-common-contribution) β it's ~15 lines and a great first issue.
```bash
git clone https://github.com/dibun75/visor.git
cd visor && uv sync --dev
uv run pytest tests/ -v
```
See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full guide.
---
## π Works With
| IDE | Support | How to Set Up |
|------|---------|--------------|
| Claude Code | β
Full | `claude mcp add visor -- uvx visor-mcp` |
| Cursor | β
Full | `~/.cursor/mcp.json` |
| Claude Desktop | β
Full | `claude_desktop_config.json` |
| VS Code | β
Full | `.vscode/mcp.json` + [HUD Extension](https://open-vsx.org/extension/dibun75/visor-hud) |
| Antigravity | β
Full | `.vscode/mcp.json` + [HUD Extension](https://open-vsx.org/extension/dibun75/visor-hud) |
| Windsurf | β
Full | Plugin raw config |
---
## License
MIT Β© [Arunav Mandal](https://github.com/dibun75)
TDQS
Scored across 17 tools
Most tools have clearly distinct purposes (e.g., build_context vs search_codebase, get_dependency_chain vs impact_analysis). Minor overlap exists between build_context and search_codebase, but descriptions clarify their different outputs (ranked context vs list of nodes).
Many tools follow a get_ prefix pattern, but there are also build_, search_, store_, set_, trace_, and compound names like dead_code_detection and health_check. This mix of verb_noun and noun_noun is inconsistent but still readable.
17 tools is slightly above the typical 3-15 range for well-scoped sets. While each tool has a clear role, the number feels a bit heavy for a code analysis server, but it's still manageable.
The tool surface covers essential code intelligence operations: search, context building, dependency analysis, drift detection, file/symbol inspection, and architecture mapping. Missing modification tools, but that's expected for a read-only analysis server.