Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>LlaMa Commit StudioNew to Visual Studio Code? Get it now.
LlaMa Commit Studio

LlaMa Commit Studio

MadeByAriel

|
1 install
| (0) | Free
Generate git commit messages for your staged changes with a local LLM served by LM Studio or Ollama.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

LlaMa Commit Studio

Commit messages written by a model running on your own machine.
Reads your staged diff, asks LM Studio or Ollama, drops the message in the commit box.
No API keys. No cloud. No code leaving your computer.

VS Code 1.85+ Runs 100% local LM Studio and Ollama No telemetry MIT license

AR. Made By Ariel.

Quickstart

Three steps: run a model in LM Studio or Ollama, connect from the main screen, generate the commit message from the Source Control toolbar

1 · Run a model. Install LM Studio and start its server from the Developer tab, or install Ollama and pull a model: ollama pull qwen2.5-coder:7b. Any instruction-tuned model works; a 7B coding model is quick on consumer hardware and writes good messages.

2 · Connect. Click the gear at the top of the Source Control panel. The panel looks for your server as it opens — press Use this on what it finds, or set the base URL yourself and press Test connection. Pick a model from the list, then Save settings.

3 · Generate. Stage some changes and click the sparkle next to the gear. The message appears in the commit input box, ready to edit. Nothing is committed for you.

A setup walkthrough also opens the first time the extension activates, and can be reopened at any time with LlaMa Commit Studio: Open Setup Guide.

What it adds

Two buttons at the top of the Source Control ("Changes") panel:

Button Action
Sparkle Read the staged diff, generate a commit message, put it in the input box
Gear Open the main screen, where the connection and the model are configured

Plus a llama button in the Activity Bar, down the left edge of the window: it opens a small view with the provider and model currently in use, and one-click access to the main screen, a generation, server detection and the setup guide.

  • Finds your server for you — detection reads LM Studio's own saved port and OLLAMA_HOST before falling back to defaults, so a non-default port is not a dead end.
  • A model list that tells you something — load state, quantisation, parameter size, context length and vision support, with embedding models filtered out.
  • Conventional or freeform — feat(auth): add token refresh, or a plain imperative summary.
  • Local history — the last messages the extension wrote are listed under the header on the main screen.

Requirements

  • VS Code 1.85 or newer, with the built-in Git extension enabled.
  • A local model server, either:
    • LM Studio (lmstudio.ai) with a model loaded and the server started from the Developer tab (default http://localhost:1234/v1), or
    • Ollama (ollama.com) running with at least one model pulled (default http://localhost:11434).

Any instruction-tuned model works. Coding models around 7B, such as qwen2.5-coder:7b, give solid results while staying quick on consumer hardware.

Choosing a model

The model list loads on its own when the main screen opens, and Refresh list reloads it. It shows what each model actually is, so the choice does not depend on guessing from its name:

  • loaded marks models already in memory. Those answer immediately; anything else is loaded on first use, which can take a while for a large model.
  • Quantisation (Q4_K_M, Q8_0), parameter size and context length show how heavy the model is and how much diff it can take in one go.
  • vision marks multimodal models. They write commit messages perfectly well; the label is only there so the list matches what your server reports.
  • Models are sorted with loaded ones first, and a filter box appears once there are more than five.

Embedding models are left out and counted in a note underneath. They cannot produce text at all, so offering them would only lead to a failed generation later.

The detail comes from LM Studio's /api/v0/models endpoint, or from Ollama's /api/tags combined with /api/ps for load state. Older LM Studio builds without /api/v0 fall back to the plain OpenAI-compatible list, which yields names only.

Finding your server automatically

Ports often are not the defaults, so the address is detected rather than assumed. Detection runs when the main screen opens, from the Auto-detect button, from LlaMa Commit Studio: Detect Local AI Server, and from the Detect Server button on a connection error.

Addresses are gathered from, in order:

  1. LM Studio's own saved server settings (~/.lmstudio/.internal/http-server-config.json, or ~/.cache/lm-studio/... on older installs), which records the exact port it last served on. A wildcard bind such as 0.0.0.0 maps back to 127.0.0.1 for dialling.
  2. The OLLAMA_HOST environment variable, accepting host:port, a bare host, or a full URL.
  3. The default ports, 1234 for LM Studio and 11434 for Ollama.

Each candidate is then probed to see which product actually answers, and the reply's shape is what decides: LM Studio responds to unknown endpoints with HTTP 200 and an {"error": ...} body, so a successful status on Ollama's /api/tags proves nothing on its own. A server counts as Ollama only when /api/tags returns a models array, and as LM Studio only when /v1/models returns a data array. Ollama is checked first, because it also serves an OpenAI-compatible /v1 API.

Detection never overwrites your settings on its own. It shows what it found, with the address and model count, and applies it when you choose it.

Settings

All settings are editable in the visual panel or in settings.json.

Setting Default Description
llamaCommitStudio.provider lmstudio Which local server to talk to: lmstudio or ollama.
llamaCommitStudio.lmStudio.baseUrl http://localhost:1234/v1 LM Studio server base URL. A missing /v1 suffix is added for you.
llamaCommitStudio.ollama.baseUrl http://localhost:11434 Ollama server base URL.
llamaCommitStudio.model (empty) Model id. When empty and the server offers exactly one usable model, that one is adopted automatically.
llamaCommitStudio.commitStyle conventional conventional for Conventional Commits, freeform for a plain summary.
llamaCommitStudio.temperature 0.3 Sampling temperature, 0 to 2.
llamaCommitStudio.maxDiffChars 16000 Diff characters sent to the model. Larger diffs are truncated.

Settings are written to your user settings unless a workspace override already exists, in which case the override is updated instead.

Commands

Command Description
LlaMa Commit Studio: Generate Commit Message Same as the sparkle button.
LlaMa Commit Studio: Open Main Screen Same as the gear button and the Activity Bar icon.
LlaMa Commit Studio: Detect Local AI Server Finds a running server and switches to it.
LlaMa Commit Studio: Open Setup Guide Reopens the walkthrough.

How it works

  1. The staged diff is read through the built-in Git extension's API (repository.diff(true)), together with the list of staged files.
  2. The diff is truncated to maxDiffChars and sent to your local server, over POST /v1/chat/completions for LM Studio or POST /api/chat for Ollama.
  3. The reply is cleaned up: reasoning blocks (<think>…</think>), markdown fences, wrapping quotes and "Commit message:" labels are stripped.
  4. The result is assigned to the Source Control input box.

Requests go only to the base URL you configure. There is no telemetry and no other network access.

Troubleshooting

  • "Could not reach LM Studio / Ollama" – the server is not running or the base URL is wrong. Press Auto-detect on the main screen, or Detect Server on the error notification. LM Studio needs its server explicitly started in the Developer tab.
  • "does not answer Ollama's /api/tags endpoint" – the address is reachable but belongs to the other product. Switch the provider, or use Auto-detect to set both at once.
  • No models in the list – LM Studio lists every downloaded model and marks the loaded ones, so an empty list means nothing is downloaded yet; Ollama lists only models you have pulled (ollama list). If the server reports models but the list stays empty, they are all embedding models, and the note under the list says so.
  • Timeouts – requests give up after 120 seconds. Very large diffs on a slow model can exceed that; lower maxDiffChars or use a smaller model.
  • Detailed logs – run Output: Show Output Channels and pick LlaMa Commit Studio to see every request and error.

Development

npm install       # install dev dependencies
npm run build     # bundle to dist/extension.js
npm run watch     # rebuild on change
npm run typecheck # tsc --noEmit
npm run lint      # eslint
npm run smoke     # exercise both providers against a fake local server, no install needed
npm run smoke:live # also detect the real servers on this machine and generate a real message
npm run package   # build a .vsix

Press F5 to launch an Extension Development Host, then open a git repository in that window to try the toolbar buttons.

Notes for maintainers

  • Right-click on a toolbar button is not customisable. VS Code's scm/title menu invokes a single command on left-click, and right-clicking a toolbar icon is handled by the editor shell itself (it shows its own "Hide Command" menu). Two adjacent buttons, one for generating and one for settings, are the supported equivalent.
  • The scm/title contributions deliberately carry no when clause so the buttons stay visible across VS Code versions and forks, where the scmProvider context key is not always available in the Source Control view title. Repository resolution happens at runtime instead, with a friendly message when no git repository is open.
  • publisher in package.json is MadeByAriel, so the Marketplace extension id is MadeByAriel.llama-commit-studio. It has to match the publisher the vsce personal access token belongs to, or publishing fails with a publisher-id mismatch.
  • Brand assets: media/icon.png (256x256) is the Marketplace icon; media/brand/lockup.png (433x261) is the main screen header lockup, cropped from media/brand/lockup-source.png and kept on its dark plate so it reads the same in light and dark themes; media/activity-bar.svg is the monochrome currentColor mark for the Activity Bar; media/logo-wordmark.png (1280x360) is the readme lockup; media/readme/quickstart.png is the quickstart graphic, rendered from its own source, media/readme/quickstart.html, at zoom: 2 and screenshotted (2560x954, so it stays crisp at a 1280 display width). The readme itself does not reference those local files — every readme image is an absolute https://i.imgur.com/... URL (album), so the Marketplace and GitHub renderings work without the assets being pushed anywhere first. The local copies stay in the repo as the sources of truth; re-upload to the album and swap the URL when one changes. Readme-only assets remain listed in .vscodeignore so they don't add weight to the VSIX.

License

MIT


AR.  Made By Ariel.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft