NimPilot

An AI coding assistant for VS Code, powered by NVIDIA NIM (free models), OpenRouter (GPT-4o, Claude, Gemini, DeepSeek and hundreds more with one key) and GPT models through AgentRouter. Save a key for each and switch between them from the chat.
Get an API key: NVIDIA NIM · OpenRouter · AgentRouter, for GPT models (NimPilot's referral link). Sign up, create a key, then paste it in the chat's Settings (the cog). Step-by-step: Setup.
AgentRouter (GPT models) needs the Codex CLI. AgentRouter does not work without it. NVIDIA models do not need it. Steps: AgentRouter setup.
| Approve changes with the diff in front of you |
A full agent turn |
@ to add files |
Light theme |
 |
 |
 |
 |
Features
Chat sidebar — streaming responses, conversation history (search/pin/rename/delete/export/import), and an agentic tool-calling loop the model can use to:
- Read, create, and edit files in your workspace —
edit_file changes just the part that needs changing, search_code finds where things are defined or used, and read_file reads large files in ranges
- Run terminal commands (builds, tests, installs, git), including long-running dev servers/watchers in the background
- File writes and terminal commands need your approval. Always Allow in a chat approves everything else in that chat, and stays on after a reload; risky commands (
rm, git push, sudo, …) still ask every time, and safe ones you list (e.g. npm test) can run without asking
- Undo changes on any reply that edited files restores them to how they were before it
- Type
@ in the chat input to add a file to the conversation (@src/server.ts) — its contents go to the model with your message
- 💡 Fix with NimPilot on any error in the editor, and Ask NimPilot About Selection in the right-click menu
- Optional inline suggestions (ghost text, Tab to accept) — off by default; toggle from the NimPilot item in the status bar
- Switch models from the chip under the chat input: NVIDIA's chat models, OpenRouter's models and GPT models through AgentRouter, grouped by provider. Picking a model switches to its provider
- Sees the editor's errors (type errors, bad imports) right after each edit, so it fixes them immediately
- Follows your project's own rules from a
NIMPILOT.md (or AGENTS.md) in the workspace root — create one with NimPilot: Create Project Instructions File
- Uses tools from MCP servers you configure (
aiCodingAssistant.mcpServers) or that a workspace's .mcp.json lists — the file Claude Code uses, so e.g. code-review-graph works once installed; workspace servers run only in a trusted workspace, after you allow each one
- Uses skills — folders with a
SKILL.md, the same format Claude Code uses — from .nimpilot/skills or .claude/skills in the workspace or your home folder; the agent loads one when a task matches it
- Plans multi-step work, and keeps long tasks within the model's context by summarizing finished plan steps
- Hooks: run your formatter/linter after each agent edit and your tests after each turn (
aiCodingAssistant.hooks)
- Hands broad research ("where is X used?") to read-only subagents with a fresh context, so the main conversation only gets their short report
- Attach an image (or paste one with Ctrl+V) — read directly by the model
- Attach a document (PDF, Word, PowerPoint, or plain text) — extracted and indexed into a local RAG index so the model can answer questions about it
- Search a RAG index built over your whole workspace (
NimPilot: Index Workspace) for relevant code context automatically
20 one-shot AI commands, available from the Command Palette (and, where it makes sense, the editor right-click menu):
| Command |
What it does |
| Generate Code |
Writes code from a natural-language description |
| Explain Code |
Structured Purpose/Flow/Complexity/Suggestions breakdown |
| Fix Code |
Finds and fixes bugs, with a diff view and one-click Apply to File |
| Refactor Code |
Improves readability/performance/naming, same diff + Apply flow |
| Generate Unit Tests |
JUnit/TestNG/Mockito/Jest/PyTest, your choice |
| Generate Documentation |
README/JavaDoc/function comments/API docs |
| Review Code |
Security, performance, best practices, bug detection |
| Generate SQL |
Schema, queries, optimization, indexes |
| Generate Regex |
From a plain-language description |
| Generate Dockerfile |
For the current project |
| Generate Kubernetes YAML |
Deployment/service manifests |
| Generate Git Commit Message |
From the current diff, with an option to fill the SCM input box |
| Explain Stack Trace |
Paste a trace, get a plain-language explanation |
| Generate REST API |
Scaffold endpoints from a description |
| Generate GraphQL API |
Schema + resolvers from a description |
| Generate Selenium Automation |
Page Object Model, TestNG/JUnit/Playwright/Appium |
| Generate API Automation |
Rest Assured or Postman |
| Generate JMeter Script |
Load-test plan from a description |
| Generate XPath / CSS Selector |
From a description or HTML snippet |
| Set API Key / Clear API Key |
Manage your NVIDIA, OpenRouter or AgentRouter key (stored in VS Code SecretStorage, never in settings.json) |
Setup
You can use NVIDIA, OpenRouter, AgentRouter, or all of them. Each keeps its own key, so set up several and switch whenever you like.
1. Get your keys
NVIDIA NIM (free models)
- Go to build.nvidia.com and create an account with any email address.
- Verify that email address (check your inbox for the confirmation link).
- Verify your account with a mobile phone number when prompted. API keys unlock only after this.
- Open your account/profile menu, generate a new API key and copy it.
OpenRouter (hundreds of models, one key)
- Sign up at openrouter.ai and add credits (most models are paid; ids ending in
:free are free).
- Open openrouter.ai/keys, create a key (it starts with
sk-or-v1-) and copy it.
No other install is needed.
AgentRouter (GPT models)
- Sign up at agentrouter.org (NimPilot's referral link).
- In the AgentRouter console, create a new API key (token) and copy it.
- Install the Codex CLI too: see AgentRouter setup below.
2. Add the keys in the chat
- Press Ctrl+Shift+P (Cmd+Shift+P on Mac), run NimPilot: Open Chat.
- Click Settings (the cog) at the top of the chat.
- In the provider list, pick NVIDIA NIM, paste your NVIDIA key and click Save Key.
- Pick OpenRouter, paste your OpenRouter key and click Save Key.
- Pick Codex CLI (e.g. AgentRouter), paste your AgentRouter key and click Save Key.
Keys are stored in your OS keychain through VS Code SecretStorage, never in settings.json. You can also run NimPilot: Set API Key from the Command Palette.
3. Pick a model
Click the model chip under the chat input. NVIDIA models, OpenRouter models (only those that support tool calling, which the agent needs; type in the filter box to find one) and AgentRouter models (such as gpt-5.6-sol) are listed under their provider. Picking one switches to that provider, with its own key.
AgentRouter setup
AgentRouter only serves supported clients, so NimPilot reaches it through the Codex CLI. Installing Codex is required to use AgentRouter. All the steps in one place:
- Install Node.js (LTS). Check it in a terminal:
node -v
- Install the Codex CLI:
npm install -g @openai/codex. Check it: codex --version
- Sign up at agentrouter.org (NimPilot's referral link), create an API key (token) and copy it.
- In VS Code, run NimPilot: Open Chat, click Settings (the cog), pick Codex CLI (e.g. AgentRouter), paste the key and click Save Key.
- Pick an AgentRouter model from the model chip, such as
gpt-5.6-sol.
That's all. You don't need codex login or any Codex settings: NimPilot runs Codex in its own folder and points it at AgentRouter with your key.
"The Codex CLI was not found" error? Close VS Code completely and open it again, so it picks up the new install. If it still happens, find where Codex is with which codex (where codex on Windows) and put that path in the aiCodingAssistant.codexCli.path setting, e.g. /opt/homebrew/bin/codex.
Settings
| Setting |
Default |
Description |
aiCodingAssistant.provider |
nvidia |
nvidia for NVIDIA NIM, openRouter for OpenRouter (no workspace indexing), or codexCli for AgentRouter through your installed Codex CLI (no embeddings or inline suggestions). Picking a model from the chip sets this for you |
aiCodingAssistant.model |
nvidia/nemotron-3.5-super-vl-120b-a12b |
NVIDIA NIM model (also switchable from the chip under the chat input) |
aiCodingAssistant.openRouter.model |
"" |
OpenRouter model, exactly as OpenRouter names it (e.g. anthropic/claude-sonnet-4). Empty means openai/gpt-4o (also switchable from the chip) |
aiCodingAssistant.codexCli.model |
"" |
AgentRouter model, exactly as AgentRouter names it. Empty means gpt-5.6-sol (also switchable from the chip) |
aiCodingAssistant.codexCli.path |
"" |
Path to the Codex CLI. Empty means codex from your PATH |
aiCodingAssistant.temperature |
0.2 |
Sampling temperature |
aiCodingAssistant.maxTokens |
4096 |
Max response tokens |
aiCodingAssistant.streaming |
true |
Stream chat responses |
aiCodingAssistant.modelFallback |
true |
On a model error (rate limit/5xx/forbidden), automatically retry the prompt against the rest of the free model catalog (see src/extension/providers/freeModels.ts) instead of failing |
aiCodingAssistant.systemPrompt |
"" |
Extra system prompt appended to every feature's built-in one |
aiCodingAssistant.inlineSuggestions.enabled |
false |
Ghost-text code suggestions while typing (uses a request per pause in typing) |
aiCodingAssistant.hooks |
{} |
Commands to run automatically: afterEdit (each file the agent edits, ${file} = its path) and afterTurn (after a turn that changed files). Workspace-level hooks only run in a trusted workspace |
aiCodingAssistant.autoApproveCommands |
[] |
Terminal command prefixes the agent may run without asking, e.g. ["npm test", "git status"] |
aiCodingAssistant.alwaysAskCommands |
rm, git push, sudo, … |
Commands that always need approval, even in a chat with Always Allow on (also when hidden in $(…) or quotes) |
aiCodingAssistant.terminalCommandTimeoutSeconds |
120 |
How long an agent terminal command may run (servers/watchers run in the background instead) |
aiCodingAssistant.checkDiagnosticsAfterEdit |
true |
Show the agent the editor's errors for each file it edits |
aiCodingAssistant.useProjectInstructions |
true |
Include NIMPILOT.md / AGENTS.md in every prompt |
aiCodingAssistant.skills.enabled |
true |
Offer the agent the skills in .nimpilot/skills and .claude/skills |
aiCodingAssistant.mcpServers |
{} |
MCP servers whose tools the agent can use (same shape as .mcp.json) |
aiCodingAssistant.mcp.loadProjectServers |
true |
Also use a trusted workspace's .mcp.json, after you allow each server |
aiCodingAssistant.summarizeCompletedPlanSteps |
true |
Replace a finished plan step's tool output with a short summary |
aiCodingAssistant.contextBudgetChars |
120000 |
Size at which old tool output in a long turn is replaced with placeholders |
See docs/installation.md, docs/deployment.md, and docs/security-notes.md for more.
Build from source
npm install
npm run build # bundles the extension host + webview
Press F5 in VS Code to launch an Extension Development Host with it loaded, or package it:
npx vsce package
code --install-extension nimpilot-<version>.vsix
Testing
CI (.github/workflows/ci.yml) runs typecheck, lint, unit tests and both builds on every push and pull request, then the E2E suites in a real VS Code under xvfb, and builds and tests the IntelliJ plugin.
npm test
Vitest unit + integration suite covering providers, storage, prompts, context formatting, RAG, the agent loop and tools, the webview, and the backend REST API.
npm run test:e2e
End-to-end suites in a real VS Code Extension Development Host against a local mock model server: command registration, plan approval, memory tools, PR flow (real git), diagnostics (real TypeScript server), and command cards (a real shell: Always Allow for the chat, the IN/OUT box, opening the whole output).
The agent's model/tool calls, timings and token counts are logged to the NimPilot: Agent Log output channel; each reply's token usage is shown under it.
License
MIT — see LICENSE.