Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
Local AI Ollama 도구와 확장 기능으로, 승인·거절 작업을 손쉽게 할 수 있습니다
Local AI (LLM) Ollama Tool and Extension. It's a hammer /approve /reject are your friends.
플러그인Python · TypeScriptGitHub @shunobies직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Your codebase already has an architect. It just needs tools.
Lean AI is an agentic coding assistant that reads your project, plans changes, and executes them — all inside your editor. Give it a task in plain English, review the plan, and watch it work.
Run it fully local with Ollama, or connect to OpenAI and Anthropic when you need heavier reasoning. Switch between models mid-session from the UI. No cloud account required to get started.README 전문 보기 ↗Your codebase already has an architect. It just needs tools.
Lean AI is an agentic coding assistant that reads your project, plans changes, and executes them — all inside your editor. Give it a task in plain English, review the plan, and watch it work.
Run it fully local with Ollama, or connect to OpenAI and Anthropic when you need heavier reasoning. Switch between models mid-session from the UI. No cloud account required to get started.
request, primary, and expert roles to the exact model assigned to each one, persist the winning contract under .lean_ai/role_tuning/, and automatically reuse it on future runs. Tuned guidance is applied as a scoped prompt override, so one model can behave differently from another without replacing your global prompt customizations..lean_ai/reference/ and the agent uses them for better plans without leaking content to cloud APIs.VS Code / VSCodium: Install from the VS Code Marketplace or OpenVSX.
JetBrains IDEs (IntelliJ, PyCharm, WebStorm, CLion, etc.): See the JetBrains Plugin guide for build and install instructions.
On first activation, the extension automatically creates a Python virtual environment and installs the backend server — no manual setup required.
Download Ollama and pull a model:
ollama pull qwen3-coder:30b
Cloud models: Ollama also supports cloud-hosted models. Pull one with
ollama pull model-name:cloud, then runollama run model-name:cloudand follow the link to connect your Ollama Cloud account. Once linked, select the cloud model from the Lean AI dropdown — it works the same as a local model.
/initType /init in the chat panel to index your workspace and generate project context. Then describe what you want built.
If you prefer to build from source instead of installing from the marketplace:
cd backend
pip install -e ".[dev]"
For voice features on Ubuntu 26.04 or any environment where python3 is already 3.14+, create the backend virtualenv with Python 3.13 first. The current voice extra depends on kokoro-onnx, which does not yet support Python 3.14.
sudo apt install portaudio19-dev build-essential
cd backend
python3.13 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install -e ".[voice]"
If you're running the extension against that source checkout, set lean-ai.backendDir to the backend/ directory and lean-ai.pythonPath to backend/.venv/bin/python.
Need cloud providers or reference library support? See optional extras.
Start the server manually:
uvicorn lean_ai.main:app --reload --port 8422
cd extension && npm install && npm run build
npx vsce package --no-dependencies
Install the generated .vsix file: Extensions sidebar > ... menu > Install from VSIX...
When building from source, set lean-ai.backendDir or lean-ai.pythonPath in the extension settings — the automatic installer is skipped when either setting is explicitly configured.
You: "Add user authentication with JWT tokens"
|
[Chat refines the idea]
|
[6-phase planning pipeline]
scope -> files -> design -> risks -> plan
|
[You review and approve]
|
[Agent executes step-by-step]
creates files, edits code, writes tests
|
[Post-execution validation]
auto-format -> lint fix -> lint check -> test
failures fed back to LLM for self-correction
|
[Changes committed on a branch]
/approve to merge, /reject to discard
Three common modes:
/agent — full planning pipeline for features and refactors/fix — skip planning, let the agent explore and fix directly/request — skip planning with a request-oriented role tuned for research, drafting, and open-ended tasksSee Architecture for the full breakdown.
Lean AI can tune the three main model roles independently:
/requestOn the first run for a given role + model, Lean AI performs a lightweight calibration pass, selects the best role framing for that model, stores the result in .lean_ai/role_tuning/, and writes a model-scoped prompt override into .lean_ai/prompts.yaml.
If you want to prewarm those artifacts on one machine and share them with teammates, run /tune-roles. That command explicitly tunes the active primary, request, and expert role assignments (including primary fallbacks when a dedicated request/expert model is not configured), writes the same .lean_ai/role_tuning/*.json profiles plus .lean_ai/prompts.yaml, and lets you commit just those sharable files for reuse on other machines with the same provider/model IDs.
That tuned result is reused until one of the inputs changes:
Manual prompt customization still works. Global overrides remain the fallback layer, and a matching model-scoped override wins only for that specific role/model pair.
| Command | What it does |
|---|---|
/init | Index workspace and generate project context |
/tune-roles | Prewarm sharable role-tuning artifacts for the active role assignments |
/agent | Send a task to the planning pipeline |
/fix | Skip planning, fix directly with full tool access |
/approve | Merge the agent's branch |
/reject | Discard the agent's branch |
/style | Generate style guide from CSS/templates |
/skill <name> <task> | Load a local skill from .lean_ai/skills/<name>/instructions.md and apply it to the task |
/request <task> | Skip planning, open-ended task with full tool access |
/resume [session_id] | Resume a previous session |
/help | Show this help |
/interview-prep | Convert a .docx resume and tailor it for a specific role |
/batch-prep | Tailor resumes + cover letters for many roles in one run |
/ats-check [slug] | Keyword gap report comparing resume to the job description |
/thank-you [slug] | Draft a post-interview thank-you note |
/recruiter-reply | Draft a reply to a recruiter's cold outreach |
/negotiate [slug] | Research market comp and build a negotiation brief |
/analyse-rejection [slug] | Post-mortem a rejection with concrete takeaways |
/log-applied [slug] | Append a tracker row and commit the application folder to git |
/mock-interview [slug] | Interactive Q&A practice with rubric scoring |
/note | Save a note (auto-categorized by project) |
/scaffold | Bootstrap a new project |
Create a backend/config.yaml file (or use the extension's settings panel):
# Provider: ollama, openai, or anthropic
llm_provider: ollama
# Local model (default)
ollama_model: "qwen3-coder:30b"
ollama_context_window: 128 # 128k — shorthand for 131072
# Cloud API keys — encrypt with: python -m lean_ai encrypt-key <key>
openai_api_key: "enc:gAAAAABf..."
anthropic_api_key: "enc:gAAAAABf..."
Environment variables (LEAN_AI_*) and legacy .env files also work. See configuration priority.
Use a local model for the bulk of the work and a cloud model only for planning and complex fixes:
llm_provider: ollama
ollama_model: "qwen3-coder:30b"
# Expert: cloud model for planning phases 3-5 and final fix retry
expert_llm_provider: anthropic
anthropic_api_key: "enc:gAAAAABf..."
anthropic_expert_model: "claude-opus-4-6"
The expert model only runs for planning phases 3–5 (design + risk synthesis, plan assembly, verification) and the final validation fix retry. All codebase exploration, implementation, and routine tool calls use the primary local model.
Note: the cloud provider's Python SDK must be installed even when the primary provider is Ollama — run
pip install -e ".[dev,anthropic]"orpip install -e ".[dev,openai]"as appropriate, then restart the server.
Use three different local models matched to each role:
ollama_model: "qwen3-coder:30b"
# Expert: larger model for planning and complex reasoning
ollama_model_expert: "qwen3-coder-next:80b"
# Request: smaller model for chat conversation and prompt building
request_llm_provider: openai
openai_base_url: "http://localhost:11434/v1"
openai_request_model: "gpt-oss:20b"
See the full configuration reference for all options.
| Guide | Description |
|---|---|
| Configuration | All environment variables, extension settings, and model setup |
| Architecture | Planning pipeline, workflow modes, tools, and internals |
| Example Flow | End-to-end walkthrough of a real session with every guardrail called out |
| Reference Library & Refiner | Private docs, RAG enrichment, and cloud privacy |
| UI Verification | Vision-backed screenshot analysis for web pages and desktop GUIs |
| API Reference | REST endpoints and WebSocket protocol |
| Extension Guide | VSCode/VSCodium setup, commands, and settings |
| JetBrains Plugin | IntelliJ, PyCharm, WebStorm, CLion, and all JetBrains IDEs |
| Prompt Customization | Global and model-scoped prompt overrides, including role tuning |
| Skills Guide | How /skill works and how to author high-quality skills |
qwen3-coder:30b) — free, local, no account neededOllama is always required for inline predictions and embeddings, even when using cloud providers.
| Layer | Technology |
|---|---|
| Backend | Python, FastAPI, aiosqlite |
| LLM providers | Ollama, OpenAI, Anthropic |
| Code analysis | tree-sitter (13 languages) |
| Search | Whoosh BM25F + embedding RRF |
| VS Code Extension | TypeScript, VSCode API |
| JetBrains Plugin | Kotlin, IntelliJ Platform SDK, JCEF |
MIT
/memories | Manually trigger memory extraction from the last completed workflow session |
/reboot | Restart the backend server |
| Modelfile Guide |
| Customizing Ollama models with persistent rules |
| llama-server Guide | Using llama.cpp as an alternative to Ollama |
| Regulated Environments | Self-hosted deployment for HIPAA, SOX, GDPR, ITAR, and air-gapped networks |