LiteLLM Chat for Visual Studio 2022See MARKETPLACE.md for the complete user-facing feature guide, setup instructions, privacy notes, and troubleshooting information. A native WPF VSIX for chatting with any OpenAI-compatible LiteLLM gateway without leaving Visual Studio. It supports multiple servers, model discovery, streaming, reasoning display, read and edit tools, VS Code–style context attachments, diagnostics, DPAPI-protected API keys, and a local conversation history. Requirements
The VSIX is produced below UseOpen Tools > LiteLLM: Open Chat, choose a conversation and model, and enter a prompt. Enter sends; Shift+Enter inserts a line. Stop cancels generation. New chat starts a fresh conversation and Delete removes the one the history drop-down is showing, after a confirmation; the buttons are live only when there is something for them to act on, and the open draft and its attachments survive a deletion. Deleting the last conversation leaves one empty conversation behind rather than an empty list, so the pane always has something to render. The view renders basic Markdown, fenced code with Copy Code, optional reasoning, tool progress, and request failures. It does not force-scroll after you scroll away from the bottom. Right-click an assistant response and choose Retry response to regenerate the latest completed or failed turn. A reply is ordinary selectable text: drag over the part you want and press Ctrl+C. Each paragraph and each code block is its own selection, so a selection does not run across a paragraph break — the right-click menu's Copy message, and Copy last reply in the composer, are what copy a whole answer. The highlight is one of the few colours Visual Studio publishes no token for, so it is derived from the theme's accent — but not trusted to it: it is held to a measured contrast against the page, the card and the code block it can be drawn on, and the text under it is recoloured to read on the highlight rather than being left the accent's guess. On a theme whose accent sits close to its own background the highlight is pushed away from it until it separates. The highlight also stays painted once the box loses focus, so what you selected is still marked when you go to copy it. The header and the composer reflow with the pane. Below about 820px the conversation and model drop-downs and the composer's buttons move onto their own wrapping rows, so a narrow tool window stays readable instead of drawing controls over each other. Each drop-down is the width of its box: an entry longer than that ends in an ellipsis rather than stretching the open list past the width of the header, and a conversation's name is one line by the same rule the store keeps for titles, so it is shortened rather than wrapped onto a second row. Context attachmentsAttach things to a message the way VS Code does. The 📎 button in the composer opens Add context, and typing
The file you have open in the editor is attached automatically, the way VS Code keeps the active editor in the chat's context: it appears as the first chip, outlined in the accent colour, and follows you as you move between tabs. The ◎ Auto button in the composer turns it off and on, and so does the chip's Each attachment becomes a chip above the composer: click its name to open the file, Retry response puts back what the turn was asked with — the prompt and its attachments — rather than the words alone. ToolsTool results are shown as compact progress rows and added to history; send another message to continue after a tool result. Reading tools: Writing tools, using the same names and parameters as GitHub Copilot Chat's agent mode:
A turn may use up to Maximum tool rounds (Tools ▸ Options ▸ LiteLLM, default 25, ceiling 200) before the chat stops and asks Continue to iterate? — the same checkpoint Copilot Chat uses. Continue raises the budget by half (25 → 38 → 57 → …) and keeps working from the results already gathered; Stop ends the turn with those results intact, so your next message continues from them. Because the budget is only consulted once a round's tool results are in, the model is never handed a half-finished exchange. The chat, the dashboard and the two dialogs follow the Visual Studio theme, and they follow it the way Visual Studio's own windows do: the XAML names no colour of its own, it asks the shell for its brush — the same brush the shell paints its own chrome with — and WPF re-resolves it in the same moment the shell repaints. There is no snapshot of the theme to go stale and no handler in the path, so switching under Tools > Options > Environment > General repaints the tool windows exactly when it repaints the IDE. That covers the controls that are easy to get wrong. Scroll bars, check boxes and text boxes are drawn from the shell's own What Visual Studio publishes no token for — the selection highlight, the text on it, and the error colour — is derived from the theme's accent and re-derived on every theme change. Where the shell does publish its own control style, the extension uses that style rather than a copy. View > Output > LiteLLM records, once, which of those styles the running shell published and how many colour tokens it did not answer — so the question of whether the extension is standing in for anything is answered from inside the IDE rather than assumed. The dialogs take Visual Studio's own dialog styles as well, so their buttons, text boxes and check boxes — the default button in particular — are the shell's rather than an imitation. There is one honest limit: Visual Studio's internal control templates are not public, so "identical" means every colour is the shell's own brush for that role and every control the shell publishes a style for wears that style, not that the templates were copied. Diagnostics appear in View > Output > LiteLLM. The status bar reports discovered models and enabled servers. Troubleshooting
Architecture noteThe chat behavior adapts public VS Code concepts—session/request/response state, incremental response parts, explicit context items, cancellation, retry, model selection, and bounded history—to the existing Visual Studio/WPF and LiteLLM architecture. It does not copy GitHub Copilot proprietary implementation or introduce a webview/React chat application. Advanced VS Code features such as remote sessions, virtualized editor-backed content parts, participant ecosystems, and provider-specific confirmation protocols remain platform/provider-specific. |