Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>NIM CodeNew to Visual Studio Code? Get it now.
NIM Code

NIM Code

vijay janakiraman

|
2,110 installs
| (1) | Free
AI coding assistant and autonomous agent for VS Code. Free Auto mode — no API key needed. Multi-provider: NVIDIA NIM, OpenAI, Anthropic Claude, Google Gemini, Groq, Sarvam AI, or any OpenAI-compatible endpoint, including fully offline local models via Ollama, LM Studio, llama.cpp and vLLM. Agent mod
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

NIM Code

AI coding assistant for Visual Studio Code. Ask questions about your code, review a proposed edit, or run an agent that reads files, makes changes, and uses your project's tools.

NIM Code brings hosted chat, personal provider keys, local models, repository context, Git tools, checkpoints, and recoverable coding tasks into the editor.

Marketplace · Website · Issues · Changelog · MIT license

Source version: 2.2.1. This README describes the current checkout; installed releases can differ. The newly registered providers have a main-chat routing limitation documented under provider status.

Contents

  • Installation and quick start
  • Modes and connections
  • Providers and models
  • Chat and editor assistance
  • Agent tools and approvals
  • Context and repository understanding
  • Verification and checkpoints
  • Tasks, teams, and missions
  • Git and pull request review
  • Memory, skills, and workflows
  • MCP servers and hooks
  • Artifacts
  • Local hardware awareness
  • Settings, storage, and privacy
  • Troubleshooting
  • Development
  • Complete command reference
  • Complete settings reference

Installation and quick start

Requirements

  • Visual Studio Code 1.101 or newer.
  • Internet access for hosted models, sign-in, remote tools, and cloud embeddings.
  • A running OpenAI-compatible inference server for local models. NIM Code does not install the server or download its models.
  • Git for Git operations and isolated checkouts; a committed repository for isolated tasks.
  • Authenticated GitHub CLI (gh) for GitHub pull request review and task publication.

Install NIM Code, publisher vijayjanakiraman, from the Extensions view. Alternatively, use Extensions: Install from VSIX for a locally built package. Open a project folder and run NIM Code: Open NIM Code Chat.

Chat opens in a sidebar and can be moved using VS Code's view controls. Settings and artifacts also have editor panels. Open the Git surface with NIM Code: Open Git Panel.

Action Windows / Linux macOS
Open chat Ctrl+Shift+N Cmd+Shift+N
New session Ctrl+Shift+L Cmd+Shift+L
Open Git panel Ctrl+Alt+G Cmd+Alt+G

Start with hosted chat

  1. Choose the hosted option on the first-task screen.
  2. Select Online Chat for conversation or Online Agent for file work.
  3. Attach a selection or mention a file, such as @src/app.ts.
  4. Send a request. Prompt enhancement is optional and off by default: turn on Enhance prompt before run in the composer's ⋯ menu to review an expanded prompt, or leave it off to send your original request directly. Choose your tool approval policy separately.
  5. Review changes and recorded check results before accepting the outcome.

No personal vendor key is required. The anonymous client currently tracks separate daily allowances of five Online Agent requests and twenty Online Chat requests, resetting at midnight UTC. The service can enforce additional limits. Optional sign-in enables account credits; the displayed balance reflects the server's current allowance. Referral controls are available with an account, with rewards determined by the service.

Use a personal key

  1. Run NIM Code: Set API Key and choose the provider.
  2. Save its key through the secure input prompt. Cloudflare also requires its account ID in Settings before token validation.
  3. Select Local Chat or Local Agent, then choose a model for that provider.
  4. Open Settings Dashboard to change defaults or add a custom model.

These Local mode labels mean your configured connection, which can be a cloud provider or a server on your machine. Check provider status before using the new providers with main chat.

Use a local model

Start Ollama, LM Studio, llama.cpp, vLLM, or another compatible server. Run Switch LLM Endpoint, enter its API base URL, and add the server's exact model ID with provider nim. Then choose Local Chat or Local Agent.

For example, after loading qwen2.5-coder:7b in Ollama:

{
  "nimcode.baseUrl": "http://localhost:11434/v1",
  "nimcode.customModels": [
    {
      "id": "qwen2.5-coder:7b",
      "label": "Local Qwen Coder",
      "provider": "nim",
      "contextWindow": 32768,
      "capabilities": ["chat", "tools"]
    }
  ],
  "nimcode.defaultChatMode": "chat",
  "nimcode.defaultChatModel": "qwen2.5-coder:7b",
  "nimcode.defaultAgentModel": "qwen2.5-coder:7b"
}

Declare only the capabilities and context length your server supports. A model that can answer questions may still struggle with agent tool calls.

First-run setup check

In Agent mode, an empty chat opens with a short Get ready for your first task checklist. It answers "can the agent do real work right now?" before you spend a prompt finding out:

Row What it checks If it fails
Provider The selected model's provider has an API key (or a keyless local endpoint). Set key opens the secure key box.
Model The model is tool-capable. Curated models are checked against the registry; a custom model that does not declare tools is checked live. Use model switches to the nearest tool-capable model you already have a key for.
Connection Opt-in Run live check: one small request that asks the model to call a test tool, which confirms the key, endpoint and tool calling work together. A specific fix per cause: a rejected key (Replace key), a model the endpoint does not serve (Use model / Change endpoint), a local server that is not running, a rate limit or a timeout (Check again).
Project A folder is open. Open a folder, then Check again.

The static rows are free and run on their own, and they re-run when you set a key or change the endpoint. Only the live check sends a request. Once everything passes, the card suggests a read-only first task built from your project (for example, explaining how it starts from its detected entry point), which works in every approval mode and cannot change your files. A passing result is remembered until you switch model or change the key, so new chats do not repeat it. Outside Agent mode, the welcome screen has a Check that Agent mode is ready link.

Modes and connections

UI mode Setting value Connection File and terminal tools
Online Chat online-chat Built-in hosted gateway No
Online Agent auto Built-in hosted gateway Yes, subject to approvals
Local Chat chat Selected provider or local endpoint No
Local Agent agent Selected provider or local endpoint Yes, subject to approvals

Online modes retain their hosted transport and separate allowances even when a personal key is saved. They use the hosted catalog and its Auto routing option, rather than nimcode.gatewayBaseUrl.

The hosted model picker shows gateway availability and health status. It does not show response-time figures because the catalog's latency values are not measured from an actual request in your session.

Local modes resolve the selected model's provider and its saved key. Unknown custom model IDs default to provider nim. The main Chat and Agent path uses the Cline engine. A shared model client supports surrounding features such as completion, review, and provider validation; its connection handling is not yet identical to the main engine.

Connection URL or setting
NVIDIA NIM nimcode.baseUrl, default https://integrate.api.nvidia.com/v1
Ollama http://localhost:11434/v1
LM Studio http://localhost:1234/v1
llama.cpp Commonly http://localhost:8080/v1; use your configured port
vLLM / self-hosted API Its OpenAI-compatible API base URL
Separate AI gateway nimcode.gatewayBaseUrl, default http://localhost:3000/api/v1

The separate gateway URL and key do not replace the NVIDIA settings. Save its client key under AI Gateway; manage its upstream vendor credentials in the gateway dashboard. Main-chat routing for this connection is still incomplete, as described below.

The nim route allows keyless requests to recognized local hosts: localhost, 127.0.0.1, ::1, 0.0.0.0, host.docker.internal, and hosts ending in .local. Ordinary LAN IPs are not automatically treated as keyless. Other providers and the separate gateway keep their credential requirements.

Local inference can keep model calls on your machine. Web tools, remote MCP services, embeddings, hosted features, and enabled telemetry have separate network behavior.

Providers and models

Provider status

The current source registers eleven provider IDs, separate credential entries, connection settings, and custom models:

Provider ID Setting Main Chat / Agent status
NVIDIA NIM / local server nim nimcode.baseUrl Uses the configured endpoint
OpenAI openai nimcode.openaiBaseUrl Native provider; override limitation below
Anthropic anthropic nimcode.anthropicBaseUrl Native provider; override limitation below
Google Gemini google nimcode.googleBaseUrl Native provider; override limitation below
Groq groq nimcode.groqBaseUrl Native provider; starter entry hidden by default
Sarvam AI sarvam nimcode.sarvamBaseUrl Uses Sarvam's default URL; override limitation below
AI Gateway gateway nimcode.gatewayBaseUrl Main-chat endpoint routing incomplete
OpenRouter openrouter nimcode.openrouterBaseUrl Main-chat endpoint routing incomplete
Cloudflare Workers AI cloudflare nimcode.cloudflareAccountId Main-chat endpoint routing incomplete
Cerebras cerebras nimcode.cerebrasBaseUrl Main-chat endpoint routing incomplete
Hugging Face Inference huggingface nimcode.huggingfaceBaseUrl Main-chat endpoint routing incomplete

Routing limitation: resolveClineTarget currently falls back to nimcode.baseUrl for gateway, openrouter, cloudflare, cerebras, and huggingface, while resolving their respective saved keys. These selections can send requests to the wrong endpoint. Their registration, key setup, and shared-client support exist, but they must not be treated as complete main-chat integrations yet.

The resolver also omits the configured OpenAI, Anthropic, Google, and Groq URL overrides from native targets, and uses Sarvam's default URL rather than its override. Those settings are supported by the shared client but should not be relied on to redirect main Chat or Agent requests in this checkout.

These are source-review findings, not live-provider validation. A saved key or visible model does not prove that the complete request path works.

Starter catalog

The following IDs are shipped in the model registry. Availability, access, pricing, and limits depend on the upstream service; edit IDs for your deployment as needed.

Provider Shipped IDs
NVIDIA NIM nvidia/nemotron-3-super-120b-a12b, meta/llama-3.2-11b-vision-instruct
OpenAI gpt-5, gpt-5-mini, gpt-4.1, gpt-4.1-mini, gpt-4o, gpt-4o-mini
Anthropic claude-opus-4-8, claude-sonnet-5
Google gemini-2.5-pro, gemini-2.5-flash
Groq openai/gpt-oss-120b — hidden in the curated picker; expose through a custom entry
Sarvam AI sarvam-105b
AI Gateway fast — alias must exist on your gateway
OpenRouter openai/gpt-4o-mini
Cloudflare Workers AI @cf/openai/gpt-oss-20b
Cerebras gpt-oss-120b
Hugging Face Inference openai/gpt-oss-120b:fastest

The default personal Chat and Agent model is Nemotron Super. OpenAI and Anthropic entries are visible in this catalog. Capability badges describe registry metadata; vision, reasoning controls, and tool use also require backend support.

Custom models

Add a model from the picker or Settings, or edit nimcode.customModels:

{
  "nimcode.customModels": [
    {
      "id": "my-deployment-id",
      "label": "Team model",
      "description": "Served by our configured endpoint",
      "provider": "nim",
      "contextWindow": 32768,
      "capabilities": ["chat", "tools"]
    }
  ]
}

Only id is required. Optional fields are label, description, provider, contextWindow, and capabilities. A new entry defaults to provider nim, chat capability, and a 32,768-token context window. Matching a shipped ID overrides that entry. Use distinct IDs when you need separate provider choices because the catalog is keyed by model ID.

Chat and editor assistance

Conversations

  • Streaming answers with Markdown, highlighted code, copy controls, and Mermaid diagrams.
  • Mode, model and approval-mode pickers in the composer, with reasoning effort, the workflow builder, custom-model, endpoint and settings shortcuts in its ⋯ menu.
  • Image attachments for models with vision support.
  • Active selections and explicit file, folder, symbol, diff, and Problems context.
  • Saved sessions with retained transcripts, titles, and deletion controls.
  • Cancellation and visible tool progress, with separate timeout, empty-output, and failure outcomes.
  • A slim header with the open conversation's title (click it to switch conversations), New chat, a ⋯ menu (autonomous mission, task queue, Tasks and recovery, invites, settings) and the account menu. Only one of the panels that open under the header is shown at a time.
  • A flat transcript: your messages are small bubbles, replies flow on the background, consecutive tool calls fold into one expandable "N tool calls" row, and checkpoints appear as a divider with Compare and Restore. Token usage, cost and a copy button appear when you hover or focus a reply.
  • A run dock above the composer with one chip each for the mission, agent team, plan, todos, retrieved context and active skills. Click a chip to expand it; one opens at a time, and a newly proposed plan opens itself.
  • One notice at a time above the composer (error, daily limit, missing key, local-model fit warning, or the sign-in offer), ranked by urgency.
  • A queue for back-to-back tasks and a Tasks and recovery view for longer work, both opened from the header's ⋯ menu.
  • Context reports, token usage, and estimated costs when usage and pricing are available.
  • Feedback and error-report forms.
  • An optional support button for contributing to the project's development.

Mentions

Example Context
@src/app.ts Workspace file
@src/components/ Folder overview
@MyComponent Symbol resolved through language services
@diff Uncommitted Git changes
@problems Errors/warnings in the Problems panel

Type @ to browse sources. Explicit mentions have priority within context budgets. Use an editor selection for an exact excerpt.

Slash commands

Command Purpose
/explain Explain code
/fix Diagnose and fix a problem
/review Review code
/refactor Refactor code
/optimize Improve implementation or performance
/test Generate tests
/document Generate documentation
/debug Investigate a bug
/commit Draft a commit message
/summary Summarize context or changes
/security Review security concerns
/migrate Help migrate code
/pr Draft a pull request description
/remember-project Ask the agent to save project knowledge

Aliases are /doc, /ref, and /opt. Skills and workflows also contribute slash commands. These guide the prompt; edits depend on mode and approvals. /pr does not itself publish a pull request.

Selection actions and inline edits

The editor menu and Command Palette offer Explain, Fix, Review, Refactor, Generate Tests, and Generate Docs for selected code. Explain Error uses diagnostics. Generate Commit Message drafts text from the diff.

Edit Selection opens a replacement proposal in a diff editor. Accept or reject it with the corresponding inline-edit commands. Acceptance checks the document version and original text so stale proposals cannot overwrite newer edits.

Review an improved Agent prompt

In Online Agent or Local Agent mode, prompt enhancement is optional and off by default. Turn on Enhance prompt before run in the composer's ⋯ menu to use one extra model request to expand your request into an actionable implementation brief with the goal, requirements, proposed defaults for unspecified details, and completion checks. The rewrite instructions preserve exact filenames, technologies, and scope, and label suggestions as defaults. Small or detailed requests get a shorter brief. With it off, the original wording goes directly to the Agent without enhancement or prompt review.

For example, a request for a freelancer website in a single free.html file should retain that filename and single-file constraint, while proposing suitable page sections, responsive styling, accessible controls, and checks that the page works in a browser. Unspecified personal details should remain placeholders; a backend or extra framework should not be added without a requirement for one.

Review and edit the original or enhanced prompt, then choose Approve prompt and continue. NIM Code prepares context in the background and starts the Agent without a second context-review popup. Cancel returns your original text to the composer. No Agent tools run before prompt approval. If rewriting fails or the response is cut off, the dialog offers your original request for editing and explicit approval instead of using an incomplete brief.

Prompt improvement is an additional model request and counts against the hosted allowance when using Online Agent. It is not used in Chat modes or for queued batch tasks.

After submission, an animated status shows Improving your prompt, then Preparing context and Starting the Agent after approval, with an elapsed timer. It switches to the running indicator when the request is accepted. Preparation indicators clear on success or failure, and reduced-motion preferences are respected. The composer prevents duplicate submissions while preparation is in progress.

Completion and next edits

Inline completion is off by default. Enable nimcode.completion.enabled or use Toggle Inline Completion. Configure the model, languages, debounce, output limit, and multiline behavior. Automatic completion requires a personal connection or local model; Request Inline Help explicitly supports the hosted Chat allowance. Completed suggestions are cached by model, configuration, and document version.

Nearby edit proposals are a separate opt-in feature: nimcode.nextEditSuggestions.enabled. They require a personal key or local model, open a diff, and require acceptance. Suggest Next Edit requests one manually. They do not silently apply edits while you type.

Agent tools and approvals

Agents read source, edit files, run commands, and maintain visible todos. Main agent turns have a 50-iteration ceiling. Tool selection adapts to the task; safe reads can be batched, while writes and operations with unknown effects are serialized.

All 37 built-in tools

Feature flags, mode, approvals, and available services determine which tools a turn receives.

Group Tools Purpose
Files read_file, list_files, find_files, open_file_in_editor Read excerpts, discover paths, open source
Symbols outline_file, find_symbol, find_references, related_files Inspect signatures, resolve references, find related code
Search search_codebase, search_codebase_semantic Text and embedding-based search
Edits write_file, edit_file, multi_edit, delete_file, rename_file Create/change/remove/move files; validate multi-edit replacements before writing
Web web_fetch, web_search Read pages and discover sources
Terminal run_terminal, list_background_shells, get_background_output, kill_background_shell Run commands and manage background processes
Git inspection git_status, git_diff, git_log Inspect state and history
Checks review_code, get_diagnostics, verify_workspace Model-assisted review, diagnostics, project checks
Planning todo_write, present_plan Maintain steps and present a plan
Memory remember, project_memory Save machine or workspace knowledge
Deliverables artifact Create/update/read/rewrite artifacts
Delegation delegate_task, run_agent_team Scoped subtasks and specialist teams
Repo intelligence repo_intel Overview, impact, history, hotspots, failure diagnosis
On-demand loading load_tools, load_skill Load tool groups or skill bodies

Symbols require language-server support; semantic search requires an index and embeddings. MCP adds namespaced external tools.

Approval policy

Mode Reads File/memory edits Delete, terminal, verification
plan Allow Block Block
manual Allow Ask Ask
auto-edit Allow Allow Ask
auto Allow Allow Ask

Session-local always-allow grants can suppress repeated prompts for approved tools. MCP has its own trust policy. File-tool restrictions do not sandbox an approved shell process.

Edits recheck their baseline after approval. Tool cards show progress and results. Terminal commands report ongoing activity, obey the configured timeout, and can be cancelled; background shells have separate output/stop tools.

The Planner presents structured steps and carries unfinished todos into later turns. Use plan mode for exploration before permitting changes.

Context and repository understanding

Request context

The agent can combine a selection, nearby code, mentions, workspace structure, instructions, memory, relevant files, history, todos, and artifact summaries.

  • The context planner chooses blocks within a model-sized budget.
  • Explicit attachments take priority within the context budget.
  • Context is prepared in the background and submitted using a frozen snapshot, without a separate context-review popup.
  • If the workspace changes during preparation, NIM Code rebuilds context automatically, with up to three attempts. Output-channel updates and document save-state notifications do not invalidate it. If edits continue throughout all attempts, wait for them to finish and retry your request.
  • Relevance ranking uses named files, semantic matches, imports, and historical co-change signals where available.
  • Symbol outlines represent selected files more compactly than full source.
  • The observation ledger helps avoid reading unchanged files repeatedly.
  • Dynamic tools reduce the initial roster; load_tools expands it.
  • Reproducible stale tool results can be pruned to receipts; mutation and terminal results are retained.
  • Long history is budgeted and compacted while preserving recent turns.
  • Prompt caching is requested where the provider path supports it; hits and savings are not guaranteed.

Use Explain Last Request Context for block accounting. The agent adds tool results as it runs, so the initial context does not determine the entire task's cost.

Semantic index

Run Index Codebase to create the local chunk/embedding index. The default embedding model is nvidia/nv-embedqa-e5-v5. Embedding generation and query embedding can send code or search text to the configured embedding backend; a local chat model does not automatically make embeddings local.

Automatic retrieval uses the index when available and skips it otherwise. Retrieval excludes ignored files and nested agent worktrees. Text search works without embeddings.

Repository intelligence and impact

repo_intel combines repository structure, imports, Git history, source maps, symbols, and diagnostics. It supports overview, impact, history, hotspot, and failure diagnosis. Recognized failures can receive a deterministic source-based explanation; other cases need investigation.

Repository relationships inform context selection where available. They are based on indexed relationships and do not describe every runtime dependency.

Project DNA

Project DNA detects stack and style conventions from source/manifests, caches a profile outside the repository, and supplies a compact agent digest. It can capture export/import style, component patterns, test locations, and formatting choices.

Inspect or correct the profile from Settings. pinnedRules survive rebuilding; Rebuild Project DNA refreshes detection. Root CLAUDE.md remains the project-owned instruction source.

Verification and checkpoints

Diagnostics and project checks

NIM Code exposes diagnostics and Verify Workspace. Verification detects build/typecheck, lint, and tests from supported root manifests, including Node, Rust, Go, Python, and Make projects. Configure explicit machine-scoped checks for monorepos or custom commands:

{
  "nimcode.verification.checks": [
    {
      "kind": "build",
      "command": "pnpm run typecheck",
      "cwd": "packages/api",
      "label": "API types"
    },
    {
      "kind": "test",
      "command": "pnpm test",
      "label": "Tests"
    }
  ],
  "nimcode.verification.timeoutMs": 300000,
  "nimcode.verification.maxFixRounds": 3
}

Explicit checks replace autodetection. Shell checks require approval and plan mode blocks verification. Results can feed correction work; repair rounds are bounded. Existing failures, timeouts, skipped checks, and inconclusive results are distinct from passes.

Completion is not verification evidence. The current main engine exposes checks through verify_workspace and submission-tool hooks; missions have a dedicated verification stage. Inspect receipts or invoke Verify Workspace to establish which checks ran. A final answer alone does not prove that every configured check executed.

Checkpoints

Checkpoints snapshot trackable files around mutating agent work in a private Git store, including folders without their own repository. Use the panel or commands to compare, restore, or clear snapshots.

Ignored files and configured exclusions are not restored. Defaults retain fifty timeline entries per session, disable snapshots above 20,000 trackable files, and offer cleanup above 1,024 MiB per workspace store. Clearing checkpoints reclaims disk space. Review affected files before restoration.

Tasks, teams, and missions

Recovery and queue

Tasks and recovery retain transcripts, progress, completed tools, and check results. Reopening the workspace exposes unfinished work as interrupted. Resume is explicit; inspect files and receipts before continuing. Past mutations are not automatically replayed after a restart.

Open Task queue and Tasks and recovery from the ⋯ menu in the chat header. The task queue runs requests back-to-back. Active work requires VS Code to remain open; this is not an unattended background service.

Isolated coding tasks

Enable Run coding tasks in isolated checkouts to start a worktree from committed HEAD. Uncommitted main-workspace changes are excluded. Task worktrees and patch receipts remain in extension-managed storage.

From Tasks, inspect progress, review a retained patch including new files, and explicitly apply it to the main checkout. A compatibility check precedes application; a changed destination can prevent it.

You can also explicitly publish a task branch or create a draft GitHub pull request. This requires Git, an origin remote, and authenticated GitHub CLI. Review, integration, publication, and merge are separate steps.

Sub-agents and teams

delegate_task runs a bounded subtask and returns its findings. It consumes additional model calls and follows relevant policy.

Teams are enabled by default through nimcode.agentTeams.enabled. Roles are Architect, Coder, Tester, and Reviewer. The architect produces a brief, writing roles use file leases, and review follows. The Tester writes tests but has no terminal tool.

Writing members use isolated checkouts. At most two writing task slots run, and builders can be serialized within a parent. File leases restrict file tools; approved Coder shell commands can have broader effects. Review and integrate patches before treating team output as applied.

Missions

Enable nimcode.missions.enabled, then use Start Mission to choose a goal, stages, model, and budget.

Stage Purpose
Understand Survey the repository
Plan Produce an architecture brief
Implement Write the change
Test Run project verification
Fix Repair failures and recheck; requires Test
Security Review security concerns
Review Review correctness and the diff
Commit Prepare the selected commit step

The host enforces stage order. Security and correctness reviews can run together. Writing missions use isolated checkouts with explicit delivery controls.

The default launch budget is $0.25, with a 2,000,000-token ceiling. These are extension controls, not billing guarantees. Estimated dollars require known prices; unpriced/local models still consume the token ceiling. Exhausted limits can leave stages unfinished.

Git and pull request review

NIM Git covers status, file actions, diffs, history, branches, remotes, tags, stashes, and conflicts. Commands include commit/amend, fetch/pull/push/sync, merge/rebase/cherry-pick, revert/reset, patch import/export, submodules, bisect, and repository browsing.

nimcode.git.confirmDestructive controls confirmation for recoverable but surprising actions. Hard reset, clean, force push, and stash drop retain confirmation and typed-phrase safeguards even when it is disabled.

Review GitHub PR detects the current branch's pull request or asks for a numeric PR number, then offers a general or security review. It reads the diff through GitHub CLI and opens model-assisted findings in an editor. After you inspect them, a separate confirmation can post the review as a PR comment. Authenticate gh and use a repository your account can access. This does not merge the pull request.

Memory, skills, and workflows

Durable guidance

Source Location Use
Project instructions Root CLAUDE.md Project-owned agent guidance
Personal memory memory.md under extension global storage Facts/preferences across workspaces on this machine
Project memory .nimcode/memory.md Shared architecture, style, decisions, todos, conversation notes

Use remember for personal facts and project_memory, Add to Project Memory, or the memory panel for workspace knowledge. The panel supports adding, editing, removing, and completing project todos. Commit project memory yourself to share it through Git.

Project memory is enabled by default; automatic capture during compaction is off by default because it writes a workspace file. Mutations follow approval policy. Files and prompt injection are bounded, so memory is not an unlimited transcript archive. Keep credentials out of these files.

Skills

Skills are Markdown prompt packages. Precedence is workspace .nimcode/skills/, user skills under extension global storage, then bundled skills. Bundled topics include TypeScript, React, Next.js, Prisma, testing, security, and frontend work.

---
name: api-review
version: 1
description: Review our API conventions
when: typescript
---

Check request validation, error responses, and authorization.
Use the project's existing patterns and cite the reviewed files.

Save as .nimcode/skills/api-review.md and invoke /api-review. when tags opt into matching when nimcode.skills.autoLoad is enabled. Relevant bodies fit within a budget; load_skill loads others on demand. Install Skill from URL saves a workspace skill for inspection and reuse.

Workflows

Use the composer's workflow builder or place Markdown in .nimcode/workflows/. Workflows contribute reusable slash commands with a name, description, and chat or agent mode:

---
name: review-change
description: Review the current change with a supplied focus
mode: agent
---

Review @diff with this focus: {{input}}
Give findings with file locations and explain the checks you ran.

Run /review-change authentication to supply input. Workflows are reusable instructions using the current connection and policy; they do not install a scheduler.

MCP servers and hooks

These settings launch programs and are machine-scoped. Configure them in user settings, not repository .vscode/settings.json.

MCP

NIM Code connects to local subprocesses through stdio:

{
  "nimcode.mcpServers": [
    {
      "name": "project-tools",
      "command": "node",
      "args": ["/absolute/path/to/mcp-server.js"],
      "disabled": false,
      "trust": "ask"
    }
  ]
}
Trust Policy
ask Confirm calls; blocked in plan mode
trusted Allow unattended calls; blocked in plan mode
readonly Allow calls including in plan mode, based on your assertion that the server cannot mutate

External effects cannot be inferred automatically. Tools are named mcp__server__tool. The editor supports command, args, env, disabled state, and trust. Environment values are plain-text settings, not SecretStorage. HTTP MCP transport is not exposed by this configuration.

Hooks

Hooks run around PreToolUse, PostToolUse, and Stop. Matchers are JavaScript regexes against tool names; empty matches all. Stop ignores the tool matcher.

{
  "nimcode.hooks": {
    "PostToolUse": [
      {
        "matcher": "^(write_file|edit_file|multi_edit)$",
        "hooks": [
          {
            "type": "command",
            "command": "node scripts/check-agent-edit.js",
            "timeout": 30
          }
        ]
      }
    ]
  }
}

Provide your own script for this example. Hooks receive JSON on stdin and NIMCODE_HOOK_EVENT, NIMCODE_TOOL_NAME, and NIMCODE_PROJECT_DIR environment variables. Exit 2 blocks or returns feedback; other nonzero exits are logged without blocking. A Stop hook can require additional work. Avoid running identical checks in both hooks and verification.

Artifacts

Artifacts are deliverables displayed in cards or a separate editor panel.

Kind Examples
markdown Notes and design documents
code Source snippets with a language
svg Vector illustrations
mermaid Flowcharts and sequences
html Standalone pages and interactive visuals
react Self-contained React/JSX components

Open, copy, save to workspace, and inspect versions from card controls. The tool supports create, update, rewrite, and read. Storage retains up to twenty artifacts per session, twenty versions per artifact, and 256 KiB per document.

Artifacts start outside the repository. Save to workspace exports a file. HTML/React previews run in a separate document without the extension RPC bridge; the policy blocks network fetches, remote images, and remote scripts. React uses a bundled runtime and requires self-contained content rather than arbitrary package imports.

nimcode.artifacts.enabled controls new tools. Auto-opening the panel is off by default; cards remain available.

Local hardware awareness

For a local nimcode.baseUrl, NIM Code probes NVIDIA VRAM and the server catalog. The picker can show Fits, Spills, or unknown verdicts with residency/context information, and the composer shows headroom.

Measured residency and estimated sizing are different. Quantization, KV-cache assumptions, server settings, and concurrent GPU use affect fit. Match nimcode.gpu.assumedContextTokens to your server and adjust the VRAM reserve. Unsupported hardware yields CPU information or unavailable data rather than guessed VRAM.

Polling requires the feature enabled, a local endpoint, and a visible view. Disable nimcode.gpu.enabled to stop probing. A custom nvidia-smi path is machine-scoped because it specifies an executable.

Settings, storage, and privacy

Dashboard and profiles

Open Settings Dashboard provides search, resets, scope selection, provider key actions/status, custom models, MCP/hooks, verification checks, memory, checkpoints, Project DNA, context reports, and estimated spend history.

Export settings profiles for reuse; import reviews changes before applying them. Command-running settings require explicit selection. Provider keys are outside normal settings and are not profile values. Exported MCP entries have environment values stripped. Still inspect exports before sharing, especially command text and private endpoint URLs.

Storage

Data Location
Provider keys and account refresh token VS Code SecretStorage, backed by platform secure credential storage
Settings VS Code user/workspace configuration, respecting scope
Sessions, artifacts, checkpoints, tasks/worktrees, indexes, cost history, DNA, personal memory Extension-managed local storage
Project memory, workspace skills, workflows .nimcode/ in the workspace
Project instructions Root CLAUDE.md

Providers, including AI Gateway, have separate key entries. Clear API Key removes the selected entry. The UI receives presence flags rather than saved keys. Transcripts, indexes, memory, and files are not covered by provider-key encryption.

Network data

  • Model requests send prompts and selected context to the serving provider or hosted gateway.

  • Sign-in, credits, and referrals contact the account service.

  • Cloud embeddings can send code chunks and query text to the embedding backend.

  • Web/MCP tools contact their configured services.

  • Feedback sends the entered comment and optional contact fields. Error reports send failure diagnostics and version information; inspect error text before submission.

  • Analytics are enabled by default when included in the build. They cover usage, latency, outcomes, fixed tool labels, platform/version data, and account linkage when signed in. Their schema excludes prompts, responses, code, paths, tool arguments/results, keys, custom model IDs, and MCP server names.

  • Announcement banners are fetched with a plain GET to the NIM Code gateway that carries only the extension version — no install id, account, code, or prompts. A banner you close comes back the next time the panel opens, unless its campaign is set to stay hidden once dismissed. When analytics are enabled, a banner also reports an anonymous view (at most once a day), click or dismissal — just the banner id and the event, no install id or account — so the team can see whether a banner works. Set nimcode.promoBanners.enabled to false to stop the request and hide banners.

Set nimcode.telemetry.enabled to false to disable analytics, or nimcode.telemetry.detail to aggregate for reduced detail. VS Code telemetry also gates analytics. This does not disable a model request, sign-in, or feedback submission you initiate.

Cost displays use reported tokens and known prices. Unknown pricing does not establish free usage, and estimates are not a provider billing ledger.

Troubleshooting

Symptom Check
Selected provider uses the wrong endpoint See the main-chat routing limitation; model registration alone does not establish working routing
Missing key Set the model provider's key; NVIDIA credentials do not configure other providers
Cloudflare validation fails Set the account ID before saving a token with suitable Workers AI access
Local server unreachable Start it, verify port/API path, and use its exact loaded model ID
LAN server asks for a key Ordinary LAN IPs are not automatically keyless
Model chats but cannot edit Check actual tool support and declared capabilities
No first token Check connection/prefill, firstTokenTimeoutMs, and request context
Stream stalls Check provider/log errors and requestTimeoutMs, which caps idle time
No check evidence Inspect receipts and run Verify Workspace
Monorepo checks missing Set explicit machine-scoped checks and relative cwd
Semantic search empty Build the index and check embedding credentials; use text search meanwhile
Symbols unresolved Enable the language server and wait for initialization
Inline suggestions absent Enable the feature and confirm a personal/local route; hosted help is explicit
Inline edit stale Request a new proposal against the current document
Isolation unavailable Use a Git repository with committed HEAD
Patch application fails Inspect destination changes and refresh the task/patch
PR operation fails Check gh auth status, origin, repository, and permissions
MCP/hooks ignored in repository settings Set these machine-scoped values in user settings
Fit verdict unknown Check server metadata, nvidia-smi, context assumptions, and residency
Task interrupted after closing VS Code Reopen recovery, inspect receipts, and resume explicitly

Use Show Logs for the output channel. Issue reports should include editor/extension versions, mode, provider/model, error code or HTTP status, and reproduction steps. Remove credentials and private source from shared logs.

Development

Use Node.js 22+ and pnpm 9.15.9, as declared in the manifest.

git clone https://github.com/vijayjanakiraman/nim-code.git
cd nim-code
pnpm install
pnpm build

For F5/Extension Development Host, rebuild native SQLite for your VS Code Electron version. rebuild:electron has a configured version; confirm it matches the host. Node tests need pnpm rebuild:node instead. Native binaries are platform/ABI-specific.

Run watchers in separate terminals:

pnpm watch:webview
pnpm watch:extension
Script Purpose
pnpm build Build artifact runtime, webview, extension
pnpm build:artifact-runtime Bundle React preview runtime
pnpm build:webview Build Vite/React UI
pnpm build:extension Bundle host and lazy engine
pnpm watch:webview / pnpm watch:extension Incremental builds
pnpm typecheck Check host and UI TypeScript
pnpm lint Lint source
pnpm format Format source; modifies files
pnpm test / pnpm test:watch Run/watch Vitest
pnpm test:agent-scenarios Focused agent scenarios
pnpm test:agent-scenarios:native Native indexing scenarios
pnpm test:e2e Playwright scenarios
pnpm rebuild:electron / pnpm rebuild:node Rebuild SQLite for the target host
pnpm package Build and create VSIX
pnpm publish Publish through VSCE with publisher credentials

Build-time service overrides are defined in esbuild.mjs and src/shared/config/gateway.ts; they are separate from the user's AI Gateway connection. Keep private credentials out of committed configuration and packages.

The extension host owns credentials, execution, policy, storage, and network calls. React webviews provide chat, Git, settings, and artifacts through typed messaging. Main execution uses a lazy Cline engine; shared clients and metadata support surrounding features.

  • Architecture
  • NIM integration
  • Adding a feature
  • Design system
  • Agent scenario matrix
  • Historical manual report

Read CLAUDE.md before contributing. Report which checks ran. A local build, packaged-host validation, hosted deployment, and Marketplace publication are separate release steps. This source audit does not establish that every feature was runtime-tested or that this checkout is deployed.

Complete command reference

The following commands are contributed by the current manifest. Some also appear in editor, chat, Git, and settings controls. Actions can require a selection, session, workspace, or repository.

Chat, editing, and workspace commands

Display name Command ID
NIM Code: Open NIM Code Chat nimcode.openChat
NIM Code: New Chat Session nimcode.newSession
NIM Code: Show Logs nimcode.showLogs
NIM Code: Open Settings Dashboard nimcode.openSettingsDashboard
NIM Code: Set API Key nimcode.setApiKey
NIM Code: Clear API Key nimcode.clearApiKey
NIM Code: Sign In nimcode.signIn
NIM Code: Sign Out nimcode.signOut
NIM Code: Generate Commit Message nimcode.generateCommitMessage
NIM Code: Rebuild Project DNA nimcode.rebuildProjectDna
NIM Code: Index Codebase for Semantic Search nimcode.indexCodebase
NIM Code: Verify Workspace nimcode.verifyWorkspace
NIM Code: Start Autonomous Mission nimcode.startMission
NIM Code: Explain This Error nimcode.explainError
NIM Code: Explain Last Request Context nimcode.explainContext
NIM Code: Switch LLM Endpoint (NIM Cloud or Local Server) nimcode.switchEndpoint
NIM Code: Explain with NIM Code nimcode.action.explain
NIM Code: Fix with NIM Code nimcode.action.fix
NIM Code: Review with NIM Code nimcode.action.review
NIM Code: Refactor with NIM Code nimcode.action.refactor
NIM Code: Generate Tests with NIM Code nimcode.action.test
NIM Code: Document with NIM Code nimcode.action.document
NIM Code: Add Selection to Project Memory nimcode.addToProjectMemory
NIM Code: Open Project Memory nimcode.openProjectMemory
NIM Code: Install Skill from URL nimcode.installSkill
NIM Code: Review GitHub PR nimcode.reviewGithubPr
NIM Code: Toggle Inline Completion nimcode.toggleCompletion
NIM Code: Restore Checkpoint... nimcode.checkpoints.restore
NIM Code: Compare with Checkpoint... nimcode.checkpoints.compare
NIM Code: Clear Checkpoints nimcode.checkpoints.clear
NIM Code: NIM Code: Request Inline Help nimcode.requestInlineHelp
NIM Code: NIM Code: Edit Selection nimcode.editSelection
NIM Code: NIM Code: Accept Inline Edit nimcode.acceptInlineEdit
NIM Code: NIM Code: Reject Inline Edit nimcode.rejectInlineEdit
NIM Code: NIM Code: Suggest Next Edit nimcode.suggestNextEdit

Git commands

Display name Command ID
NIM Code: Open Git Panel nimcode.git.openPanel
NIM Code: Git: All Actions... nimcode.git.actions
NIM Code: Git: Commit... nimcode.git.commit
NIM Code: Git: Amend Last Commit... nimcode.git.amend
NIM Code: Git: Add (Stage) nimcode.git.add
NIM Code: Git: Unstage nimcode.git.unstage
NIM Code: Git: Discard Changes... nimcode.git.discard
NIM Code: Git: Clean (Delete Untracked)... nimcode.git.clean
NIM Code: Git: Rename... nimcode.git.rename
NIM Code: Git: Delete nimcode.git.deleteFile
NIM Code: Git: Pull nimcode.git.pull
NIM Code: Git: Push nimcode.git.push
NIM Code: Git: Force Push (with lease)... nimcode.git.forcePush
NIM Code: Git: Fetch nimcode.git.fetch
NIM Code: Git: Sync (Pull then Push) nimcode.git.sync
NIM Code: Git: Remotes... nimcode.git.remotes
NIM Code: Git: Branch... nimcode.git.branch
NIM Code: Git: Switch / Checkout... nimcode.git.switch
NIM Code: Git: Create Branch... nimcode.git.createBranch
NIM Code: Git: Delete Branch... nimcode.git.deleteBranch
NIM Code: Git: Rename Branch... nimcode.git.renameBranch
NIM Code: Git: Merge... nimcode.git.merge
NIM Code: Git: Rebase... nimcode.git.rebase
NIM Code: Git: Cherry-pick... nimcode.git.cherryPick
NIM Code: Git: Stash... nimcode.git.stash
NIM Code: Git: Stash Pop... nimcode.git.stashPop
NIM Code: Git: Stash Apply... nimcode.git.stashApply
NIM Code: Git: Stash List nimcode.git.stashList
NIM Code: Git: Stash Drop... nimcode.git.stashDrop
NIM Code: Git: Show Log nimcode.git.log
NIM Code: Git: Diff nimcode.git.diff
NIM Code: Git: Blame nimcode.git.blame
NIM Code: Git: Tag... nimcode.git.tag
NIM Code: Git: Create Tag... nimcode.git.createTag
NIM Code: Git: Revert... nimcode.git.revert
NIM Code: Git: Reset (Soft / Mixed / Hard)... nimcode.git.reset
NIM Code: Git: Resolve Conflicts... nimcode.git.resolve
NIM Code: Git: Use Mine (ours)... nimcode.git.useOurs
NIM Code: Git: Use Theirs... nimcode.git.useTheirs
NIM Code: Git: Mark Resolved... nimcode.git.markResolved
NIM Code: Git: Continue Merge / Rebase nimcode.git.continueOperation
NIM Code: Git: Abort Merge / Rebase nimcode.git.abort
NIM Code: Git: Update Submodules... nimcode.git.submoduleUpdate
NIM Code: Git: Apply Patch... nimcode.git.applyPatch
NIM Code: Git: Format Patch... nimcode.git.formatPatch
NIM Code: Git: Bisect... nimcode.git.bisect
NIM Code: Git: Repository Browser... nimcode.git.repoBrowser
NIM Code: Git: Initialise Repository nimcode.git.init
NIM Code: Git: File Actions... nimcode.git.fileMenu

Complete settings reference

All 68 contributed settings are listed below with manifest defaults. Set them through the dashboard, the VS Code settings editor, or JSON. Values marked machine must be configured in user/machine settings; other values allow workspace configuration. Provider credentials are separate SecretStorage entries and are not settings. Endpoint defaults do not remove the main-engine routing limitations described above.

Providers

Setting Default Scope Purpose
nimcode.baseUrl "https://integrate.api.nvidia.com/v1" window NVIDIA/local OpenAI-compatible endpoint.
nimcode.openaiBaseUrl "https://api.openai.com/v1" window OpenAI URL; main-engine override limitation applies.
nimcode.gatewayBaseUrl "http://localhost:3000/api/v1" window Separate gateway URL; main-chat routing incomplete.
nimcode.anthropicBaseUrl "" window Empty uses SDK default; main-engine override limitation applies.
nimcode.googleBaseUrl "" window Empty uses SDK default; main-engine override limitation applies.
nimcode.groqBaseUrl "https://api.groq.com/openai/v1" window Groq API URL; main-engine override limitation applies.
nimcode.sarvamBaseUrl "https://api.sarvam.ai/v1" window Sarvam API URL; main engine currently uses the default.
nimcode.openrouterBaseUrl "https://openrouter.ai/api/v1" window OpenRouter API URL; main-chat routing incomplete.
nimcode.cloudflareAccountId "" window Non-secret account ID for the Workers AI URL; main-chat routing incomplete.
nimcode.cerebrasBaseUrl "https://api.cerebras.ai/v1" window Cerebras API URL; main-chat routing incomplete.
nimcode.huggingfaceBaseUrl "https://router.huggingface.co/v1" window Inference router URL; main-chat routing incomplete.

Models and modes

Setting Default Scope Purpose
nimcode.defaultModel "nvidia/nemotron-3-super-120b-a12b" window Fallback model; mode-specific defaults take precedence.
nimcode.defaultChatMode "auto" window Startup mode: auto, online-chat, chat, or agent.
nimcode.defaultChatModel "nvidia/nemotron-3-super-120b-a12b" window Default personal Chat model.
nimcode.defaultAgentModel "nvidia/nemotron-3-super-120b-a12b" window Default personal Agent model.
nimcode.customModels [] window Additional models or overrides; see custom-model schema above.

Requests and diagnostics

Setting Default Scope Purpose
nimcode.requestTimeoutMs 120000 window Idle deadline between streamed chunks, in milliseconds.
nimcode.firstTokenTimeoutMs 300000 window Initial connection/upload/prefill deadline, in milliseconds.
nimcode.terminalTimeoutMs 900000 window Terminal command deadline, in milliseconds; 0 disables.
nimcode.maxRetries 3 window Transient API retry limit.
nimcode.temperature 0.2 window Sampling temperature; unsupported model/provider paths omit it.
nimcode.agentIncludeActiveFile true window Attach nearby active-file context without an explicit selection.
nimcode.embeddingModel "nvidia/nv-embedqa-e5-v5" window Model used by the semantic embedding connection.
nimcode.autoDiagnostics true window Feed changed-file diagnostics into tool results.
nimcode.promptCaching true window Request supported provider prompt caching.

Context

Setting Default Scope Purpose
nimcode.autoContext true window Retrieve relevant snippets when the semantic index is available.
nimcode.context.planner true window Choose context blocks by intent and budget.
nimcode.context.maxPrefixTokens 0 window Initial fixed-prefix token cap; 0 derives from model size.
nimcode.context.relevance true window Rank relevant files and include compact outlines.
nimcode.context.dynamicTools true window Select a smaller initial roster with on-demand loading.
nimcode.context.pruneToolResults true window Replace reproducible stale results with receipts.

Verification

Setting Default Scope Purpose
nimcode.verification.enabled true window Enable project verification support.
nimcode.verification.checks [] machine Explicit build/lint/test commands; empty uses autodetection.
nimcode.verification.maxFixRounds 3 window Repair-round limit; 0 reports results without repair.
nimcode.verification.timeoutMs 300000 window Deadline per check, in milliseconds; must be bounded.
nimcode.verification.runTests true window Include tests in project verification.

Completion and inline edits

Setting Default Scope Purpose
nimcode.completion.enabled false window Enable automatic ghost-text completion.
nimcode.completion.model "" window Completion model; empty follows defaultChatModel.
nimcode.completion.debounceMs 250 window Delay before requesting completion, in milliseconds.
nimcode.completion.maxTokens 128 window Completion output token limit.
nimcode.completion.languages ["*"] window Language IDs; * includes all languages.
nimcode.completion.multiline true window Allow multiline suggestions.
nimcode.nextEditSuggestions.enabled false window Opt into nearby reviewed edit proposals.

Agents, artifacts, and repository features

Setting Default Scope Purpose
nimcode.artifacts.enabled true window Offer artifact publishing tools.
nimcode.artifacts.autoOpenPanel false window Automatically open new artifacts in an editor panel.
nimcode.skills.autoLoad true window Automatically match skills declaring stack tags.
nimcode.repoIntel.enabled true window Enable repository intelligence and diagnosis.
nimcode.projectDna.enabled true window Detect/cache conventions and inject their digest.
nimcode.missions.enabled false window Show mission launcher.
nimcode.missions.defaultBudgetUsd 0.25 window Initial mission dollar budget, based on estimated pricing.
nimcode.missions.tokenCeiling 2000000 window Mission token ceiling, including unpriced/local calls.
nimcode.agentTeams.enabled true window Offer the specialist team tool.

Checkpoints and memory

Setting Default Scope Purpose
nimcode.checkpoints.enabled true window Enable snapshots for ordinary workspace agent edits.
nimcode.checkpoints.exclude [] window Extra gitignore-style snapshot exclusions.
nimcode.checkpoints.maxPerSession 50 window Retained checkpoint timeline entries per session.
nimcode.checkpoints.maxFiles 20000 window Trackable-file ceiling before snapshots are disabled.
nimcode.checkpoints.maxStorageMb 1024 window Workspace-store cleanup prompt threshold, in MiB.
nimcode.projectMemory.enabled true window Project memory tools, panel, and prompt context.
nimcode.projectMemory.autoCapture false window Capture durable notes during compaction; writes workspace memory.

Local hardware

Setting Default Scope Purpose
nimcode.gpu.enabled true window Enable local hardware/server probing.
nimcode.gpu.smiPath "" machine Executable path override; empty searches standard locations.
nimcode.gpu.vramReserveMb 1024 window VRAM reserve for desktop use, in MiB.
nimcode.gpu.assumedContextTokens 8192 window Context assumption used for KV-cache sizing.

Git, privacy, and external programs

Setting Default Scope Purpose
nimcode.git.confirmDestructive true window Confirm recoverable surprising Git actions; irreversible gates remain.
nimcode.telemetry.enabled true window Allow analytics, also gated by VS Code telemetry.
nimcode.telemetry.detail "full" window full or aggregate analytics detail.
nimcode.promoBanners.enabled true window Show announcements from the NIM Code team (set from the gateway) at the top of the chat panel.
nimcode.mcpServers [] machine Stdio servers, arguments, environment, enabled state, and trust.
nimcode.hooks {} machine PreToolUse, PostToolUse, and Stop command hooks.

License

NIM Code is licensed under the MIT license. Provider services, model access, and external tools have their own terms.

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