Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>ExecAI — terminal AI agentNew to Visual Studio Code? Get it now.
ExecAI — terminal AI agent

ExecAI — terminal AI agent

ExecAI

|
37 installs
| (0) | Free
The execai agent in your sidebar: streaming chat, tools with confirmations, file and selection context. Works in VS Code and Cursor.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

English | Русский | Español | Deutsch | 中文

🌐 Website: execai.ru · 💬 Web chat: chat.execai.ru · 🖥 CLI: execai/execai-agent · 🖥 Editor: ExecAI Studio


ExecAI for VS Code and Cursor

The execai agent in your editor sidebar: a streaming chat, tools with confirmations, the context of the active file. The whole agent loop runs in the CLI on your own machine — the extension only draws it.

What it does

  • Chat in the sidebar — streamed answers, a collapsible reasoning block, tool cards with live output (Bash streams lines as they appear)

  • Confirmations exactly like the TUI and the web chat — five buttons: "Once", "This tool for the session", "This command for the session", "FOREVER" (written to permissions.json), "Reject". Silence never widens permissions

  • Agent questions (AskUser) — when the call is yours, the options arrive as buttons

  • Editor context — the active file and selection are attached to your message (execai.attachContext)

  • Changed files — chips under the turn, click to open the file

  • Chat tabs at the top of the panel, the way an editor shows open files: every chat of this project, one click to switch, «×» to close (the chat stays in history and a running turn keeps going), drag to reorder

  • Chats run in parallel (agent R6.74+): switch tabs while a chat is answering — the turn keeps running and is replayed from the start when you come back. Badges on tabs: a pulsing dot — working, a green dot — finished and not read yet, «?» — waiting for your answer, ⏰ — a wake-up is scheduled; a chat that finishes or asks while you are elsewhere raises a toast with Open. Wake-ups (schedule_wakeup) show a line with Now / Cancel and survive an editor restart

  • Clickable links — a URL opens in the browser, a project path (internal/agent/memory.go:42) opens the file at that line

  • Copy buttons — one on every code block, one on the answer as a whole (it copies the original markdown)

  • Stop ends the current turn; New chat resets the history and the session permissions

  • Terminal escape hatch — the "ExecAI: Open in a terminal" command gives you the full TUI

  • Getting started (agent R7.10+) — an empty chat opens with five steps and their ticks: sign in, connect models, turn on sync, bind the folder to a project, call the agent from your phone. Each step has the button that does it; closed once, the screen stays closed in every project, and the >_ menu or the "ExecAI: Getting started" command brings it back

  • My machine — a compact card from the panel title bar, the >_ menu or the "ExecAI: My machine" command: the machine and the agent version, the account and its plan, which model sources answered and when, what sync carries, whether the web chat and the phone can reach this machine

  • QR code for the phone — Show the QR code in the last step and QR for the phone on the card: point the phone camera at it and the web chat opens with this machine selected. The code is drawn right in the panel, nothing is fetched

  • Subagents — when the agent hands work to subagents, an Agents block above the input lists them: state, title, "step 12/50 · 38 left" (yellow with 5 or fewer left), the last tool and the time running, with +25 and Stop on the ones still going; one that "hit the step limit" gets Continue (+25) and picks up where it stopped. A click on a row opens its work so far in a read-only tab; Subagent steps in the >_ menu sets the limit for new subagents (1–100, 50 by default)

  • Tasks from the web and the phone — a task started in the web chat or on the phone opens here as a new chat: its tab carries 🌐, the first message reads "From the web: …", a toast "A task came in from the web: …" has Open, and the turn streams in the panel; a permission question can be answered here or on the site, whichever comes first. It takes signing in, an ExecAI plan that includes tasks from the web (the panel names it and links to the plans) and the folder bound to a project — Project in the >_ menu. The status bar and the menu show who accepts tasks on this machine, with Accept here when the background execai serve holds them

  • The same chat in a window of its own — the agent's execai ui command opens the chat without an editor: a window with no tabs and no address bar (or a browser tab when there is no suitable browser), with three looks in light and dark themes; over SSH, forward the port and open the printed link on your side. Guide: docs/en/ui.md

    execai ui — the chat in a window of its own

  • Notifications — when the chat on screen finishes its turn or waits for your answer while the panel is hidden or the editor window is in the background, a notification says so, and its Open button brings the panel forward on that chat; a turn you stopped yourself is not announced. With the editor window in the background and an updated agent, the agent itself shows a desktop notification instead (on your own computer; in a remote session the in-editor one stays). In execai ui the 🔔 button in the page header turns on browser notifications. In the editor the execai.notifications setting turns them off

  • Sync messages — what the agent's sync says (a copy kept next to a file, a file left out, a version taken from the server) shows in the chat as a service line, with its line breaks; sync commands are typed in a terminal: execai sync. Guide: docs/en/sync.md

Sources (ExecAI / Z.ai / Kimi / Anthropic / OpenAI / Ollama…), models, memory and permissions are all configured in the CLI itself — the extension uses your current configuration. A source can also be your own endpoint — any OpenAI- or Anthropic-compatible address (LM Studio, vLLM, LiteLLM, a corporate gateway): Connect a source → Custom provider in the >_ menu asks for its name, interface type, address and key. Model lists come from the providers themselves.

Interface languages

The panel and the commands follow the editor's display language: English and Russian ship today, English is the fallback for every other locale. Adding a language means two files and no code — package.nls.<lang>.json for the manifest, l10n/bundle.l10n.<lang>.json for the runtime, plus a bundle in STRINGS inside src/webviewHtml.ts. A unit test keeps every bundle in key parity with English.

Install

  1. Install the extension:
    • VS Code — Marketplace: ExecAI
    • Cursor / VSCodium / Windsurf — Open VSX: ExecAI
    • or by hand: download the .vsix from Releases → Extensions: Install from VSIX…
  2. Open a project folder — the ExecAI icon appears on the left.
  3. On first run the extension offers to download the agent (~7 MB). It lands in the extension's storage, no sudo involved. If execai is already in PATH and recent enough (R7.21+), that one is used instead.

Then sign in and connect models right in the panel: the Getting started steps have a button for each, and the >_ menu has the same ("Sign in to ExecAI", "Connect a source").

Installing the agent by hand is optional but supported:

curl -fsSL https://raw.githubusercontent.com/execai/execai-agent/main/install.sh | bash

Settings

Setting Default What it does
execai.binaryPath execai Path to the binary. Empty or execai — found in PATH or fetched by the extension.
execai.maxIterations 0 Tool iteration limit per turn (0 — take it from the execai config).
execai.attachContext true Attach the active file and selection to the message.
execai.autoInstall true Offer to download the agent when it is missing or outdated.
execai.resumeLastChat true Continue the last chat of this project when the panel opens; off — start from a clean slate every time.
execai.notifications true Notify when a chat finishes its turn or waits for your answer while the panel is hidden or the editor window is in the background: inside the editor (its button opens that chat), or with a desktop notification while the window is in the background.

How it works

The extension starts execai ide --cwd <project folder> and talks to it in JSON lines over stdin/stdout. The protocol is versioned: when the versions drift apart the extension asks you to update instead of breaking silently. A question left unanswered (you closed the editor) is treated by the agent as a refusal — the same principle as background mode in execai serve.

Development

npm install
npm test          # unit tests: protocol, version comparison, webview markup, i18n
npm run build     # esbuild → dist/extension.js
npm run package   # .vsix via @vscode/vsce

License

Business Source License 1.1 — free for internal and production use; commercial hosting as a service requires a separate license (it@velesbsd.com).

Support

  • Bugs and feature requests: github.com/execai/execai-vscode/issues
  • The agent itself: github.com/execai/execai-agent
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft