A VSCode sidebar extension for OpenCode - the AI coding agent. Simple chat interface to interact with OpenCode directly from your sidebar.
Note: This is an independent community project and is not officially affiliated with or maintained by the OpenCode team.
-
OpenCode CLI must be installed:
curl -fsSL https://opencode.ai/install | bash -
OpenCode must be configured with API credentials:
opencode auth login
Select your provider (OpenCode Zen, Anthropic, OpenAI, etc.) and add your API key.
pnpm installpnpm buildThis builds both:
- Extension code →
dist/extension.js - Webview UI →
out/main.jsandout/main.css
-
Start watch mode (in a terminal):
pnpm watch
-
Launch Extension Development Host:
- Press
F5in VSCode/Cursor - Or open Run and Debug panel (
Cmd+Shift+D) and click "Run Extension"
- Press
-
Use the extension:
- Look for the OpenCode icon in the Activity Bar (left side)
- Click it to open the sidebar
- Type a message and hit Send or press Enter
-
Extension code (src/extension.ts, src/OpenCodeService.ts, src/OpenCodeViewProvider.ts):
- Save your changes
- Reload the Extension Development Host window:
Cmd+R(Mac) orCtrl+R(Windows/Linux)
-
Webview UI (src/webview/App.tsx, src/webview/App.css, src/webview/hooks/):
- Changes hot-reload automatically
- Just save and see updates instantly
┌─────────────────────────────────────┐
│ SolidJS Webview (Chat UI) │
│ - Input box │
│ - Message history │
│ - Thinking indicator │
└──────────┬──────────────────────────┘
│ postMessage
▼
┌─────────────────────────────────────┐
│ Extension Host (Node.js) │
│ - OpenCodeService │
│ ├─ Manages OpenCode client │
│ ├─ Creates sessions │
│ └─ Sends prompts │
└──────────┬──────────────────────────┘
│ @opencode-ai/sdk
▼
┌─────────────────────────────────────┐
│ OpenCode Server (Bun process) │
│ - Spawned by extension backend │
│ - Uses workspace opencode.json │
│ - Handles AI interactions │
└─────────────────────────────────────┘
Extension Side (TypeScript/ESM):
src/extension.ts: Entry point, initializes OpenCodeServicesrc/OpenCodeService.ts: Manages OpenCode client/server, sessions, and promptssrc/OpenCodeViewProvider.ts: Webview provider, handles message passing
Webview Side (SolidJS):
src/webview/App.tsx: Chat UI with input, message history, thinking indicatorsrc/webview/App.css: Styles using VSCode theme variables
Build System:
vite.config.extension.ts: Bundles extension (ESM → CJS for VSCode)vite.config.ts: Bundles webview (SolidJS)
The extension automatically uses:
- Workspace
opencode.json(if present in project root) - Global OpenCode config at
~/.config/opencode/opencode.json
Example workspace config:
{
"model": "anthropic/claude-3-5-sonnet-20241022",
"mcp": {
// MCP server configurations
}
}opencode-gui/
├── src/
│ ├── extension.ts # Extension entry point
│ ├── OpenCodeService.ts # OpenCode client/server manager
│ ├── OpenCodeViewProvider.ts # Webview provider
│ └── webview/ # SolidJS UI
│ ├── App.tsx # Chat component
│ ├── App.css # Styles
│ ├── hooks/ # SolidJS hooks
│ ├── main.tsx # SolidJS entry point
│ └── vscode.d.ts # VSCode API types
├── media/
│ └── icon.svg # Activity bar icon
├── dist/ # Compiled extension (Vite output)
├── out/ # Compiled webview (Vite output)
├── vite.config.extension.ts # Extension build config
├── vite.config.ts # Webview build config
├── tsconfig.json # TypeScript config
└── package.json
- Extension: TypeScript (ESM), VSCode Extension API, OpenCode SDK
- Webview: SolidJS, TypeScript
- Build: Vite for both extension and webview
- Styling: CSS with VSCode theme variables
- Server: Bun (spawned process running OpenCode server)
✅ Simple chat interface ✅ Send prompts and get AI responses ✅ Thinking indicator during processing ✅ Message history (user and assistant) ✅ Workspace configuration support ✅ Full TypeScript type safety ✅ VSCode theme integration
- Real-time streaming responses
- File attachments from workspace
- Markdown rendering in responses
- Code syntax highlighting
- Multi-session support
- Session persistence
- Undo/redo functionality
To publish a new version:
- Bump the version in
package.json - Set environment variable:
export OVSX_PAT=your_open_vsx_token - Login to VS Code Marketplace:
npx vsce login <publisher> - Run:
pnpm publish
This publishes to both VS Code Marketplace and Open VSX Registry.
Note: You'll need:
- A VS Code Marketplace Personal Access Token (PAT) from Azure DevOps with "Marketplace (Manage)" scope
- An Open VSX token set as
OVSX_PATenvironment variable
"Failed to start OpenCode"
- Install OpenCode CLI: https://opencode.ai/install
- Make sure OpenCode CLI is installed and on PATH:
- macOS/Linux:
which opencode - Windows:
where opencode
- macOS/Linux:
- Configure authentication:
opencode auth login - If you installed OpenCode recently, fully restart VS Code so the extension host gets the updated PATH
"No response received"
- Check API credentials are valid
- Verify workspace has internet connection
- Check VSCode Developer Console for errors (Help → Toggle Developer Tools)
