Coding Agents and IDEs
Overview
Coding agents are AI‑driven assistants that can turn natural‑language prompts, comments, or partial snippets into fully‑formed, context‑aware code and can be run via a terminal, embedded directly inside an IDE or editor. They can also perform tasks such as autocompleting a line, generating whole functions, writing unit tests, debugging and running code—all by querying a large language model (LLM) behind the scenes. ARC’s hosted LLMs are compatible with many modern IDEs and AI coding agents that support OpenAI-compatible APIs. There are many IDEs available, and their AI integration features evolve frequently. ARC focuses on providing guidance specific to connecting to ARC resources. In general, connecting an IDE-based AI assistant (coding agent) to ARC’s LLM service follows this process:
Install and enable the IDE’s AI or LLM integration plugin (extension)
Obtain an ARC API key from https://llm-api.arc.vt.edu
Configure the AI assistant (coding agent) to use an OpenAI-compatible endpoint
API URL:
https://llm-api.arc.vt.edu/api/v1/chat/completionsProvide your private ARC API key
Select the appropriate ARC-hosted model (e.g.,
Kimi-K2.6,gpt-oss-120b)Configure model capabilities (tool calling, vision, thinking) if supported
Set token limits as appropriate (e.g., a
131072-token context window, with16384reserved for output)
You can use some of the most widely used coding agents with ARC’s hosted LLMs by pointing them to ARC’s API endpoint. On this page, we provide instructions to connect OpenCode, Claude Code, VS Code, and IntelliJ IDEA to ARC’s LLMs.
Note
These instructions use ARC’s shared API at https://llm-api.arc.vt.edu. You can also connect to a dedicated LLM session via Open OnDemand by using that session’s base URL and API key instead.
Caution
Be very careful letting AI agents run commands on their own if you are connecting to ARC. Do not approve commands that are potentially destructive, could access data owned by other users, or could otherwise be harmful to our systems.
OpenCode
OpenCode is an open source agent that helps you write code in your terminal, IDE, or desktop. You can use OpenCode on your local machine and then connect to ARC’s LLMs with the following workflow.
First, install OpenCode by following OpenCode’s official install instructions for your platform — there are several install methods (curl, npm, Homebrew, and others). On Windows, OpenCode recommends installing and running it inside WSL for the best experience.
Next, add ARC as a provider in your OpenCode config. OpenCode reads a global config file at ~/.config/opencode/opencode.json on macOS and Linux (and on Windows under WSL).
If you do not already have a config file, create one with the contents below. If you already use OpenCode, you only need to merge the provider block (the ARC entry) into your existing config — and optionally set "model" — leaving the rest of your configuration untouched.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ARC": {
"name": "ARC",
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://llm-api.arc.vt.edu/api/v1",
"apiKey": "sk-XXXXXXXXXXXXXXXXXX"
},
"models": {
"gpt-oss-120b": { "name": "gpt-oss-120b", "limit": { "context": 131072, "output": 16384 } },
"GLM-5.2": { "name": "GLM-5.2", "limit": { "context": 131072, "output": 16384 } },
"Kimi-K2.6": { "name": "Kimi K2.6", "limit": { "context": 131072, "output": 16384 } },
"MiniMax-M2.7": { "name": "MiniMax-M2.7", "limit": { "context": 131072, "output": 16384 } }
}
}
},
"model": "ARC/gpt-oss-120b"
}
Replace apiKey with your personal ARC API key and set "model" to your preferred default. Then run opencode to start.
Note
The model lists above show the primary model variants. Additional variants are listed on the ARC LLM API models page. They have been omitted here for brevity, but they follow the same configuration pattern.
Claude Code
Claude Code is an AI-powered coding assistant that can read your codebase, edit files, run commands, fix bugs, and automate development tasks. Both the Terminal CLI and VS Code extension versions can be used to connect to ARC’s LLMs.
Caution
Claude Code is built and tuned for Anthropic’s own models, and it is not an ideal client for ARC’s hosted models. Several features will be unavailable or unreliable when pointed at a custom endpoint, including web search, sub-agents, extended thinking, and prompt caching. It also assumes a 200,000-token context window for unrecognized models, so on ARC’s 131,072-token models a large prompt can exceed the real limit and fail mid-session with a maximum context length exceeded error and you will need to compact or clear the context manually. If you still want to use Claude Code, the configuration below sets a conservative output reservation to reduce (but not eliminate) context-overflow errors.
First, install the Claude Code CLI on your local system:
macOS / Linux / WSL:
curl -fsSL https://claude.ai/install.sh | bash
Windows (PowerShell):
irm https://claude.ai/install.ps1 | iex
Then you may connect your local Claude Code agent to ARC’s LLMs through the Open WebUI proxy by running the following:
export ANTHROPIC_BASE_URL="https://llm-api.arc.vt.edu/api/"
export ANTHROPIC_API_KEY="YOUR_OPEN_WEBUI_API_KEY"
export CLAUDE_CODE_MAX_OUTPUT_TOKENS=8192
claude --model Kimi-K2.6
Now to interact with your directories on the cluster - follow the steps in this next section
Interacting with ARC clusters via SSH
Claude Code can interact with your directories and ARC’s cluster resources like checking your jobs, staging files, or interacting with slurm, issuing SSH commands from your local CLI.
Claude Code (runs on your local system)
→ model inference via ARC's LLM API gateway (llm-api.arc.vt.edu)
→ cluster and slurm commands via SSH to the login node
Setting this up is very easy, just follow these 4 steps:
Step 1 — Set up SSH key authentication
Claude Code issues its own SSH commands independently of your terminal.
SSH keys with ssh-agent let you authenticate once per session — all subsequent calls, including those Claude issues, proceed silently.
Make sure you have this set up Setting up and using SSH Keys and ssh-agent
Update your ssh config on your local system nano ~/.ssh/config, so you won’t need to approve Duo requests for each prompt, see the sample below:
Host owl3
HostName owl3.arc.vt.edu
User YOUR_VT_PID
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Now verify the connection works:
ssh owl3.arc.vt.edu 'hostname; whoami; pwd'
Step 2 — Create a project folder and download CLAUDE.md
On your local system, you will need to create a directory and the claude.md file, Claude Code reads the CLAUDE.md from the directory at startup to guide its behaviour — context limits, unavailable proxy features, SSH approval rules, and HPC expectations.
mkdir -p ~/arc-claude-project && cd ~/arc-claude-project
curl -o CLAUDE.md https://raw.githubusercontent.com/AdvancedResearchComputing/examples/staging/LLM/claude-code/CLAUDE.md
Full file: CLAUDE.md
Step 3 — Start Claude Code
cd ~/arc-claude-project
claude --model Kimi-K2.6
Note
Keep approval gating on for your first few sessions. Once you trust the read-only commands (pwd, squeue, quota, ls), you can allow those without asking. Always require approval for job submissions and write commands.
Step 4 — Test the setup
Caution
Yes, another caution: always review commands before approving them. Don’t approve commands you’re not sure about, or that might access data owned by other users maybe in the same project directory you have access to, that could write changes to shared files. We recommend mostly using read-only prompts or working on new personal owned files.
Run these sample prompts to test your Claude Code is working with the cluster:
What to test |
Prompt |
|---|---|
Cluster identity |
|
Storage quota |
|
Running jobs |
|
Then you can type /exit or control ^C to exit your claude agent, and get back to the regular terminal.
Visual Studio Code
Visual Studio Code provides a built-in Chat/Agent view that supports language models from multiple providers, including custom endpoints. You can bring your own language model API key (BYOK) from ARC to use ARC-hosted LLMs directly in VS Code Chat without a GitHub Copilot plan.
You may use your https://llm-api.arc.vt.edu API key to connect VS Code Chat with ARC’s hosted LLMs.
The following instructions are based on VS Code’s language models documentation.
Note
Some features in VS Code still require a GitHub Copilot subscription: semantic search, inline suggestions (code completions), and features that rely on embeddings.
Add a custom endpoint model
The Custom Endpoint provider lets you connect any compatible API endpoint to chat in VS Code. It supports three API types: Chat Completions, Responses, and Messages. For ARC’s hosted LLMs, use the Messages API type.
To add an ARC-hosted model with the Custom Endpoint provider:
Run the Chat: Manage Language Models command from the Command Palette (open it with
Ctrl+Shift+Pon Windows/Linux orCmd+Shift+Pon macOS).Select Add Models, and then select Custom Endpoint from the list.
Enter a group name for the models, for example
ARC. This is the grouping label shown in the model picker and Language Models editor.Enter your ARC API key. VS Code writes this to the JSON file automatically as an editor secret which looks like
"${input:chat.lm.secret.xxxxxxx}".Select the API type: Messages.
VS Code opens a
chatLanguageModels.jsonfile where you can configure the model details. TheapiKeyis written by VS Code automatically based on the key you entered earlier. The only part you need to edit is themodelsarray. The following example configures four ARC-hosted models (GLM-5.2,Kimi-K2.6,MiniMax-M2.7, andgpt-oss-120b):[ { "name": "ARC", "vendor": "customendpoint", "apiKey": "${input:chat.lm.secret.xxxxxxx}", "apiType": "messages", // only modify this models array "models": [ { "id": "GLM-5.2", "name": "GLM-5.2", "url": "https://llm-api.arc.vt.edu/api/", "toolCalling": true, "vision": true, "maxInputTokens": 131072, "maxOutputTokens": 16384 }, { "id": "Kimi-K2.6", "name": "Kimi-K2.6", "url": "https://llm-api.arc.vt.edu/api/", "toolCalling": true, "vision": true, "maxInputTokens": 131072, "maxOutputTokens": 16384 }, { "id": "MiniMax-M2.7", "name": "MiniMax-M2.7", "url": "https://llm-api.arc.vt.edu/api/", "toolCalling": true, "vision": false, "maxInputTokens": 131072, "maxOutputTokens": 16384 }, { "id": "gpt-oss-120b", "name": "gpt-oss-120b", "url": "https://llm-api.arc.vt.edu/api/", "toolCalling": true, "vision": false, "maxInputTokens": 131072, "maxOutputTokens": 16384 } ] } ]
IntelliJ IDEA
Make sure IntelliJ is up to date (v.2025.3.2 or newer) and activate the native AI Plugin
Set the AI assistant plugin as follows

Activate the AI chat interface and enter your prompts


