Skip to content
| Marketplace
Sign in
Visual Studio>Tools>Inferpal for Visual Studio
Inferpal for Visual Studio

Inferpal for Visual Studio

EstaxNet

|
12 installs
| (0) | Free
AI developer assistant for self-hosted LLMs — Ollama, LM Studio, any OpenAI-compatible server. Agentic loop, 28 built-in tools, and a real debugger on failing tests. 100% local, no telemetry.
Download

Inferpal — Local AI Agent for Visual Studio

Inferpal brings a fully autonomous AI agent directly into Visual Studio, powered by local LLMs via Ollama, LM Studio, or any OpenAI-compatible server. Unlike simple chat assistants, Inferpal operates in a multi-step agentic loop: it reads files, writes code, runs builds, executes tests, browses the web — and chains these actions on its own until the task is complete.

And when a test fails, it does not read the runner's output and guess: it attaches the Visual Studio debugger, reads the real exception, call stack and local values, and fixes the code from what actually happened. Measured on a fixed bench: 12/12 fixed against 10/12 without the capture.

No account. No telemetry. With a local model server (Ollama or LM Studio), your code never leaves your machine.

One engine, two editors. The same core also ships as a VS Code extension — same agentic loop, same 28 tools, same /tdd. Settings and sessions are shared, so a conversation started in one editor finishes in the other.


Why Inferpal?

🔒 Privacy Local-first: with Ollama or LM Studio your source code never leaves your machine — no telemetry, no usage tracking. (You can also point Inferpal at your own OpenAI-compatible server.)
🐞 It debugs On a failing test it attaches the real Visual Studio debugger and reads the exception, the stack and the locals — not the runner's text. 12/12 against 10/12 on a fixed bench.
⚡ Autonomous The agent plans and executes multi-step tasks on its own — read, fix, build, verify, repeat.
💸 Free forever One local model server (Ollama, LM Studio, …), zero subscriptions. Works with any open-source model.
🛡️ Safe by design Every file write creates an automatic snapshot. One command restores any change.
🌍 10 languages UI adapts to your Visual Studio language automatically — no extra setup.

🧪 /tdd — fix until green, with a debugger

Point it at a failing suite and it iterates: run the tests, patch the code, run again, up to five rounds. What makes it different from a retry loop is that it debugs: on the first red round the failing test is re-run under the Visual Studio debugger, and the real exception, call stack and expanded local values at the point of failure go into the fix prompt — the information the runner's text does not carry. On a fixed 12-case bench with a local 27B model that is 12/12 fixed against 10/12 without the capture.

Running a test under a debugger is execution, so it asks once per run — not once per round — and falls back cleanly to the text-only loop when no capture is possible, saying so rather than looping in silence. And because a loop whose goal is "make the tests green" has an obvious shortcut, rewriting a test file always prompts, whatever your permission rules say.

🐞 /debug — runtime investigation

Instead of guessing what the running code does, the agent sets a breakpoint, starts the program (you approve that one action), then reads the call stack, the locals and any expression it needs to settle the question. Consent is per session, not per step, and the step budget is finite — a loop that runs out says so instead of concluding anyway.


Features

🤖 Agentic loop with step mode

The model operates autonomously for up to 20 turns: it picks its tools, executes them, reads the results, and iterates until the task is done. Every step is shown live as collapsible bubbles. Agent Step Mode lets you pause between tool calls and inspect or override each action — toggle it with the 🦶 step button in the input toolbar, then click ▶ Resume to continue (slash equivalents: /agent-step and /resume).

🔨 Fix with AI

When a build fails, a Fix with AI button appears directly on the error bubble. The agent receives the MSBuild error list alongside the relevant source files, fixes them, and can re-run the build to confirm the fix — without you touching a thing. Smart Fix Protocol also runs automatically after every write_file / apply_diff / apply_edits — a quick build/typecheck for .NET, TypeScript, Rust, or Go (extendable via .inferpal/validators.json).

🗂️ 28 built-in tools (+ MCP & custom)

Tool Description
read_file Reads the content of a file
write_file Writes or overwrites a file (confirmation required, automatic snapshot)
apply_diff Find & replace in a file — exact, then whitespace-tolerant fuzzy; occurrence unique/first/all (snapshot, approval shows the diff)
apply_edits Atomic multi-file edit — nothing written unless every edit resolves (snapshot per file, approval required)
restore_file Restores a file from its last snapshot
delete_file Deletes a file (confirmation required, snapshot saved before deletion)
list_files Lists files in a folder (glob, max 300)
search_in_files Regex search across files (max 100 results)
run_command Executes a PowerShell command (confirmation required)
get_diagnostics Runs dotnet build, returns MSBuild errors and warnings
run_tests Runs dotnet test / pytest / npm test / cargo test / go test, returns summary and failures
get_active_document Retrieves the active file in the VS editor
get_open_editors Lists all files currently open in VS
get_git_status git status, log, branches, diff summary and optional full diff
get_debugger_state Current VS break state when paused: reason, exception, call stack (file:line), locals (also @debugger)
get_solution_info Parses .sln and .csproj — projects, frameworks, packages
fetch_url Loads a web page and returns its text content
web_search DuckDuckGo search — returns titles, URLs and snippets
insert_at_cursor Inserts text at the current cursor position in the active editor
replace_selection Replaces the current selection in the active editor
update_memory Updates .inferpal/memory.md — the agent's persistent memory (append / replace / clear)
analyze_code One facade, three modes: callgraph (callees/callers), impact (blast radius), nexus (cross-language REST / JS Interop / SignalR bridges)
search_codebase Semantic search across the indexed project (natural language query)
search_docs Semantic search across external documentation indexed via /docs (passages + source URLs)
generate_project_map Generates a full project map — namespace tree, types, deps, hotspots
rename_symbol Renames a symbol project-wide (Roslyn for C#, regex fallback; dry_run first)
+ MCP servers Tools from any connected stdio MCP server (filesystem, GitHub, databases…)
+ user-defined Configure custom shell commands exposed as agent tools via Settings

🔍 Semantic codebase search

Background indexing of all source files using an embedding model from the configured provider. Hybrid search fuses semantic cosine similarity with lexical BM25 (Reciprocal Rank Fusion), so exact identifiers and symbol/file names rank well — not just fuzzy concepts. Shadow pre-warm fetches results while you type — the search_codebase tool responds instantly. Smart Auto-attach suggests the top-2 relevant files as dismissable chips, and per-turn auto-context silently injects the most relevant chunks into each code question. Indexing automatically pauses while you chat and resumes afterward, so the interactive model always gets the GPU first.

📚 External documentation (@Docs)

/docs add <url> crawls an external documentation site (same-domain, up to 50 pages), embeds it, and exposes the search_docs tool — so the agent answers library and framework questions from the docs themselves, citing the source page and URL. The documentation index is global and shared across every solution. Manage sources with /docs list / remove / reindex.

🔌 MCP client (Model Context Protocol)

Connect any stdio MCP server — the same servers used by Claude Desktop and Continue (filesystem, GitHub, databases, and hundreds more). Enable MCP in Settings, paste a server map, and their tools are exposed to the agent automatically as mcp__<server>__<tool>. Home-grown JSON-RPC client, zero extra dependencies. Every external tool call is gated by an approval prompt with an Allow once / Always allow this tool / Cancel choice (the "always" grant is scoped to the session, never persisted). 100% local stays 100% local — you choose which servers to run.

📐 Project rules & AI checks

Two fully-local, repo-versioned governance features (Continue-style):

  • Rules (.inferpal/rules/*.md) — markdown rules with optional frontmatter (globs, alwaysApply, description). Matching rules are injected into the system prompt and re-scoped automatically to the active file. Manage with /rules and /rules init.
  • AI Checks (.inferpal/checks/*.md) — markdown review criteria. /check [name] has the model review your current git diff against them locally (reports file:line + severity), without anything leaving your machine. Manage with /checks and /checks init.

✏️ Inline ghost-text completions

Fill-in-the-Middle suggestions appear as you type in any code file. Tab to accept, Esc to dismiss. Three presets (Fast 128tok/300ms · Default 256tok/600ms · High Accuracy 512tok/1000ms). Optional dedicated FIM model. Suppressed when IntelliSense is active.

🎯 Code actions & Inline Edit (editor context menu)

Right-click any selection → Inferpal submenu, all powered by a dedicated configurable model without tool calling. Fix, Refactor and Add Docstring apply their result directly in the editor (undoable with Ctrl+Z); Add Tests writes into a separate test file (created/opened, or extended if it already exists); Explain answers in the chat. Edit with AI… (Ctrl+Shift+I) goes further: type a free-form instruction and the model rewrites the selection directly in the editor, re-indented to match.

📝 Inline diff viewer

After every write_file or apply_diff, an LCS-based side-channel diff is shown directly in the chat bubble — added lines in green, removed in red, unchanged blocks collapsed.

📋 Session templates & prompt templates

/template loads one of 5 preconfigured session contexts (code-review, bug-hunt, architecture, refactoring, tests). Define your own reusable prompts with {args} placeholders via Settings.

⭐ Code snippet library

Star any code block to save it to a persistent library. /snippets list/copy/delete manages your saved snippets across sessions.

🧠 Smart Persona

The assistant's persona adapts automatically to the language of the active file — C#, Python, TypeScript, Go, Rust, and more.

💬 Chat panel

Responses stream token by token. Full Markdown rendering: headings, code blocks (selectable, Consolas), lists, bold, italic, inline code. Copy button on every code block. Conversation search with result dimming. Regenerate the last reply in one click. A real-time context & token gauge updates live during generation — the header token counter and the context-fill bar grow as the model thinks and answers (provisional ~ values), then snap to the exact prompt_eval_count + eval_count once the run finishes, so a long generation never looks frozen.

@ Typed mentions

Type @ in the prompt to open a context picker and attach exactly what you mean, inline: @file · @folder · @code (active selection) · @diff (git diff) · @problems (build errors) · @debugger (live break state) · @clipboard · @tree (solution tree) · @token. The mention is resolved into real context the moment you send.

📊 Project notes & workspace context

/note appends timestamped notes to .inferpal/notes.md, automatically injected into future prompts. First message automatically attaches solution info + open editors as silent context.

📋 Session history & export

Sessions auto-saved with a 4–5 word AI-generated title. Export to .md / .txt with a statistics header (model, turns, tool calls, tokens, duration).

🛡️ File snapshots, multi-file restore & undo-run

Every file modification creates a snapshot under .inferpal/history/. After multiple writes in one agent run, a Restore All button rolls back everything at once. /undo-run goes further — it reverts an entire agent run (restores edited files and deletes files created during that run); /undo-run list shows the session's tracked runs.

⏱️ Dynamic timeout engine

Timeouts adapt to task complexity: Quick (diagnostics, short reads), Normal (code edits), Deep (multi-file refactors). All three thresholds are configurable in Settings.

📡 VRAM monitoring

A live badge in the header shows the models currently resident in VRAM and their usage. ModelLifetimeService polls /api/ps every 60 s and auto-unloads idle models according to the configured keep_alive.

🔐 Safe by design — hardened

Every path-taking tool is confined to the workspace through a single AssertUnderRoot sandbox. Writes, diffs, deletes and renames require approval (the prompt shows the actual diff) — and so do fetch_url / web_search, the outbound channels of the lethal trifecta. Permission rules (allow/deny patterns, per-machine + committable .inferpal/permissions.json) auto-approve or block calls before the prompt, and a built-in hard denylist of catastrophic shell commands always applies. Indirect execution (iex, -EncodedCommand, FromBase64String, …) is force-prompted: no allow rule or session grant can auto-approve what text matching cannot read. Outbound fetches pass a hardened SSRF guard (blocks DNS rebinding, IPv4-mapped IPv6, 0.0.0.0/8, loopback and private ranges, with a ReDoS-safe timeout). MCP tool calls get the same 3-way approval prompt.

🔗 Heartbeat & connection guard

Inferpal silently pre-flights the model server connection before every send. The Send button turns grey when the server is unreachable. Polling recovers automatically when the server comes back.

🔔 Sound notification

An audible ping fires when an agent run completes after more than 30 seconds — useful when you switch to another window while the agent works.

⚙️ Slash commands (50+)

/clear /model /tools /export /restore /undo-run /replay /read /ls /grep /run /fetch /search-web /search-code /git /diff /context /xray /build /fix-build /tdd /solution /map /index /commit /commit-exec /memory /note /notes /history /phistory /branch /models /hardware /bench /arena /setup /snippets /template /prompts /docs /check /rules /checks /onboard /plan /task /debug /agent-step /resume /diagnostics /help + 6 code action commands. Type / for the autocomplete popup.

⚙️ Settings

Language · Provider (Ollama / LM Studio / OpenAI-compatible) · Server URL · API key · Chat model · Code Actions model · FIM model · Embedding model · Command timeout · Tool bubbles · Security alerts · Permission rules · Smart Fix · Ghost-text enable/preset · Semantic indexing · Auto-context · Top-K · Pinned context files · Context window · Keep turns · Compaction · OODA threshold · KV-cache anchor · Custom system prompt · Custom agent tools · Dynamic timeouts · VRAM keep-alive · MCP servers (enable + JSON config)

🌍 Localization

10 languages: English, Français, Deutsch, Italiano, Español, Русский, 日本語, 한국어, 中文 (简体), Polski. Follows Visual Studio's language setting automatically, or can be overridden independently.


Quick start

⚠ Close Visual Studio before installing. The merge that registers an extension rewrites the whole configuration at once and gives up if any part of it is in use — so installing with VS open can leave nothing registered, silently. If it happens anyway, /diagnostics names it.

  1. Install Ollama and pull a model: ollama pull qwen2.5-coder
  2. Install the extension, Visual Studio closed
  3. Open Tools → Inferpal, or press Alt+B
  4. Set the Ollama URL and select your model
  5. Click Test to verify the connection — you're ready

Recommended models: qwen2.5-coder for code tasks, llama3.1 for general-purpose chat, nomic-embed-text for semantic search.


Requirements

Visual Studio 2026 (18.x) only — Community, Professional or Enterprise. Visual Studio 2022 (17.x) is not supported: the hybrid packaging that carries the in-editor half is an 18.x capability, and the target was removed rather than promise an install that cannot load.
.NET SDK 8 (installed by Visual Studio)
Model server Ollama (default, full hardware-aware features), LM Studio, or any OpenAI-compatible server — running locally (default: http://localhost:11434, configurable) or on a remote host

Hardware

RAM GPU VRAM
Minimum 8 GB 4 GB
Recommended 32 GB+ 12 GB+ (NVIDIA RTX 3060 12 GB / 4070 or better)

Larger models (70B+) benefit from more VRAM. Smaller models (7B–14B) run well on integrated graphics or CPU-only setups.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft