VS Code extension
Grounded code-knowledge and the tracked insrc workflow, wired into your AI assistant — the VS Code counterpart to the insrc JetBrains plugin. Like it, the extension is a thin orchestrator that owns no reasoning: it installs and manages the backing daemon, wires insrc into your AI host's MCP config, and registers your workspace — so your assistant answers from a citation-grounded model of your codebase.
What it is
All the reasoning still runs through the insrc MCP server that your host's assistant invokes — the extension opens no cloud path of its own. Its whole job is orchestration at editor lifecycle moments (activation, install, uninstall):
- Installs & manages the daemon. It ensures the insrc daemon is present and current, delegating to the same installer the CLI uses, and exposes its whole lifecycle as commands.
- Wires your AI host. It registers the insrc MCP server plus the tracked-workflow steering into your agentic host's own config and rules files (Claude Code, Cursor, …).
- Registers your workspace. It adds the open workspace to the daemon through the strict
repo.addcontract so it gets indexed, scoping every capability call to that repo. - Edits the daemon config in native Settings. The daemon's configuration is a set of typed, machine-scoped
insrc.*settings — no hand-edited JSON, and it never syncs off this machine.
Requirements
| Requirement | Why |
|---|---|
| VS Code 1.75+ | Stock Visual Studio Code (or a compatible fork such as Cursor). The extension activates on startup and stays dormant until you accept its onboarding prompts. |
| An MCP-capable AI host | The agentic assistant that invokes the insrc MCP server — e.g. Claude Code or Cursor. The extension writes the MCP registration into that host's config; without one, insrc's tools simply aren't wired. |
| The insrc daemon | The backend the extension talks to. It is installed on first use (see onboarding below); no manual step needed. |
| Node + git | Used by the daemon and its installer to clone and build the daemon into ~/.insrc/. |
Install
A · VS Code Marketplace (recommended)
Open the Extensions view (⇧⌘X / Ctrl+Shift+X), search for insrc, and click Install — or install insors.insrc-vscode from the Marketplace page. Updates arrive like any other extension.
B · Install from a .vsix (pre-release / internal)
Build the package (see building from source) — a single insrc-vscode-<version>.vsix — then install it directly:
Extensions view → ⋯ → Install from VSIX… and select the built file, or from a shell: code --install-extension insrc-vscode-<version>.vsix.
First-run onboarding
Installing the extension does not touch the daemon by itself — setup happens on first activation, as one coalesced flow that prompts for each step independently and only when it is actually needed:
- Install the insrc daemon into
~/.insrc/. Accepting runs the bootstrap installer that clones and builds the daemon; if it is already present it is silently kept current instead. - Register this workspace with the daemon (
repo.add) so it gets indexed. - Wire your AI host (Claude Code, Cursor, …) so insrc's MCP tools are available to your assistant.
insrc: Install daemon / Start / Stop / Restart / Update daemon, insrc: Wire AI hosts, and insrc: Register workspace. Nothing happens without your explicit consent.How it works
Once a workspace is registered, you keep using your assistant exactly as before — the extension just makes it far more grounded:
- Grounded answers. Because the insrc MCP server is registered with your host, your assistant explores the code through insrc's citation-grounded analyze tools — file paths come from the real index, not guesses.
- Tracked workflow. The steering block guides the assistant to route feature work through insrc's define → design → plan → build workflow, with an independent review before approval.
- Per-workspace scope. Every capability call carries the open workspace's path, so each window is scoped to its own repo — no cross-talk between projects.
In the editor
Beyond the invisible wiring, the extension adds a small set of native surfaces so you can drive and inspect insrc without leaving VS Code or dropping to a shell:
- Native Settings (
insrc.*). The daemon's whole configuration is editable from VS Code Settings (searchinsrc) — log level, Ollama host, permission mode, model tiers, plan depth, embeddings, and per-role tier overrides (insrc.models.tasks.*). Every option is typed and machine-scoped, so it never syncs off this machine. The view stays truthful to the daemon: an edit the daemon rejects is reverted with its reason, and external changes (from the CLI, JetBrains, or another window) are reconciled viainsrc: Refresh insrc settings. See the settings guide. - Model-tier picker.
insrc: Set model tierwalks you through a tier → provider → model picker whose list is exactly what the daemon offers for that tier's provider (Ollama's installed models, or the curated Claude / Codex catalog) — no typing raw model ids. - Status-bar panels. The status-bar insrc item opens Open Detailed Status — a tabbed panel over the running daemon (Daemon state, the per-work-item Workflows chain, and a Debug tab with attached MCP clients, a live daemon-log tail, and a consent-gated cleanup of stray insrc processes) — and Open Repo Configuration, a form editor for any registered repo's per-repo model-tier overrides.
Keeping the daemon current
On activation (only when the daemon is already reachable) the extension compares the installed daemon's commit against its upstream and, on drift, offers an Update / Dismiss notification that updates the daemon in place on your OK; updating the extension itself brings the daemon current automatically. A failed update surfaces once with the reason — nothing is retried or rolled back, because the daemon owns its own state.
claude / codex session running outside the editor needs a manual restart instead — reloading the window respawns the editor's own MCP host, not an external CLI.Clean removal
All of the extension's writes into host-owned files are reversible:
- Uninstall runs a
vscode:uninstallhook that removes exactly the insrc marker-delimited blocks it added (the MCP registration and the steering section) from every host config it wrote — your own rules and other MCP servers are untouched. - A mere disable leaves those writes intact, so re-enabling needs no re-prompting.
Build from source
The extension lives in-repo under vscode-plugin/. It bundles with esbuild to a self-contained .vsix that inlines the shared IPC client and marks vscode external (shipping no repo source):
$ cd vscode-plugin
$ npm install
$ npm test # the node:test (tsx --test) suite — the local gate
$ npm run bundle # esbuild → out/extension.js + out/uninstall.js (CJS)
$ npm run package # @vscode/vsce package → a single .vsix
version in package.json, then run the vscode-plugin GitHub Actions workflow (workflow_dispatch), which bundles, packages and vsce publishes using the VSCE_PAT secret.Where next
Settings
Every insrc.* option the extension exposes in native VS Code Settings, plus the Detailed Status and Repo Configuration panels.
Getting started
Install and run the daemon, index a repo, and ask your first grounded question.
readJetBrains plugin
The same integration for IntelliJ IDEA, PyCharm, GoLand and WebStorm.
read