Sno Station
Sno Station is your agents' workstation: open-source software that turns the AI agents you already run into one squad on your own machine. Two heads are better than one, and they get better with every
LocalPilot is a free, open-source coding agent for VS Code that runs on local models from Ollama, LM Studio, llama.cpp or vLLM. Agent mode, parallel agents, skills, screenshots and MCP, with no subscr
PluginsTypeScript · JavaScriptGitHub @isathishOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
LocalPilot — local-first AI coding agent for VS Code (Ollama, LM Studio, llama.cpp, vLLM). Agent mode, parallel agents, skills, subagents, screenshots, MCP.
Taken from the repository README
Loading the full README.
Read the full README ↗It costs nothing per month, and you can check for yourself that it is private.
| Per developer | LocalPilot | GitHub Copilot Pro / Pro+ / Max | Cursor Plus / Premium / Super | Claude Pro / Max |
|---|---|---|---|---|
| Per month | $0 | $10 / $39 / $100 | $8 / $30 / $100 | $20 / $100–200 |
| Team of 10, per year | $0 | $1,200 / $4,680 / $12,000 | $960 / $3,600 / $12,000 | $2,400 / $12,000+ |
| Works with the network unplugged | Yes | No | No | No |
| Where your code is processed | Your laptop | Vendor cloud | Vendor cloud | Vendor cloud |
Published list prices for individual plans (USD) at the time of writing; vendors change plans and limits often. With LocalPilot you pay only for your own electricity — a 7B coding model needs ~8 GB RAM, 14B–32B models 16–32 GB.
Three checks, under a minute. Turn off Wi‑Fi: LocalPilot keeps editing and running tests. Open Settings → Providers: every address is localhost unless you added one. Read the source: it is MIT-licensed, and npm test runs against your own Ollama.
localhost. No account, no telemetry SDK, no update check; the Dashboard's metrics live in ~/.localpilot/telemetry and never leave the disk (localpilot.telemetry.enabled: false turns them off). The only other outbound calls are ones you control: the skill registry index from GitHub (localpilot.skills.autoInstall: off stops it), the web tools (localpilot.approvals.network: ask confirms each request, never blocks them), and model downloads you start yourself.AGENTS.md, CLAUDE.md, .cursorrules, .github/copilot-instructions.md, .claude/skills and .claude/agents as they are.From the VS Code Marketplace (recommended) — search for LocalPilot Agent in the Extensions view, or:
code --install-extension localpilot.localpilot-agent
From a GitHub release
curl -L -o localpilot.vsix https://github.com/isathish/localpilot/releases/latest/download/localpilot.vsix
code --install-extension localpilot.vsix
Requires VS Code 1.104+.
Serve a model — or let LocalPilot do it: with no model found it offers Set up automatically, which starts or installs Ollama and downloads a starter coder model sized for your machine. Any of these works too (running servers are auto-detected, including ones in Docker):
ollama pull gemma4:e4b && ollama serve # Ollama → :11434
# LM Studio → Developer tab → Start server → :1234
# llama-server -m model.gguf --port 8080 → :8080
# vllm serve google/gemma-4-12B-it → :8000
# docker model pull ai/gemma4:e4b → Docker Model Runner :12434
# ./start-here.sh (github.com/JustVugg/colibri) → colibri :8000, huge MoE models from disk
# docker run -p 11434:11434 ollama/ollama → any model-server container
Open the LocalPilot icon in the Activity Bar (or ⌘⇧L) and ask for a change — Auto picks the best tool-capable model it found.
| Agent · Ask · Plan modes | Autonomous edit/run loop with approval gates; read-only Q&A; investigate-then-plan with a live Tasks checklist. |
| Parallel agents & multitasking | Chat tabs run independently; Run Tasks in Parallel (⌘⇧⌥P) spawns one agent per task. The Agents panel shows live status and changed files. |
| Pause / steer / stop | Pause (⌥Esc) holds an agent after its current step; anything you type while it is paused or running is queued and read at its next step; Stop (Esc) cancels. Each parallel subagent lane has its own pause and stop; pausing or stopping the parent reaches all of them. Also in the tab menu, background strip, Agents panel, Command Palette and the CLI (Ctrl+Z / Ctrl+C). |
| Change review & checkpoints | Every agent edit is snapshotted — Diff / Accept / Reject per file or per session, and Restore checkpoint on any message rewinds files and conversation. |
| Zero-config providers | Auto-detects Ollama, LM Studio, llama.cpp, vLLM, colibri, Docker Model Runner, Jan, SGLang, KoboldCpp and model servers running in Docker containers; new ones are added to your settings automatically. |
| Huge MoE models with colibri | A running coli serve is recognised even on vLLM's port :8000. LocalPilot reads its capabilities (vision, chat vs decision-only models) and KV slots, and judges memory fit by the part that stays in RAM, not the 20–1,500 GB download, so GLM-5.2, DeepSeek V4 Flash or Qwen3-Coder-30B route like any other model. Models whose experts stream from disk get patient stall timeouts and are kept for Plan mode rather than chatty subagents or ghost text. LocalPilot: Start colibri launches the server from your checkout (localpilot.colibri.*). |
| Learns which models work for you | From local telemetry (runs finished, tok/s, time to first token, errors, completion acceptance), LocalPilot ranks your installed models per role. Auto routing prefers the ones that perform, and with localpilot.models.autoTune: auto (the default) it updates the default, Plan-mode, subagent, completion and image models itself, with Undo. A model you chose by hand is only replaced when it keeps failing. shows the evidence; reviews it on demand. |
/mode.@ to attach context, / for commands: /help, /model, /compact, /clear, /skills, /agents, /skill <name> <task>, /skill install <owner/repo|url>, /skill browse [words], /agent <name> <task>, /context..localpilot/skills/<name>/SKILL.md # name + description front-matter, Markdown instructions
.localpilot/agents/<name>.md # name, description, tools, model + system prompt body
.localpilot/commands/<name>.md # custom slash command: prompt body with $ARGUMENTS, @file, !`cmd`
.localpilot/settings.json # permission rules (allow/ask/deny) and hooks, Claude Code format
.localpilot/plugins/<name>/ # .claude-plugin/plugin.json bundling commands, agents, skills, hooks, MCP
.localpilot/rules.md · AGENTS.md · CLAUDE.md · .claude/CLAUDE.md · CLAUDE.local.md · .cursorrules · .github/copilot-instructions.md
Everything above is also read from the .claude/ folder (and ~/.claude/), so a repository configured for Claude Code works unchanged: settings.json permission rules such as Bash(npm run test:*), Edit(src/**) or Read(.env) decide what runs without a prompt, what always asks and what is refused; hooks (PreToolUse, PostToolUse, UserPromptSubmit, Stop, SessionStart, …) run your shell commands with the event as JSON on stdin and block with exit code 2; CLAUDE.md files are loaded from user, parent and project folders with @imports resolved. /permissions, /hooks, /commands and /memory show what is in force. Guide: Claude Code compatibility.
Skills you do not have yet install themselves: requests are matched against a registry of skill repositories (anthropics/skills, obra/superpowers, github/awesome-copilot by default — planning, design docs, debugging, PDF/Word/PowerPoint, architecture and more) and the best match is installed and loaded as the request starts. Settings → Skills & subagents is the management page: search the registry and install with one click, enable / disable / open / delete installed skills, see which ones get used, and set the default mode (auto / ask / off); the Skills button under each chat overrides that mode per chat and pins skills to every request. You can still install from GitHub or a URL with LocalPilot: Install Skill… (/skill install anthropics/skills/skills/pdf, localpilot skill install owner/repo). The model only sees enabled skills' names + descriptions with a rule to use those names only; a skill that clearly matches (name or trigger phrase), is pinned or forced with /skill is preloaded into the request so it is followed rather than guessed, and load_skill resolves mangled names instead of failing. Subagents run with a fresh context window and return only a final report. Full guide: Skills & subagents.
The agent runs its commands in a visible, branded LocalPilot Agent terminal (shell integration), so you watch npm test fail and pass while the agent fixes the code. Right-click any terminal for Explain Terminal Output / Fix Failed Command, or type @terminal in the chat.
The localpilot CLI is the same agent for your shell — same tools, skills, memory, MCP servers, approvals and undo, against your local models:
localpilot "fix the failing tests" # agent mode, one task
localpilot --ask "what does main.ts do?"
localpilot # interactive session
localpilot models · localpilot doctor
Open it from VS Code (LocalPilot: Open LocalPilot Terminal — no install) or run Install 'localpilot' CLI in PATH for every terminal. Docs: Terminal & CLI.
LocalPilot has its own Settings screen (gear icon in the chat toolbar): a provider manager with Test connection, model and generation options, Careful / Balanced / Autonomous approval presets, inline completions, web search, memory & skills, and MCP servers — each value tagged with the scope it comes from and resettable individually. On first run a short setup wizard detects Ollama / LM Studio / llama.cpp / vLLM, recommends a model and picks an approval preset.
| Setting | Default | Purpose |
|---|---|---|
localpilot.providers | Ollama, LM Studio, llama.cpp, vLLM on localhost | Model servers (ollama or any openai-compatible) |
localpilot.defaultModel | auto | provider/model, e.g. ollama/qwen2.5-coder:14b |
localpilot.contextWindow | 32768 | Requested context (Ollama num_ctx), capped by the model; 0 = model maximum |
localpilot.approvals.* | terminal ask · write always · delete ask · network always | Autonomy level |
localpilot.parallel.maxConcurrency | 4 | Concurrent tools / subagents |
localpilot.worktrees.mode | always | Isolate each agent in its own git worktree (always / parallel / off) |
localpilot.inlineCompletion.enabled | false | Ghost-text completions |
localpilot.mcpServers | {} | MCP servers (stdio) |
All settings: Configuration.
| Task | Models |
|---|---|
| Agentic coding | gemma4:e2b/e4b/12b (recommended), nemotron-3.5-bolt:e4b, devstral, gpt-oss, mistral-small, qwen3 |
| Inline completions | starcoder2:3b, codestral, qwen2.5-coder:1.5b/7b-base |
| Screenshots / vision | gemma4, nemotron-3.5-bolt, qwen2.5vl, llava, gemma3, pixtral |
npm install
npm run compile # type-check + lint + bundle
npm run smoke # offline tests (mock Ollama/OpenAI servers, agent loop)
npm test # Extension Host tests
npm run check:version # package.json, lockfile, docs config and changelog agree
npm run release -- minor # pick a specific bump; plain pushes to main auto-release a patch
Press F5 for an Extension Development Host. Architecture notes: Development.
Issues and pull requests are welcome — see open issues. If LocalPilot is useful to you, a GitHub star helps others find it.
LocalPilot is built and maintained by Sathishkumar Nagarajan (GitHub: @isathish).
MIT © Sathishkumar Nagarajan and LocalPilot contributors.
| Model manager & auto-setup | One-click setup installs Ollama and a smallest-first starter set sized to your RAM / GPU. Settings → Models shows what fits this machine, lets you enable / disable, set default or remove installed models, and installs from a curated catalog to Ollama, Docker Model Runner or LM Studio with live progress. Settings → Model gallery searches the whole Ollama library, Docker Hub's ai/ models (Docker Model Runner) and Hugging Face GGUF repositories (LM Studio, or hf.co/… on Ollama) — filter by capability, see every tag's size marked fits / tight / too big for your machine, install any of them to the runtime you pick, or pull anything by name. |
| Automatic routing | Image turns go to a vision model, completions to the smallest FIM model, Plan mode to an optional reasoning model; an offline or disabled model falls back to the best available one. Measured usage nudges every automatic pick. |
| Large-context management | Per-model token budget → prune old tool outputs → LLM compaction → truncation. Live context meter; /compact on demand. |
| Memory | Durable project and global notes (.localpilot/memory/) the agent saves and recalls across sessions. |
| Skills & subagents | SKILL.md playbooks loaded on demand and recommended as you chat; built-in clarifier, explore, planner, coder, tester, debugger, reviewer, docs, researcher; define your own with a model and tool allow-list. Recurring requests with no skill get a one-click Create skill. |
| Understands terse requests | "fix this", "make it faster": the agent reads the editor, open files, errors and git changes, states Understood as: … and proceeds — asking only when two readings would materially differ. |
| Task splitting | Big jobs become a checklist; independent items are delegated to subagents that run in parallel (run_todos_parallel) while the Tasks panel ticks them off. Read-only subagents route to a small fast model automatically. |
| Browser view, screenshots & DevTools inspection | The agent opens URLs in VS Code's Simple Browser, screenshots pages or local dev servers with a headless Chromium (desktop / phone / full-page), and inspects them over the DevTools Protocol — console errors and exceptions, network trace with failed requests, performance metrics, layout checks, optional click/type actions — rendered as a DevTools panel in the chat and attached to vision models. |
| Screenshots & images | Selection area, this VS Code window, pick a window, full screen or timed capture (⌘⌥⇧S); paste or drop images; vision models fix what they see. |
| Inline edit & terminal | ⌘⌥K rewrites a selection in place; in a terminal it turns English into a reviewed command. |
| Context mentions | @workspace, @selection, @problems, @git, @editors, @file#L10-L20, folders, drag-and-drop. |
| Tools | File ops, ripgrep search, symbols/references, shell, diagnostics, web search (DuckDuckGo / SearXNG / Brave / Tavily), web fetch, ask-user. |
| MCP | Any stdio MCP server's tools are exposed to the agent automatically; status and errors in Settings. |
| Inline completions | Ghost text from FIM models (qwen2.5-coder, codestral, starcoder2). |
localpilot CLI & API | localpilot "fix the tests" from any terminal (--plan, --ask, --parallel); other extensions can drive agents through the exported API. |
| VS Code platform | @localpilot chat participant, local models in Copilot's model picker (Language Model API), light-bulb fixes, context-menu actions, commit-message generator, status-bar model switcher, Settings panel and setup wizard. |
| Multi-session | Persisted per workspace; fork, pin, rename, export to Markdown. |
| Dashboard, metrics & logs | LocalPilot: Open Dashboard: tokens and tok/s per model, time to first token, tool usage and error rates, runs by mode, inline-completion acceptance, provider uptime and a searchable live log — all computed from local files in ~/.localpilot/telemetry; nothing is ever sent anywhere. |