Vestige
Understand this change and what it will break, so you can push it with confidence.

Vestige makes AI-generated diffs reviewable before they're pushed. When an LLM
changes a lot of code at once, Vestige answers three questions fast:
- Where do I start? — entry points and a guided reading order for the change.
- What could this affect? — the blast radius: everything the change can reach or break.
- What did this code do before? — the surrounding context, without re-deriving it.
How a review works
- Open a folder. Vestige scans and parses it locally — no LLM calls — to
build a call graph and a file-dependency graph.
- Read the graphs. Click the Vestige icon in the activity bar, or run
Vestige: Open Graph, for two tabs on one panel: Repo Graph (function
calls) and Feature (feature clusters). Click any node to jump to that
code.
- Get notified when something changes outside your own typing — an AI
agent, a
git pull, a bulk edit. Vestige detects it and offers to open the
Splash Zone, or opens it automatically if you've turned on
vestige.splashZone.autoOpen.
- Review in the Splash Zone. The change is broken into an ordered set of
review cards, each with its own blast radius, an inline or split diff, an
LLM-generated one-line summary, an Explain action for deeper context,
and accept/revert controls.
New to Vestige? Run Vestige: Getting Started for a five-step walkthrough
(map your project, read the graphs, review a change, judge the blast radius,
explain & decide) that links straight to the relevant commands.
Design principles
- Impact analysis is computed, not guessed. Blast radius comes from the
parsed call/dependency graph — deterministic and local, never an LLM
hallucinating what a change touches.
- The LLM only labels and summarizes. Snippet explanations, change-review
summaries, and feature-cluster names are generated text on top of the
analysis; they never decide what's affected.
- Analyses are cached. Re-opening a graph or a review doesn't re-run or
re-bill work that's already been done.
Data & privacy
Call-graph, dependency-graph, and blast-radius analysis run 100% locally —
nothing about your code's structure leaves your machine for these.
Two features send code to the Vestige backend (hosted on AWS, which calls
OpenAI to generate text):
- Explain Selection sends the selected code snippet.
- Change-review summaries (the one-line summaries on Splash Zone cards)
send the changed-code snippets for that chunk.
Feature-cluster analysis sends pre-computed summaries of your code, not raw
source.
Nothing is sent unless you use one of these features. There is no telemetry
and no analytics.
First-launch limitations
- TypeScript/JavaScript, Python, Go, and Java are supported. The parsers
ship with the extension (tree-sitter compiled to WebAssembly), so nothing to
install — open a folder in any of these languages and the graphs, blast
radius, and reviews work the same. Other file types are treated as plain
dependency-graph nodes.
- Single-root workspaces only. Vestige scans the first folder in your
workspace.
- Re-parsing on file change isn't incremental at the AST level yet. Fine
for small/medium repos; large monorepos will feel the rescan.
- Feature View's feature map is a whole-repo analysis, generated on
demand and cached, not something that updates live.
- This is a first release. Expect rough edges, and remember the blast
radius is only as good as the static call graph — dynamic dispatch and
reflection can escape it.
Commands
| Command |
Description |
Vestige: Open Graph |
Open the graph panel (last-used tab). |
Vestige: New Graph Tab |
Open an additional graph panel tab. |
Vestige: Show Repo Graph |
Open the call-graph tab. |
Vestige: Show Feature View |
Open the feature-cluster tab. |
Vestige: Explain Selection |
Explain the selected code (sends the snippet to the backend). |
Vestige: Open Splash Zone |
Open the external-change review panel. |
Vestige: Rescan Workspace |
Force a fresh local scan/parse. |
Vestige: Clear Cache |
Clear cached analysis/explanations. |
Vestige: Getting Started |
Open the walkthrough. |
v0.1.0 — first public launch.