Skip to content
| Marketplace
Sign in
Visual Studio Code>AI>Adiu AgentsNew to Visual Studio Code? Get it now.
Adiu Agents

Adiu Agents

adiu

|
1 install
| (0) | Free
Run and supervise LLM agent harnesses (omp, opencode, any CLI agent) against any OpenAI-compatible endpoint, with a live per-folder, per-agent status panel.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
Adiu Agents

Adiu Agents

Supervise CLI coding agents from VS Code. Launch an agent in any folder, watch it work, answer its questions, and review what it changed — with the same supervision whether it runs as an OpenAI-compatible JSON stream, an opencode server, or a plain CLI process.

license VS Code embedded terminal telemetry


Why another agent UI

Agent CLIs are good at the work and bad at being watched: one terminal per task, scrollback you cannot search, no idea which of the six windows needs you, and a session that dies with the SSH connection. Adiu Agents keeps the harness exactly as it is — the omp / opencode / custom binary you already run — and adds the missing layer around it:

  • a panel that answers "which agent needs me?" — per folder, per agent, with state, model, tokens and cost;
  • a detail tab per agent — transcript, live terminal, follow-ups, interrupt, and the diff of what changed in the folder;
  • a detached shim — the harness survives window reloads and dropped SSH connections;
  • one place for endpoints — base URL, model and TLS per endpoint, keys in VS Code's secret storage, never in settings.json.

Features

Multi-agent panel Every agent grouped by folder, with a live state indicator, model, elapsed time and token/cost counters.
Agent detail tab Streaming transcript (messages, tool calls, reasoning), folder identity, harness and endpoint, one-click actions.
Real terminal An xterm.js terminal bound to the same pty the harness runs in — type into the agent's process, not a copy of it.
Terminal grid Alternative, tmux-backed grid of panes for terminal-first users, with the same launch environment.
Follow-ups Send another prompt into a running session, or interrupt the current turn.
Survives reloads A small detached shim holds the harness and its unix socket; reload the window, reconnect SSH, re-attach.
Any OpenAI-compatible endpoint LiteLLM, vLLM, OpenAI, OpenRouter, an in-house gateway: base URL, optional CA bundle, per-endpoint default model.
Any harness omp-json, opencode-server, or generic (any command that accepts a prompt and a model flag).
Change review git status plus a working-tree diff of the agent's folder, rendered in the detail tab.
Reproducible launches "Copy launch command" gives you the exact command line and environment to run it yourself.
Discovery If the environment already knows an endpoint (OPENAI_BASE_URL, a deployment module), the extension offers it instead of asking.

Adiu Agents icon

Install

Marketplace — search for Adiu Agents (adiu.adiu-agents) in the Extensions view.

From a VSIX

code --install-extension adiu-agents-<version>.vsix

Requirements:

  • VS Code 1.85 or newer;
  • at least one agent harness binary (omp, opencode, or your own);
  • an OpenAI-compatible endpoint and its key;
  • optional: tmux for the terminal grid;
  • optional: the embedded terminal — see Platform notes.

Quick start

  1. Add an endpoint — Adiu Agents: Add / edit endpoint. Name, base URL, optional CA bundle and default model. The API key goes to the secret storage when asked; it is never written to settings.json. Use Adiu Agents: Test endpoint to check reachability and model listing.
  2. Add a harness — Adiu Agents: Add / edit harness. Give it a name, a kind (omp-json, opencode-server, generic) and the binary to run.
  3. Launch — right-click a folder in the Explorer → Launch agent (or the command palette), pick endpoint, harness and model. The agent appears in the Adiu Agents activity-bar panel.
  4. Watch and steer — open the agent detail tab for the transcript, the terminal, follow-ups, and the diff. Kill or interrupt from the panel at any time.

Concepts

Agent = one harness process, started in one folder, against one endpoint and model. Its state is derived from the harness's own event stream, not from heuristics:

State Meaning
starting process spawned, no event yet
working the harness is producing events
waiting-input the harness asked a question and is blocked on you
done the turn or session finished cleanly
error the harness exited non-zero
cancelled you killed or interrupted it
detached the window is gone; the shim (and the harness) are still alive

Shim = the detached process that owns the harness and a unix socket. It keeps running when the VS Code window closes, streams events into events.jsonl, caps the log file, and reconnects on demand. Restarting the window does not restart the agent.

Harness kinds

Kind Runs Notes
omp-json omp --mode json … Structured event stream, resumable sessions (-r), embedded terminal can attach to the session.
opencode-server opencode serve --port 0 Session lives in the HTTP server; the terminal attaches while the server runs.
generic your command with --model <…> Streams are read from the process output; optional log file to tail as transcript.

Endpoints and model routing

adiuAgents.endpoints is a non-secret list; the key lives in the VS Code secret storage, keyed by endpoint id. A launch passes the endpoint to the harness through the standard environment (OPENAI_BASE_URL, OPENAI_API_KEY, SSL_CERT_FILE when a CA is configured), for the lifetime of that process only.

{
  "adiuAgents.endpoints": [
    {
      "id": "local-gateway",
      "name": "Lab gateway",
      "baseUrl": "https://llm.example.org/v1",
      "caPath": "/etc/ssl/certs/lab-root.pem",
      "defaultModel": "qwen3-coder"
    }
  ]
}

Harnesses are configured the same way — bin, kind, modelArg, modelPrefix, extraArgs, extraEnv, logFile:

{
  "adiuAgents.harnesses": [
    { "id": "omp", "name": "omp", "kind": "omp-json", "bin": "omp", "modelPrefix": "adiu" },
    { "id": "oc", "name": "opencode", "kind": "opencode-server", "bin": "opencode" },
    { "id": "mine", "name": "my agent", "kind": "generic", "bin": "my-agent", "modelArg": "--model" }
  ]
}

Settings

Setting Default Purpose
adiuAgents.endpoints [] Endpoint definitions (never the key).
adiuAgents.harnesses [] Harness definitions.
adiuAgents.defaultEndpoint "" Pre-selected endpoint in the launch picker.
adiuAgents.defaultHarness "" Pre-selected harness in the launch picker.
adiuAgents.defaultModel "" Pre-filled model.
adiuAgents.pollMs 2000 Status polling interval.
adiuAgents.maxAgents 16 Maximum concurrently supervised agents.
adiuAgents.transcriptKeep 400 Transcript events rendered in the detail tab.
adiuAgents.logCapBytes 2097152 Cap of the captured harness log (ring-truncated to half).
adiuAgents.lightIdleAfterSec 90 After this long without events a working agent is flagged as possibly stalled.
adiuAgents.statusDir "" State root; empty = per-window workspace storage. Point it at a shared path to see identical agents from several windows.
adiuAgents.suggestFromEnv true Offer an endpoint discovered from the environment.

Architecture

Architecture

The extension host never owns the harness: it starts a shim, the shim spawns the harness, and both keep running independently of the window. UI state comes from the status files the shim writes, so a reloaded window rebuilds the panel from disk.

Platform notes

Everything except the embedded terminal is pure JavaScript and runs on any platform VS Code runs on.

The embedded terminal uses node-pty, a native module, so a package can only carry the binary built on the machine that packaged it — the published VSIX ships linux-x64. On other platforms the terminal actions report that the module could not be loaded; the terminal grid, transcripts, follow-ups, interrupt, change review and supervision keep working.

Security and privacy

  • No telemetry, no analytics, no network calls of its own: the extension only talks to the endpoints you configure, and every request is made by your harness.
  • API keys are stored in VS Code's secret storage; they are handed to a child process through its environment for the lifetime of that process and are scrubbed from captured logs.
  • Agent state (status JSON, events, stdout) lives under the workspace storage path, or wherever adiuAgents.statusDir points.
  • The extension declares untrustedWorkspaces: false: it launches processes and reads the environment, which untrusted-folder restrictions exist to prevent.

Development

npm install
npm run build        # esbuild -> dist/extension.js, dist/shim.js (+ vendored node-pty)
npm run typecheck    # tsc --noEmit
npm test             # unit suite (real ptys, fake harnesses)
npm run package:linux-x64   # VSIX for linux-x64
npm run package:universal   # VSIX for any platform (terminal unavailable off linux-x64)

Packaging runs scripts/embed-media.mjs, which writes README.packaged.md with the images of media/ inlined as data URIs and hands that file to vsce --readme-path. The listing therefore never depends on the repository being publicly readable, and this README.md keeps plain relative paths for GitLab.

Layout: src/extension.ts (activation, panel, detail tab, commands), src/supervisor.ts (agent lifecycle and status), src/shim.ts (detached harness owner and socket protocol), src/tui.ts (pty + transcript plumbing), src/grid.ts (tmux grid), media/ (webviews, icons, branding).

License

MIT © 2026 Adiu

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft