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
baseUrlon their profile. Store the endpoint's key with/connectorAeroCode: 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:
- Skills and
/skills - Inline code completion (initial provider complete; notebook-wide context remains)
- MCP integration (initial remote Streamable HTTP client complete; OAuth remains)
- Unified built-in and custom model picker (complete)
- Browser retrieval tools
- Diff and review workflows
- Conversation save and restore (complete)
- Common slash commands
- Context usage display
- Configurable custom providers