Omnigent for VS Code
A minimal VS Code extension that opens your running local Omnigent server inside
the editor — an editor-beside pane that iframes the same UI you see at
http://127.0.0.1:6767. It is a thin client of the local server's existing HTTP API
(server/API.md); there is nothing new to run on the server side.
This is the first, deliberately small donation (tracking omnigent-ai/omnigent#1219): localhost discovery, the editor iframe pane, and the activity-bar / editor-title icons. Sessions, diffs, send-selection, and remote/embedded rendering are intentionally out of scope for now.
How it works
- On activation the extension discovers a locally running server via
~/.omnigent/local_server.pidand a/healthprobe (or usesomnigent.serverUrlwhen set to a localhost URL). - The Omnigent activity-bar view offers an Open Omnigent button. The
Omnigent: Open command (
omnigent.open) — also on the editor title bar and in the command palette — opens an editor-beside pane that frames the running server. - The iframe path is used for local servers only; a local server is loopback and needs no auth, so no token ever appears in the iframe URL.
Settings
| Setting | Default | Purpose |
|---|---|---|
omnigent.serverUrl |
"" |
Manual localhost server URL override (e.g. http://127.0.0.1:6767); empty = auto-discover. Non-localhost URLs are not supported in this build. |
Known limitation
On macOS, VS Code does not deliver Cmd+A/C/V keystrokes into a cross-origin iframe
inside a webview, so keyboard paste into the framed app's inputs does not work there.
This is an upstream VS Code issue, not fixable from the extension for the iframe render
path — see microsoft/vscode#129178 and microsoft/vscode#182642. (The on-page copy
buttons and navigator.clipboard paths still work.)
Build / test / package
npm ci
npm run type-check # tsc --noEmit
npm run test # vitest run
npm run build # esbuild -> dist/extension.js
npm run package # @vscode/vsce package -> omnigent-vscode-<version>.vsix
Install the resulting .vsix via the Extensions view → "Install from VSIX…". The
.vsix runtime is dist/extension.js + media/.
Layout
src/
├── extension.ts # activate()/deactivate() — wires discovery + panel + command + view
├── commands/openPanel.ts # the omnigent.open command
├── panel/ # EditorPanelController, host.ts (render), iframeHtml.ts, csp.ts
├── config/ # settings + localhost server-target resolution
└── discovery/ # local-server discovery (pidfile / health / liveness)
Licensed under Apache-2.0 (see LICENSE). Contributions require a DCO sign-off
(git commit -s), per the repository CONTRIBUTING.md.