Electron main + workbench + Void contrib.
Elcro is an Electron app:
┌─────────────────────────────┐
│ Browser / Workbench │ React sidebar, chat, settings
│ src/vs/workbench/contrib/void/
└─────────────┬───────────────┘
│ IPC channels
┌─────────────▼───────────────┐
│ Electron main │ LLM HTTP, MCP clients, Agent Browser
│ electron-main/ │
└─────────────────────────────┘
AI product code lives primarily under src/vs/workbench/contrib/void/ with browser/, common/, electron-main/, and test/.
Why main-process LLM calls?
Sending LLM traffic from main avoids browser CSP issues with local providers and allows Node modules (MCP SDK, Playwright-backed browser session).