VS Code Extension
VibeControls brings your agents, vibes, sessions, sandboxes, AI assistants, and Vibe Decks into VS Code so the work you do every day never leaves your editor.
Features
- Bind a folder to a vibe — open a project, see "Vibe: my-project" in the status bar, with sessions/notes/deck buttons one click away
- Open a remote session in an editor terminal — interactive PTY, attaches to any tmux / wezterm / zellij / SSH session on any agent in your workspace
- Send the current selection to AI — captures file path + language id and pipes it into the AI Hub with active-vibe context
- Copy a signed LLM Context URL — paste a governed slice of your project into Claude Code, Cursor, ChatGPT, or any MCP-compatible tool
- Fire Vibe Deck buttons — one-click run a script, command, or webhook on the agent without leaving VS Code
- Watch your fleet — agents, sessions, tunnels, sandboxes, notes, targets all live in the side bar with live counts in the status bar
Install
Install from the VS Code Marketplace or sideload a local build:
git clone https://github.com/algoshred/vibecontrols-code-extension.git
cd vibecontrols-code-extension
bun install
bunx @vscode/vsce package # produces vibecontrols-<version>.vsix
code --install-extension vibecontrols-<version>.vsix
Environment selection
The extension resolves GraphQL endpoints, OIDC issuer, and dashboard URLs from BURDENOFF_ENV:
BURDENOFF_ENV=local # http://127.0.0.1:4003 / http://127.0.0.1:4000
BURDENOFF_ENV=alpha # alphagraphqlworkspaces / alphagraphql / alphaapp.vibecontrols.com
BURDENOFF_ENV=prod # graphqlworkspaces.burdenoff.com / graphql.burdenoff.com (default)
When BURDENOFF_ENV is unset or invalid, the extension defaults to prod so Marketplace installs work without configuration.
VS Code settings under vibecontrols.* override the env-derived defaults. Local development is usually:
BURDENOFF_ENV=local code .
Configuration
The extension reads from VS Code settings (vibecontrols.*):
| Setting | Default | Description |
|---|---|---|
vibecontrols.workspaceEndpoint | env-derived | Workspace gateway GraphQL endpoint. Settings override BURDENOFF_ENV. |
vibecontrols.globalEndpoint | env-derived | Global gateway GraphQL endpoint. Settings override BURDENOFF_ENV. |
vibecontrols.oidcIssuer | env-derived | OIDC issuer URL. Settings override BURDENOFF_ENV; auto-derived from Global Endpoint if empty. |
vibecontrols.clientId | built-in | OAuth 2.0 client ID (uses built-in default if empty) |
vibecontrols.workspaceId | — | Workspace ID (auto-set after login) |
vibecontrols.defaultAgent | — | Default agent ID for quick operations |
Self-hosted Burdenoff customers can point these settings at their own gateway URLs.
Build
bun install
bun run build # production webpack build
bun run build:dev # development build
bun run dev # watch mode
bun run build emits dist/extension.js and the webview bundles under webview-ui/dist/.
Test
bun run compile # compile src
bun run compile:test # compile tests
bun run lint # ESLint
bun run typecheck # tsc --noEmit
bun run test # full VS Code extension-host test suite
bun run smoke:build # verify build artifacts exist and are non-empty
bun run sanity # all checks (lint + typecheck + compile + build + compile:test + test)
On Linux without a display, the test runner skips the extension-host suite unless VIBECONTROLS_FORCE_EXTENSION_TESTS=true is set. In CI or with xvfb:
xvfb-run -a env VIBECONTROLS_FORCE_EXTENSION_TESTS=true bun run test
Open the repo in VS Code and press F5 to launch the Extension Development Host with the latest source.
Commands
The command palette exposes production commands grouped by domain. Top-of-mind ones:
| Command | Shortcut | What it does |
|---|---|---|
VibeControls: Quick Pick | Ctrl+Shift+V | Fuzzy palette across vibes / sessions / agents / decks |
VibeControls: Open Vibe Deck | Ctrl+K Ctrl+D | Opens the active vibe's deck |
VibeControls: Open AI Hub | Ctrl+K Ctrl+A | Opens the AI hub panel |
VibeControls: Send Selection to AI | — | Pipes the editor selection into the AI hub |
VibeControls: Copy LLM Context URL | — | Mints + copies a signed context URL for the active vibe |
VibeControls: Bind Folder to Vibe | — | Links the open VS Code folder to a vibe |
VibeControls: Sign In / Sign Out / Switch Workspace | — | Auth flows |
VibeControls: Refresh All | — | Reloads every tree view |
Run VibeControls: … in the command palette to see the full list.
Troubleshooting
- "Agent unreachable" when opening a terminal → agent is offline, tunnel revoked, or your network blocks the agent host. The extension surfaces a deep-link to the web app session viewer as a fallback.
- Tree views empty after sign-in → run
VibeControls: Refresh All; if still empty, your workspace token may be missing —VibeControls: Switch Workspacere-mints it. - Build/dev: run
bun install && bun run sanityin the repo root. - Logs:
View > Output > VibeControlsfor extension host logs; webview-side errors land in the panel's DevTools.
Source
- Repository:
github.com/algoshred/vibecontrols-code-extension - Published on the VS Code Marketplace