GPUniq for VS Code & Cursor
Find every LLM API call in your workspace, see exactly what it would look like
routed through GPUniq, and apply the change with one click.
What it does
Sign in with an emailed code or a pasted API key — both reach the same
functionality, and the credential lives in the editor's secret storage.
Run the analysis. GPUniq scans the workspace for calls to OpenAI,
Anthropic, Google, DeepSeek, LangChain and hand-rolled HTTP requests, then
proposes a migration for each one, shown as a before/after diff.
Every migrated call site becomes an event. The rewrite does two things:
it points the client at GPUniq's OpenAI-compatible endpoint, and it moves the
model and the system prompt out of the code into a /v1/events entry. The code
then passes an opaque tag as model, and the backend resolves it — so changing
the model or the prompt afterwards is a dashboard edit, not a deploy. The same
mechanism gives you A/B tests over models and prompts for free.
See what it saves. Each finding is priced against the vendor's list price,
blended into one estimate for the workspace. Models with no published vendor
price are shown without a figure rather than with a guessed one.
Commands
| Command |
Id |
| GPUniq: Run Cost Analysis |
gpuniq.runAnalysis |
| GPUniq: Focus Sidebar |
gpuniq.focusSidebar |
| GPUniq: Open |
gpuniq.openPanel |
| GPUniq: Sign Out |
gpuniq.signOut |
| GPUniq: Show Logs |
gpuniq.showLogs |
| GPUniq: Show Version |
gpuniq.showVersion |
Settings
| Setting |
Default |
Description |
gpuniq.apiBaseUrl |
https://api.gpuniq.com |
Base URL of the GPUniq API. |
Development
npm install
npm run dev # esbuild watch (extension host + webview)
Press F5 ("Run Extension") to launch an Extension Development Host.
npm run typecheck # tsc for both bundles
npm run lint
npm test # 37 unit tests in plain node, no editor needed
npm run test:integration # 14 tests inside a real VS Code
npm run build # production bundles into dist/
npm run package # typecheck + test + build + gpuniq-<version>.vsix
Architecture
src/ extension host (Node)
extension.ts composition root — wiring only
shared/protocol.ts typed host <-> webview contract (imported by both)
api/GPUniqClient.ts the only place that speaks HTTP
auth/AuthService.ts email code + API key, stored in SecretStorage
scan/ detectors (data), source lexer, extraction, walk
rewrite/ assisted rewrite + deterministic fallback
prompts/ every prompt, one per file
pricing/ vendor price vs GPUniq catalog price
apply/ WorkspaceEdit + native diff provider
app/AppController.ts state, intents, event creation
view/ sidebar view and editor panel over one WebviewHost
webview/ React 18 + TypeScript UI
tests/ unit suites (node:test) + integration suite (real VS Code)
docs/ ARCHITECTURE.md, LLM_MAINTENANCE.md
docs/ARCHITECTURE.md explains the flow and why there is no dedicated backend.
docs/LLM_MAINTENANCE.md maps "the user wants X changed" to the file to open —
written for an AI assistant maintaining this code in a customer's repo.
Publishing
VS Code Marketplace (vsce) and Open VSX (ovsx) — Cursor installs from Open VSX.
npm run publish:vscode
npm run publish:openvsx -- -p <token>
License
MIT