Agent harness. BYOLLM.
Runs on your machine.

Agentic, private, zero telemetry. Powered by Ollama, LM Studio, Anthropic, OpenAI, Groq, Mistral, Gemini, and any OpenAI-compatible API.

Everything you need, nothing you don't

๐Ÿ’ฌ

Chat

Streaming chat with PLAN and BUILD modes. Multiple sessions, compact history, export to Markdown. Type / for filterable slash commands โ€” explain, refactor, commit, and more.

๐Ÿค–

Agentic Loop

Enable the โšก Tools toggle in BUILD mode and the model reads, writes, searches, and runs terminal commands in your workspace. Off by default โ€” turn it on when you need it. Per-action approval for destructive operations.

๐Ÿ”

RAG

Your codebase is indexed with BM25 + optional semantic embeddings. Relevant files are automatically attached to every message.

โœฆ

Inline Autocomplete

Ghost-text completions as you type. Adaptive debounce, word-by-word accept, per-language model routing.

โœ๏ธ

Inline Edit

Select code, press Ctrl+Shift+I, describe what you want. Review the diff, accept or reject.

๐Ÿ”Œ

MCP Support

Connect any Model Context Protocol server. Tools are namespaced and gated behind per-action approval.

๐Ÿ“Ž

@ Context

Attach files, selected code, git diffs, terminal output, web pages, and VS Code diagnostics with @.

๐Ÿ““

Notebook Support

Jupyter notebooks are indexed and readable by the agent. Cell content is extracted and understood as code.

๐Ÿ‘๏ธ

Vision

Paste or upload images into chat. Works with Ollama vision models (llava, qwen2-vl) and all cloud providers that support it.

๐Ÿง 

Memory

Persistent instructions injected into every chat. Auto-saves as you type. Amber dot on the icon when active.

๐ŸŽ™๏ธ

Voice Input

Speak your prompts. Audio is transcribed on-device using Whisper โ€” nothing is sent to a server. Six models from Tiny EN (~40 MB) to Small (~244 MB). Push-to-talk with model pre-warming for instant first use.

Floating Panel

Pop Grom out of the sidebar into a standalone window. Ideal for multi-monitor setups โ€” keep your file tree and editor visible while Grom floats on a second screen. Persists across restarts.

Voice Input

Grom can transcribe your voice directly into the prompt input โ€” entirely on your device, with no cloud involvement.

1

Enable the mic button

Open Settings โ†’ Voice Input and toggle Enable voice input. The mic button appears in the toolbar.

2

Download ffmpeg (once)

Grom uses ffmpeg for audio capture. On first use it offers to download a ~50 MB static binary into its own storage folder โ€” nothing is added to your system PATH. Remove it anytime from Settings โ†’ Voice Input.

3

Choose your Whisper model

Pick from six models in Settings โ†’ Voice Input โ€” from Tiny EN (~40 MB, fast) up to Small (~244 MB, best accuracy). English-only .en variants are more accurate for English speakers. Models download on demand and are cached locally. Download multiple and switch at any time.

4

Record

Click the mic button or press Ctrl+Shift+M to start recording. Click again to stop โ€” the transcript is appended to your prompt. The model pre-warms on startup so the first utterance transcribes without delay.

Audio is transcribed entirely on your device using Transformers.js and OpenAI Whisper. Nothing leaves your machine. Voice input is optional and designed for those who want or need it as an accessibility tool.

Platform support: Windows (DirectShow), macOS (avfoundation), Linux (PulseAudio / PipeWire / ALSA).

Floating Panel

Pop Grom out of the sidebar into its own window โ€” perfect for multi-monitor setups where you want Grom on a second screen without sacrificing your file tree.

1

Click the float button

Press the button in the Grom header to detach the panel into a standalone window. The sidebar shows a floating pill and a banner confirming it's active.

2

Use Grom normally

Chat, voice input, model switching, PLAN and BUILD modes โ€” everything works in the floating window. Grom's icon switches to the cloud variant so you always know which panel is live.

3

Close when done

Close the floating window or click Close floating in the sidebar banner to return to the sidebar. The panel persists across VS Code restarts and reopens automatically.

Your choice of model

Local models work out of the box with no account required. Cloud providers are optional โ€” bring your own key.

ProviderNotes
OllamaLocal โ€” 127.0.0.1:11434, recommended for privacy
LM StudioLocal โ€” 127.0.0.1:1234
Open Codeapi.opencode.ai โ€” API key stored in OS keychain
OpenAIGPT-4o, o1, o3-mini โ€” API key stored in OS keychain
AnthropicClaude Sonnet, Claude Opus โ€” API key stored in OS keychain
GroqLlama 3, Mixtral โ€” fast cloud inference
MistralMistral Large, Small, Codestral
GeminiGemini 2.5 Pro, Flash โ€” Google AI API
CustomAny OpenAI-compatible or Anthropic-compatible endpoint

API keys are stored in the OS keychain (Windows Credential Manager, macOS Keychain, libsecret on Linux) โ€” never in settings.json.

@ Context mentions

MentionWhat it includes
@selectionCurrently selected text in the active editor
@filenameAny workspace file โ€” open tabs shown first
@problemsAll current VS Code errors and warnings
@gitYour current uncommitted diff
@terminalRecent output from the integrated terminal
@url:https://...Fetches and strips a web page
@docsSearches all indexed documentation sources
@docs:nameSearches a specific documentation source by name

Setting up documentation sources

Add URLs to grom.docSources in your VS Code settings. Grom crawls each URL, follows same-origin links (up to 40 pages per source), and builds a searchable index. Any HTTP/HTTPS URL works โ€” external doc sites or a local dev server running on localhost.

"grom.docSources": [
  { "name": "react",  "url": "https://react.dev/reference" },
  { "name": "mdn",    "url": "https://developer.mozilla.org/en-US/docs/Web/API" },
  { "name": "mylib",  "url": "http://localhost:3000/docs" }
]

Each entry needs a name (short identifier used with @docs:name) and a url (the root page to start crawling from). Grom follows links within the configured path only, up to 40 pages per source. Indexing runs at startup and whenever the setting changes.

Note: Grom fetches pages directly and does not run JavaScript. Sites that render content client-side (pure SPAs) will yield little or no usable text. Use a server-side rendered URL, a static export, or a local dev server instead.

Quick start

1

Install Grom

Search for Grom in the VS Code Extensions panel, or install from the marketplace.

2

Pick a provider

For local: install Ollama and pull a model โ€” ollama pull qwen2.5-coder. For cloud: select Anthropic, OpenAI, Groq, or Mistral and add your API key when prompted.

3

Start chatting

Open the Grom panel from the activity bar. Switch to BUILD mode and hit the โšก Tools button when you want Grom to read and write files in your workspace.