OpenChamber spawns the OpenCode server as an external child binary (detached on Unix), so a hard crash, SIGKILL, or Ctrl+C of the host before graceful teardown could leave it running. Orphaned servers then accumulate and contend on the shared SQLite DB, causing severe startup slowdowns. Add a per-process registry plus a startup reaper, mirroring the pattern OpenCode's own CLI daemon uses for its detached server: - One file per spawned process at ~/.config/openchamber/managed-opencode/<pid>.json. Per-process files avoid the read-modify-write clobber race between concurrent runtimes/windows that a single shared file would suffer. - On spawn, record the child (pid, owner pid, port, binary, host runtime). - On graceful close/restart, delete the record. - On startup, reap only our own, verified, genuinely-orphaned processes: recorded by us AND still a live `opencode serve` on the recorded port AND whose spawner is provably gone (reparented to pid 1, or recorded owner dead). It never touches a process a live instance is using, the user's standalone server, the official desktop app, or the TUI. Wire it into every runtime that spawns the server: - web/desktop via the OpenCode lifecycle (register on spawn, unregister on close/restart, reap at startup). The restart-for-config-change flow inherits this automatically through the same kill/spawn paths. - VS Code carries a parity implementation (it does not bundle the web package) that reads/writes the same registry directory and uses the same algorithm. - Tag the actual host runtime (desktop/web/ssh-remote/vscode) for observability. Also tighten teardown so the registry stays accurate and orphans die promptly instead of only on the next start: - The web server now also handles SIGHUP and SIGUSR2 (terminal close and the nodemon restart used by dev:server:watch / dev:web:hmr). - Electron now installs SIGINT/SIGTERM/SIGHUP handlers that run the same background teardown as a normal quit, covering Ctrl+C on electron:dev. External OpenCode servers (OPENCODE_SKIP_START) are intentionally excluded: we never manage or kill processes we did not spawn.
OpenChamber VS Code Extension
OpenCode AI coding agent, right inside your editor. No tab-switching, no context loss.
Like the extension? There's also a desktop app and web version with even more features.
What you get
- Chat beside your code — responsive layout that adapts to narrow and wide panels
- Agent Manager — run the same prompt across multiple models in parallel, compare results side by side
- Right-click actions — add context, explain selections, and improve code in-place
- Click-to-open — file paths in tool output open directly in your editor; edit-style results land in a focused diff view
- Session editor panel — keep chat sessions open alongside files
- Theme-aware — adapts to your VS Code light, dark, and high-contrast themes
Plus everything from the shared OpenChamber UI: branchable timeline, smart tool UIs, voice mode, Git workflows, and more.
Commands
| Command | Description |
|---|---|
OpenChamber: Focus Chat |
Focus the chat panel |
OpenChamber: New Session |
Start a new chat session |
OpenChamber: Open Sidebar |
Open the OpenChamber sidebar |
OpenChamber: Open Agent Manager |
Launch parallel multi-model runs |
OpenChamber: Open Session in Editor |
Open current or new session in an editor tab |
OpenChamber: Settings |
Open extension settings |
OpenChamber: Restart API Connection |
Restart the OpenCode API process |
OpenChamber: Show OpenCode Status |
Debug info for development or bug reports |
Right-click menu
Select code in the editor, right-click, and find the OpenChamber submenu:
| Action | Description |
|---|---|
| Add to Context | Attach selection to your next prompt |
| Explain | Ask the agent to explain the selected code |
| Improve Code | Ask the agent to improve the selection in-place |
Configuration
| Setting | Default | Description |
|---|---|---|
openchamber.apiUrl |
(empty) | URL of an external OpenCode API server. Leave empty to auto-start a local instance. |
openchamber.opencodeBinary |
(empty) | Absolute path to the opencode CLI binary. Useful when PATH lookup fails. Requires window reload to apply. |
Requirements
- OpenCode CLI installed and available in PATH (or set
OPENCODE_BINARYenv var) - VS Code 1.85+
Development
bun install
bun run vscode:dev
bun run vscode:dev now starts watchers + opens an Extension Development Host automatically. Webview UI changes use Vite HMR automatically.
Optional overrides:
OPENCHAMBER_VSCODE_BIN=cursor bun run vscode:devOPENCHAMBER_VSCODE_DEV_WORKSPACE=/path/to/workspace bun run vscode:devbun run vscode:dev /path/to/workspace
To package manually:
bun run --cwd packages/vscode build
cd packages/vscode && bunx vsce package --no-dependencies
Install locally: code --install-extension packages/vscode/openchamber-*.vsix
License
MIT

