VS Code Extensions
A

AeroCode

by bpcarson

A multi-model chat harness for VS Code for the Web.

Downloads

0

Rating

(0)

Version

0.0.22

Last updated

Aug 09, 2026

AeroCode is a browser-compatible, multi-model chat harness for VS Code Web. It supports OpenAI-compatible and Anthropic APIs, plus an optional local LiteRT runtime for Google Gemma-compatible model packages. Assistant responses render Markdown, including lists, links, and fenced code blocks.

The Chat view appears in the Activity Bar. Use the gear icon in the Chat view header, or the AeroCode: Open Settings command, to configure the default and custom profiles, built-in profile visibility, system prompt, context limits, skills, MCP servers, and inline completions in the regular VS Code Settings UI.

Press Enter or use the arrow in the lower-right of the prompt to send. During generation, the arrow becomes a stop icon. Use Shift+Enter for a newline and /clear to clear the conversation. Type / to open filtered command suggestions; use the arrow keys to choose one and Enter or Tab to insert it. The bottom row also provides a model-profile selector, reasoning-effort selector for compatible OpenAI-style models, and a + menu for active-editor context, additional files, tool discovery, and agent permission mode.

Use the New Chat toolbar action or /new to start another conversation. Chats are saved per workspace and restored after reload; use the Chat History toolbar action to reopen one. To place Chat in the Secondary Side Bar, use VS Code's native drag-and-drop or view context menu; VS Code remembers that layout. Extensions cannot contribute a view directly to the Secondary Side Bar as its initial location, so AeroCode does not override the user's saved workbench layout on activation.

The model picker ships with full-name profiles for GPT-5.6 Luna, Terra, and Sol; Claude Opus 5 and Sonnet 5; and the web-compatible Gemma 4 E2B and E4B LiteRT packages. Set configurableChat.showDefaultProfiles to false to hide every built-in entry. Custom profiles configured with configurableChat.profiles are appended to the picker whether or not the built-ins are visible:

[
	{
		"id": "private-terra",
		"label": "Private Terra",
		"provider": "openai-compatible",
		"model": "gpt-5.6-terra",
		"baseUrl": "https://gateway.example.com/v1",
		"reasoningEffort": "medium"
	},
	{
		"id": "claude",
		"label": "Claude",
		"provider": "anthropic",
		"model": "claude-sonnet-4-5",
		"baseUrl": "https://api.anthropic.com/v1"
	}
]

Set configurableChat.defaultProfile to the profile used by chat and inline completion. API keys are stored by provider and endpoint, so models on the same connection share credentials. Existing profile- and provider-level secrets are still read for migration. If a remote model has no stored credential, the first send opens the same secure prompt as /connect before adding the message to the conversation.

Providers

  • OpenAI-compatible: select an OpenAI built-in or custom profile. Custom gateways set baseUrl on their profile. Store the endpoint's key with /connect or AeroCode: Configure Credentials; it is held in VS Code Secret Storage instead of workspace settings.
  • Anthropic: select a Claude built-in or custom profile. Custom Anthropic endpoints can also set baseUrl. Requests use Anthropic's browser-enabled Messages API.
  • LiteRT: select Gemma 4 E2B (about 2.58 GB) or E4B (about 3.65 GB), or add a custom LiteRT profile. The model is downloaded and executed in the browser host, so availability and hardware requirements depend on the user's browser.

The + menu can attach the active editor or one or more selected files, up to the configured context limit, alongside each prompt. It also exposes the tools currently available to the agent.

Built-in workspace/* tools inspect metadata, sections, symbols, and references across Markdown/OKF and Python files. Reference searches normalize Markdown links, wikilinks, Python imports, and file paths so relationships can be followed across formats. YAML metadata may use standard frontmatter or comment-wrapped blocks such as Python # --- blocks.

Tool activity

Agent tool calls appear inline as collapsible cards. Each card shows its current waiting, running, completed, denied, or failed state. Expand a card to inspect the tool source, JSON arguments, returned context or result, execution time, and errors. Large results are truncated only in the chat display; the complete result is still provided to the agent. Verbose JSON tracing remains available through Output > AeroCode when tracing is enabled.

Workspace instructions

The root AGENTS.md in every workspace folder is loaded automatically on each message. If an editor is active, the extension also loads nested AGENTS.md files from the workspace root down through that file's ancestor directories. Files are added root-first, so the nearest nested instructions are the most specific. The combined size is limited by configurableChat.instructions.maxCharacters.

Agent Skills

The extension discovers Agent Skills from .agents/skills and _agents/skills in each workspace folder. Search paths are configurable with configurableChat.skillsPaths; when names collide, the first configured path wins.

Each skill must contain a SKILL.md with name and description YAML frontmatter followed by Markdown instructions. Use /skills [query] to refresh and list skills, /skill <name> to activate one for subsequent turns, and /skill off to deactivate it. /skill <name> <prompt> activates it and sends a prompt immediately. Skill summaries are disclosed to the model, while full instructions are loaded only for the active skill.

Other commands are /new, /connect, /clear, /stop, /attach, /detach, /model, and /help.

Inline Code Completion

Inline completion is available for text editors and notebook cells through VS Code's native ghost-text interface. It is disabled by default to avoid unexpected model usage. Enable it with AeroCode: Toggle Inline Completions or configurableChat.completion.enabled.

Completions reuse the configured default profile and its stored connection key, but use an independent system prompt and bounded prefix/suffix context. VS Code cancellation is forwarded to the provider whenever a completion becomes stale. The prompt and context limits are configurable under configurableChat.completion.

MCP Servers

Remote MCP tools are supported through the official Model Context Protocol SDK and Streamable HTTP transport. Configure servers with configurableChat.mcpServers:

[
	{
		"name": "deepwiki",
		"url": "https://mcp.deepwiki.com/mcp",
		"enabled": true
	}
]

Use /mcp to connect or retry and show server status, /tools [query] to list discovered tools, and /tool <server/tool> <json> to invoke a tool manually. Enabled tools are also disclosed to the model for a bounded tool-use loop. Agent actions are controlled by configurableChat.toolApprovalMode: Ask displays Allow Once before workspace file edits and remote MCP calls; Auto permits them without confirmation. Built-in read-only discovery, search, reading, inspection, and reference tools always run automatically. Tool results are returned to the model as untrusted context.

Every agent turn receives the available tool catalog. OpenAI-compatible providers use native function/tool calls with meaningful stable names and keep tool_choice set to auto, so the model decides when evidence or an action is needed. Native assistant tool calls and matching tool results are preserved in the conversation sent back to the provider. When Chat Completions rejects reasoning-effort function tools and directs the client to Responses, the same agent run continues through the Responses API without dropping the selected reasoning effort or returned reasoning items. Providers without native integration use a textual tool-call envelope as a fallback.

All tools discovered from enabled MCP servers are available to the bounded tool-use loop. Use VS Code Settings to add, remove, or disable MCP servers.

VS Code Web cannot start local stdio MCP servers. Endpoints must use HTTPS Streamable HTTP and provide CORS headers that allow the browser host. The initial integration supports unauthenticated endpoints; OAuth and secret-backed custom headers remain future work.

Agent tracing

Set configurableChat.trace.enabled to write verbose JSON events to Output > AeroCode. Events include the provider turn and tool-selection mode, provider responses, tool arguments, tool results, and errors. API keys are never added to trace events.

Set configurableChat.trace.saveToWorkspace to also write the current session as JSONL under .configurable-chat/traces/ in the first workspace folder. Both destinations can contain prompts, AGENTS.md content, and source returned by tools; keep tracing disabled when that content should not be retained. configurableChat.trace.maxCharacters bounds each string field.

Parity Roadmap

The official jupyterlite/ai project under refs/ai is the behavioral reference. Work is prioritized as follows:

  1. Skills and /skills
  2. Inline code completion (initial provider complete; notebook-wide context remains)
  3. MCP integration (initial remote Streamable HTTP client complete; OAuth remains)
  4. Unified built-in and custom model picker (complete)
  5. Browser retrieval tools
  6. Diff and review workflows
  7. Conversation save and restore (complete)
  8. Common slash commands
  9. Context usage display
  10. Configurable custom providers

Related extensions