SkillAgentSearch skills...

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-chat

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

50/100

Category

Automation

Supported Platforms

Claude Code
Claude Desktop
GitHub Copilot

Tags

{ "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

View on GitHub
GitHub Stars0
CategoryAutomation
UpdatedNaNy ago
Forks0

Security Score

68/100

Audited on Invalid Date

2 medium1 low