Selfcoder - Your local AI peer programmer
A privacy-focused AI coding assistant for VS Code that runs fully locally and offline.
A Copilot-like experience - local, private, and subscription-free.

Overview
Selfcoder brings local AI coding workflows into Visual Studio Code without locking you into a hosted subscription. Connect it to LM Studio or Ollama, choose the model that fits your machine, and work from a dedicated sidepanel, native VS Code/Copilot Chat, or VS Code's model picker.
It is designed for developers who want modern AI assistance while keeping code, prompts, files, and workspace context under their own control. By default, requests go to the backend endpoint you configure, usually a local server running on your machine.
Three Ways To Work
Selfcoder is not just one chat panel. It provides three complementary ways to use local models inside VS Code:
| Mode |
Best for |
What makes it useful |
| Sidepanel Chat |
Focused local coding sessions |
A dedicated Selfcoder workspace with streaming responses, model details, context chips, file/image attachments, reasoning display, history, and a context budget tuned for local models. |
@Selfcoder Native Chat Participant |
Asking local models from VS Code/Copilot Chat |
Use Selfcoder directly in the native chat experience. It shares the active backend, selected default model, workspace instructions, chat history, and request-scoped context. |
| Local Model Provider |
Agentic workflows in native chat |
Exposes tool-capable local models to VS Code's model picker so native chat and agent-style tool flows can use eligible LM Studio or Ollama models. |
Key Features
Sidepanel Chat Optimized For Local Models
The Selfcoder sidepanel is the richest workflow surface. It is built for repeated coding work with local models.
- Streamed markdown responses with code blocks, copy actions, tables, lists, and links.
- Model picker with metadata such as context length, parameter size, vision, tool use, reasoning support, and aliases.
- Token usage indicator and conversation pruning when the request payload approaches the model's context limit.
- Persistent chat history with global or per-repository filtering.
- File pins, manual text attachments, image attachments for vision-capable models, and clipboard image support.
- Reasoning/thinking display for supported LM Studio and Ollama models.
Model-Aware Context Budgeting
Local models vary widely in context size, so Selfcoder does not blindly dump the whole workspace into every request. It builds a request-scoped context package based on the selected model, the current conversation, and your prompt intent.
Selfcoder can include:
- pinned files you explicitly choose
- active editor selection or active file
- diagnostics from the current file
- recently edited files
- git diff summaries or focused hunks
- repository search snippets when the question needs codebase discovery
- workspace instruction files such as
local-instruction.md, copilot-instructions.md, or CLAUDE.MD
The result is a local-model-friendly balance: enough project context to answer well, without wasting the limited window that smaller local models often have.
Native VS Code/Copilot Chat Integration
Use @Selfcoder in VS Code/Copilot Chat when you want local assistance without leaving the native chat surface.
- Streams answers directly into the native chat UI.
- Reuses the configured LM Studio or Ollama backend.
- Uses your runtime default Selfcoder model from the status bar.
- Includes native chat history, workspace instructions, and Selfcoder's request context pipeline.
- Honors cancellation from the native chat UI.
Local Models In The Native Model Picker
Selfcoder can register eligible local models as a VS Code LanguageModelChatProvider so they appear as Selfcoder models in native chat and agent-style flows.
- Shows local models with tool-calling support when reported by the backend.
- Maps model details such as context length, vision support, and tool support into VS Code's model metadata.
- Translates VS Code chat messages, tool calls, and tool results into OpenAI-compatible request shapes.
- Streams text and tool-call responses back through VS Code's native APIs.
This is the integration aimed at users who want local models to participate in native, tool-aware, agentic coding workflows.
Optional OpenCode Agent Mode
For users who want a fuller workspace agent, Selfcoder can work with an installed OpenCode CLI.
- Starts an OpenCode ACP session from the current workspace.
- Shows agent activity, plans, reads/searches/edits, terminal activity, and permission requests in the sidepanel.
- Tracks files changed during an agent run and can summarize or revert tracked session changes.
- Keeps the agent install separate from Selfcoder, so you stay in control of the external agent and its provider configuration.
Supported Backends
| Backend |
Default endpoint |
Notes |
| LM Studio |
http://localhost:1234 |
Friendly local model management, OpenAI-compatible chat, native model metadata, reasoning events, and response chaining when available. |
| Ollama |
http://localhost:11434 |
CLI-focused local model runtime with native chat streaming, model capability discovery, reasoning support, and OpenAI-compatible endpoints for provider flows. |
Getting Started
- Install either LM Studio or Ollama.
- Start a local chat model in your chosen backend.
- Install Selfcoder in VS Code.
- Open the Selfcoder sidepanel and choose your backend/model.
- Optional: install OpenCode if you want Agent Mode.
Useful install commands:
| Tool |
Windows |
macOS/Linux |
| LM Studio |
irm https://lmstudio.ai/install.ps1 \| iex |
curl -fsSL https://lmstudio.ai/install.sh \| bash |
| Ollama |
irm https://ollama.com/install.ps1 \| iex |
curl -fsSL https://ollama.com/install.sh \| sh |
| OpenCode |
npm i -g opencode-ai |
npm i -g opencode-ai |
Why Selfcoder
Selfcoder is for developers who like the feel of modern AI coding tools but want the control of local infrastructure. Use a small local model for quick edits, switch to a larger coder model for deeper work, expose tool-capable local models to native VS Code chat, and keep the sidepanel available when you want a focused local coding companion.
It is private by design, flexible by backend, and built around the practical limits of local models instead of pretending every model has infinite context.