Agentic Coding — IDE & CLI Agent Integration
How AI engineers and developers connect coding tools to the locally-served model. The endpoint is OpenAI-compatible, so any tool that accepts a custom base URL works. This guide covers four validated tools — OpenCode, Claude Code, Continue.dev, and Codex — plus GitHub Copilot CLI (BYOK, configured per upstream docs) and generic OpenAI-compatible clients.
Connection details
| Setting | Value |
|---|---|
| Base URL | http://<deskside-host>:8000/v1 |
| Model name | nvidia/nemotron-3.5-lightning (served name; see the recipe) |
| API key | Any non-empty string for direct local use; a real key when fronted by the gateway |
| Streaming | Supported (recommended for interactive coding) |
Replace <deskside-host> with localhost for local use, or the host IP/hostname
for remote access.
Context & output limits — align every client to the recipe you run
Agent CLIs send tens of thousands of tokens of system prompt + tool schemas and often ask for 16–32K output tokens. A client that does not know the server window gets opaque HTTP 400 "maximum context length" errors or compaction loops The window is a recipe setting, not a model constant:
| Recipe | Served name(s) | --max-model-len (window) |
Recommended client max_output / prompt budget* |
|---|---|---|---|
gb10 Lightning |
nvidia/nemotron-3.5-lightning (aliases nemotron-lightning, lightning) |
200000 | 16384 / 182592 |
precision Lightning (T2/T4/T6) |
same | 200000 | 16384 / 182592 |
gb300 Lightning |
same | 200000 | 16384 / 182592 |
gb10 Qwen3.8-27B |
qwen3.8-27b |
262144 | 16384 / 244736 |
precision Flash-Next |
qwen3.8-flash-next |
262144 | 16384 / 244736 |
gb300 GLM-5.3-Flash |
glm-5.3-flash |
262144 | 16384 / 244736 |
precision Nemotron 3.5 Super VL |
nvidia/nemotron-3.5-super-vl (alias nemotron-3.5-super-vl) |
200000 | 16384 / 182592 |
gb300 Nemotron 3.5 Super VL (L default) |
same | 262144 | 16384 / 244736 |
*Rule (recipes/lib/common.sh: ds_client_limits): max_output = min(16384, window/8)
rounded to 512 (never below 512 — reasoning models need room to answer);
prompt budget = window − max_output − 1024 safety margin. If you override
--max-model-len, the numbers change — do not copy them from this table.
Do not hand-copy. Every recipe prints these limits in its READY {...} line
(max_model_len, client_max_output_tokens, client_prompt_budget_tokens), and this
generates paste-ready configs for OpenCode, Codex, Continue, Claude Code and Copilot CLI
from the running endpoint:
recipes/lib/client-config.sh --port 8000 --served nvidia/nemotron-3.5-lightning --host <deskside-host>
# or one tool: --tool opencode|codex|continue|claude|copilot
The generated key names (limit.context/output, model_context_window,
defaultCompletionOptions, CLAUDE_CODE_MAX_OUTPUT_TOKENS, COPILOT_PROVIDER_MAX_*)
come from each client's documentation and are not validated against client binaries
here — confirm against your installed version. Every agentic-coding recipe now
serves a 200K window (Copilot's recommended ≥128K is covered); raise
--max-model-len further (costs KV cache, i.e. concurrency) when a task needs it.
Protocol support observed on the live GLM-5.3-Flash image
(vllm/vllm-openai:glm53-flash-arm64-cu130, 2026-10-19): /v1/chat/completions,
/v1/responses (Codex) and /v1/messages (Claude Code) all returned HTTP 200. The
Lightning and Super VL recipes were not re-probed — check
curl -s localhost:8000/v1/messages ... on your pinned image before relying on Claude Code.
OpenCode (CLI coding agent)
Reference: CLI Coding Agent (DGX Spark).
Install
# npm (globally)
npm install -g opencode-ai
# or run directly
npx opencode-ai
Configure
Create ~/.config/opencode/config.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"dell-deskside-agentic": {
"npm": "@ai-sdk/openai-compatible",
"name": "Dell Deskside Agentic AI Solutions (local vLLM)",
"options": {
"baseURL": "http://localhost:8000/v1",
"apiKey": "local"
},
"models": {
"nvidia/nemotron-3.5-lightning": {
"name": "Nemotron 3.5 Lightning - local"
}
}
}
},
"model": "dell-deskside-agentic/nvidia/nemotron-3.5-lightning"
}
Verify
opencode
# In the OpenCode CLI, type: "Write a Python function to reverse a string."
# Expected: model generates code using the local vLLM endpoint
Claude Code (Anthropic CLI)
Install
npm install -g @anthropic-ai/claude-code
Configure
Create ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:8000",
"ANTHROPIC_AUTH_TOKEN": "local",
"ANTHROPIC_MODEL": "nvidia/nemotron-3.5-lightning",
"ANTHROPIC_SMALL_FAST_MODEL": "nvidia/nemotron-3.5-lightning"
}
}
Or set environment variables:
export ANTHROPIC_BASE_URL="http://localhost:8000"
export ANTHROPIC_AUTH_TOKEN="local"
export ANTHROPIC_MODEL="nvidia/nemotron-3.5-lightning"
export ANTHROPIC_SMALL_FAST_MODEL="nvidia/nemotron-3.5-lightning"
claude
Verify
claude "What is 2 + 2?"
# Expected: response from the local Nemotron model
Continue.dev (VS Code / JetBrains)
Reference: Vibe Coding in VS Code (DGX Spark).
Install
Install the Continue extension from the VS Code or JetBrains marketplace.
Configure
Create ~/.continue/config.yaml:
name: Dell Deskside Agentic AI Solutions
version: 0.0.1
schema: v1
models:
- name: Nemotron 3.5 Lightning (local vLLM)
provider: openai
model: nvidia/nemotron-3.5-lightning
apiBase: http://localhost:8000/v1
apiKey: local
roles:
- chat
- edit
- apply
- name: Nemotron 3.5 Lightning (autocomplete)
provider: openai
model: nvidia/nemotron-3.5-lightning
apiBase: http://localhost:8000/v1
apiKey: local
roles:
- autocomplete
Or use the JSON format (~/.continue/config.json):
{
"models": [
{
"title": "Dell Deskside Agentic Coding",
"provider": "openai",
"model": "nvidia/nemotron-3.5-lightning",
"apiBase": "http://localhost:8000/v1",
"apiKey": "local"
}
]
}
Verify
Open VS Code, open the Continue sidebar (Ctrl+L), and ask: "Write a unit test for the function under the cursor." A response confirms the model, base URL, and streaming are wired correctly.
Codex (OpenAI CLI)
Codex — OpenAI's terminal coding agent — speaks the OpenAI Responses API.
The vllm/vllm-openai images serve /v1/responses, so Codex needs only a
custom provider entry, no proxy.
Configure
# ~/.codex/config.toml
model_provider = "deskside"
model = "nvidia/nemotron-3.5-lightning"
[model_providers.deskside]
name = "Dell Deskside vLLM"
base_url = "http://localhost:8000/v1"
env_key = "DESKSIDE_API_KEY"
wire_api = "responses"
Run
export DESKSIDE_API_KEY=local
codex exec --skip-git-repo-check "Summarize this repository in 3 bullets"
Verify
# One-shot round trip — tool calling is exercised automatically
# (Codex always ships its shell tool in the request).
DESKSIDE_API_KEY=local codex exec --skip-git-repo-check --sandbox read-only \
"Run echo CODEX_OK and report exactly what it printed"
Notes: a Model metadata for ... not found warning is expected for local
served names and is harmless. The Codex sandbox uses bubblewrap, which needs
unprivileged user namespaces (enabled by default on Ubuntu 24.04). Recent
Codex releases require wire_api = "responses"; there is no chat fallback.
GitHub Copilot CLI (BYOK)
Reference: Adding LLM models to GitHub Copilot CLI.
Copilot CLI supports bring-your-own-key providers; the default openai
provider type covers any OpenAI Chat Completions-compatible endpoint — vLLM
is explicitly supported. The model must support tool calling and
streaming (Lightning does both). GitHub recommends ≥128K context for best
results; the recipe serves 200K by default — raise --max-model-len further if
AI memory allows.
Configure
Set provider environment variables before starting the CLI. No API key is required for an unauthenticated local endpoint; use a real key when fronted by the gateway:
export COPILOT_PROVIDER_BASE_URL="http://localhost:8000/v1"
export COPILOT_PROVIDER_API_KEY="local" # any non-empty string; omit if truly unauthenticated
export COPILOT_MODEL="nvidia/nemotron-3.5-lightning"
copilot
Offline mode (air-gapped desks)
export COPILOT_OFFLINE=true
This keeps the CLI from contacting GitHub's servers. Full network isolation
holds only when COPILOT_PROVIDER_BASE_URL also points at a local endpoint
(upstream caveat — a remote base URL still ships prompts off-box).
Verify
In the Copilot CLI, ask: "List the files under src/ and summarize the entry
point." A streamed reply that used file tools confirms model, tools, and the
local endpoint are wired.
IDE extension: this BYOK path is for the Copilot CLI. Copilot inside VS Code / JetBrains uses GitHub-hosted models unless your org enables custom models there — on locked-down desks use the CLI, or one of the tools above.
Generic CLI agents (OpenAI-compatible)
Most CLI agents (Aider, Cline, etc.) read standard OpenAI env vars:
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="local"
export OPENAI_MODEL="nvidia/nemotron-3.5-lightning"
JetBrains AI Assistant
Use an OpenAI-compatible AI assistant plugin; set the base URL to
http://<host>:8000/v1 and the model to nvidia/nemotron-3.5-lightning.
AGENTS.md skills
AGENTS.md is a widely used convention across coding agents. Point coding agents at the
project's AGENTS.md so they inherit repo conventions and skills.
Application compatibility matrix
| Tool | Connection method | Chat | Autocomplete | Tool calling | Validated |
|---|---|---|---|---|---|
| OpenCode | OpenAI-compatible provider | Yes | N/A (CLI) | Yes | GB10 |
| Claude Code | Anthropic base URL override | Yes | N/A (CLI) | Yes | GB10 |
| Continue.dev | OpenAI provider config | Yes | Yes | No | GB10 |
| Codex | config.toml provider (Responses API) | Yes | N/A (CLI) | Yes | GB300 |
| GitHub Copilot CLI | BYOK env vars (OpenAI-compatible) | Yes | N/A (CLI) | Required | Upstream docs |
Running coding agents safely (read before pointing an agent at a shared box)
Coding agents run shell commands with your user's privileges and read repository content that may carry prompt
injection. This repo does not (yet) sandbox them for the Agentic Coding solution (the NemoClaw solutions
use OpenShell policy tiers for this purpose). Until then:
* keep the client in its read-only / ask-before-run permission mode (e.g. Codex --sandbox read-only); do not use
"skip permissions" switches on a machine that holds credentials;
* give each agent/user its own API key once you front the endpoint (DESKSIDE_API_KEY, or the LiteLLM front door's keys)
so one runaway agent can be identified and revoked — per-key rate limits need a gateway;
* do not expose the endpoint beyond the LAN segment it is needed on (--bind); it is unauthenticated by default.
Multi-user note
For shared/team use, point IDEs at the gateway URL (not the raw :8000) so
auth and rate limiting apply. See IT-Admin Guide.