opencode-vscode-chat
Agentic coding panel for VS Code powered by the open-source OpenCode agent — bring your own models: 170+ cloud providers via API key, and/or local LM Studio, Ollama and vLLM servers.
Install / Use
claude mcp add cgaspard -- npx -y github:cgaspard/opencode-vscode-chatIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Skill content
View source on GitHub{
"name": "opencode-vscode-chat",
"displayName": "OpenCode Agent Panel",
"description": "Bring your own models: an agentic coding panel powered by the open-source OpenCode agent. Add API keys for Anthropic, OpenAI, Google, OpenRouter and 170+ more, and/or point it at a local LM Studio, Ollama or vLLM server.",
"version": "0.10.3",
"publisher": "cgaspard",
"license": "MIT",
"icon": "media/icon.png",
"opencodeVersion": "1.18.17",
"engines": {
"vscode": "^1.104.0"
},
"categories": [
"AI",
"Chat"
],
"keywords": [
"opencode",
"agent",
"byok",
"anthropic",
"openai",
"openrouter",
"lm studio",
"ollama",
"local llm",
"claude code",
"codex"
],
"repository": {
"type": "git",
"url": "https://github.com/cgaspard/opencode-vscode-chat"
},
"bugs": {
"url": "https://github.com/cgaspard/opencode-vscode-chat/issues"
},
"homepage": "https://github.com/cgaspard/opencode-vscode-chat#readme",
"main": "./dist/extension.js",
"activationEvents": [
"onStartupFinished"
],
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "opencodeChat",
"title": "OpenCode",
"icon": "media/activity-icon.svg",
"when": "opencodeChat:doesNotSupportSecondarySidebar"
}
],
"secondarySidebar": [
{
"id": "opencodeChatSecondary",
"title": "OpenCode",
"icon": "media/activity-icon.svg",
"when": "!opencodeChat:doesNotSupportSecondarySidebar"
}
]
},
"views": {
"opencodeChat": [
{
"id": "opencodeChat.chat",
"name": "OpenCode",
"type": "webview",
"when": "opencodeChat:doesNotSupportSecondarySidebar"
}
],
"opencodeChatSecondary": [
{
"id": "opencodeChat.chatSecondary",
"name": "OpenCode",
"type": "webview",
"when": "!opencodeChat:doesNotSupportSecondarySidebar"
}
]
},
"commands": [
{
"command": "opencodeChat.newChat",
"title": "OpenCode Agent: New Chat",
"icon": "$(add)"
},
{
"command": "opencodeChat.openInTab",
"title": "OpenCode Agent: Open Chat in Editor Tab",
"icon": "$(window)"
},
{
"command": "opencodeChat.history",
"title": "OpenCode Agent: Session History",
"icon": "$(history)"
},
{
"command": "opencodeChat.restartServer",
"title": "OpenCode Agent: Restart OpenCode Server"
},
{
"command": "opencodeChat.showLogs",
"title": "OpenCode Agent: Show Logs"
},
{
"command": "opencodeChat.focus",
"title": "OpenCode Agent: Focus Chat"
}
],
"configuration": {
"title": "OpenCode Agent",
"properties": {
"opencodeChat.autoDetectLocalServers": {
"type": "boolean",
"default": true,
"description": "On first run, probe the well-known local inference ports (LM Studio 1234, Ollama 11434, vLLM 8000) and offer any that answer as a ready-to-add provider. Purely local loopback requests; nothing is added without your confirmation."
},
"opencodeChat.opencodePath": {
"type": "string",
"default": "",
"description": "Override path to an opencode binary. Leave empty to use your own install (PATH, ~/.opencode/bin/opencode) if present, otherwise the binary bundled with this extension."
},
"opencodeChat.serverPort": {
"type": "number",
"default": 0,
"description": "Port for the embedded OpenCode server. 0 = pick a free port automatically."
},
"opencodeChat.defaultModel": {
"type": "string",
"default": "",
"markdownDescription": "Model to select by default, as provider/model (e.g. anthropic/claude-sonnet-4-6, or my-lmstudio/qwen3-coder-30b for a local endpoint). A bare model id matches that model under any configured provider. Empty = first available."
},
"opencodeChat.agent": {
"type": "string",
"default": "build",
"description": "Agent to select by default. 'build' edits your code; 'plan' is read-only. Any agent you define in .opencode/agent/.md (or ~/.config/opencode/agent/) can also be named here — it appears in the picker after the OpenCode server restarts."
},
"opencodeChat.autoEnsureContext": {
"type": "boolean",
"default": true,
"description": "For LM Studio endpoints only: before prompting, ensure the selected model is loaded with an adequate context length (via LM Studio's REST API, falling back to the lms CLI). Prevents the 'tokens to keep > context length' error from small default context windows. Ignored for cloud providers and for non-LM-Studio endpoints, which manage their own context."
},
"opencodeChat.minContextLength": {
"type": "number",
"default": 32768,
"description": "Minimum context length to (re)load LM Studio models with when autoEnsureContext is enabled. OpenCode's agent system prompt + tools alone use ~11k tokens, so keep this comfortably large."
},
"opencodeChat.defaultThinkingEffort": {
"type": "string",
"enum": [
"auto",
"off",
"low",
"medium",
"high",
"max"
],
"default": "auto",
"enumDescriptions": [
"Use each model's own default reasoning behavior",
"Suppress reasoning entirely",
"Minimal reasoning",
"Moderate reasoning",
"Deep reasoning",
"Deepest reasoning the model offers"
],
"description": "Starting reasoning effort for models you haven't set one for. Each model only offers the levels it actually declares (Anthropic exposes low/medium/high/max, OpenAI medium/high/xhigh, most local models on/off), and the picker snaps this preference to the nearest level the selected model supports. Models with no reasoning support hide the control entirely."
},
"opencodeChat.permissionMode": {
"type": "string",
"enum": [
"default",
"strict",
"bypass"
],
"default": "default",
"enumDescriptions": [
"Auto: safe actions run on their own; risky ones (files outside the workspace, .env reads) ask first — OpenCode's default posture.",
"Manual: every tool call asks for approval first.",
"Bypass: nothing asks — every tool call is auto-approved, including shell commands and file edits. Use only in workspaces you trust."
],
"description": "How the agent asks for tool-call approval. Also switchable from the permissions picker in the chat composer. A change restarts the local OpenCode server on its next request, which interrupts any response still streaming."
},
"opencodeChat.gpuOffload": {
"type": "string",
"default": "max",
"description": "LM Studio endpoints only: GPU offload ratio passed to 'lms load' when reloading a model for context (off | max | 0..1)."
},
"opencodeChat.healthCheckSeconds": {
"type": "number",
"default": 30,
"minimum": 5,
"maximum": 600,
"description": "How often (seconds) to re-probe your local endpoints and refresh model state while connected. Cloud providers are not polled — they are reachable whenever a key is stored. While disconnected the extension retries every 5 seconds regardless, and the model list refreshes immediately whenever the model picker is open. Takes effect within one poll cycle."
},
"opencodeChat.mcpServers": {
"type": "object",
"default": {},
"markdownDescription": "MCP (Model Context Protocol) servers to make available to the agent, as a map of name → server. Each server is either a local (stdio) command or a remote (http/sse) URL.\n\nServers configured for Claude Code (.mcp.json at the workspace root) and VS Code Copilot (.vscode/mcp.json and the user mcp setting) are also discovered automatically — use this setting to add servers specific to OpenCode Agent, or to override a discovered one. Entries here take precedence on a name collision.\n\nLocal (stdio) example:\njson\n{\n \"playwright\": { \"command\": \"npx\", \"args\": [\"-y\", \"@playwright/mcp@latest\"] }\n}\n\nRemote (http/sse) example:\njson\n{\n \"docs\": { \"type\": \"http\", \"url\": \"https://example.com/mcp\", \"headers\": { \"Authorization\": \"Bearer ${MY_TOKEN}\" } }\n}\n\n${VAR} references are resolved from the environment before launch. Set \"enabled\": false to keep a server defined but off. Note: each MCP server adds its tool schemas to the model's context, which is limited on local models — enable only what you need.",
"additionalProperties": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"local",
"stdio",
"remote",
"http",
"sse"
],
"description": "Transport. Local/stdio runs a command; remote/http/sse connects to a URL. Inferred from the fields when omitted."
},
"command": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"description": "Executable to run for a local server (string), with arguments in 'args'."
},
"args": {
"type": "array",
"items": {
"type": "string"
},
"description": "Arguments passed to the local server command."
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Environment variables for a local server. Values may use ${VAR} references."
},
"url": {
"type": "string",
"description": "Endpoint URL for a remote server."
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "HTTP headers for a remote server. Values may use ${VAR} references (e.g. an API token)."
},
"enabled": {
"type": "boolean",
"description": "Set false to keep the server defined but not started."
}
}
}
}
}
}
},
"scripts": {
"vscode:prepublish": "npm run package",
"compile": "npm run check-types && node esbuild.js",
"check-types": "tsc --noEmit",
"check-types:test": "tsc -p tsconfig.test.json",
"watch": "node esbuild.js --watch",
"package": "npm run check-types && node esbuild.js --production",
"bundle:opencode": "node scripts/fetch-opencode.js",
"changelog": "node scripts/render-changelog.js",
"package:vsix": "vsce package",
"package:vsix:bundled": "npm run bundle:opencode && vsce package --target ${VSCE_TARGET:-$(node -p "process.platform+'-'+process.arch")}",
"test": "npm run check-types:test && node esbuild.test.js && node --test "out-test/**/.test.js"",
"test:watch": "node esbuild.test.js && node --test --watch "out-test/**/*.test.js"",
"compile:integration": "tsc -p tsconfig.integration.json",
"te
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
76.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
ruflo
69.7k🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
career-ops
69.2kOpen-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)
headroom
68.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Security Score
Audited on Invalid Date
