Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>Whoot — Semantic Branch SearchNew to Visual Studio Code? Get it now.
Whoot — Semantic Branch Search

Whoot — Semantic Branch Search

OwlCode

|
2 installs
| (0) | Free
Find git branches by what they do, not what they're named. Uses local Ollama + LanceDB.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Whoot — Semantic Branch Search

Find git branches by what they do, not what they're named. Everything runs locally: a local Ollama model summarizes each branch, embeddings are stored in an embedded LanceDB vector store, and you search by meaning from the VSCode command palette or sidebar.

No data leaves your machine.


How it works

  1. On activation, Whoot enumerates every non-merged branch (local + remote-tracking) in the repo.
  2. For each branch it collects the commits unique to the branch and a summary of changed files.
  3. A local LLM (default llama3.2:3b via Ollama) produces a short summary + tags describing what the branch is trying to accomplish.
  4. A local embedding model (default nomic-embed-text) embeds the summary into a vector.
  5. Vectors are stored locally and keyed per branch, with the branch tip as the freshness key — unchanged branches are skipped on re-index.
  6. Search embeds your query, does a cosine-similarity lookup scoped to the current repo, and shows ranked matches with summaries.

Prerequisites

You need a working local Ollama install and two models pulled.

  1. Install Ollama → https://ollama.com/download
  2. Start the daemon (it usually auto-starts; otherwise ollama serve)
  3. Pull the default models:
    ollama pull llama3.2:3b
    ollama pull nomic-embed-text
    

Change the models in VSCode settings under Whoot — anything Ollama can serve will work, but if you swap the embedding model you must also update whoot.embedDimensions and run Whoot: Clear Index for Current Repository so the vector store can be rebuilt at the new dimension.

Usage

  • Command Palette → Whoot: Search Branches by Meaning — opens a QuickPick. Type what you want; results are ranked by semantic similarity.
  • Sidebar (Activity Bar → Whoot icon) — search box, browsable list of indexed branches with their summaries, re-index button, and Ollama health indicator.
  • Status bar $(git-branch) Whoot — click to open the search QuickPick.
  • GitHub Copilot Chat → @whoot <query> — when the GitHub Copilot extension is installed, Whoot registers as a chat participant. Example: @whoot rate limiting in the API gateway. Results stream as markdown with inline Checkout and Show log links. Slash command /reindex re-indexes the repository.

Result actions: Checkout, Copy branch name, Show git log.

For origin/foo remote-tracking refs, Checkout creates a local tracking branch (git checkout -b foo origin/foo) if foo doesn't already exist locally.

Commands

Command Description
Whoot: Search Branches by Meaning Semantic QuickPick search
Whoot: Re-index Current Repository Force a full re-index (still skips unchanged branches by tip)
Whoot: Clear Index for Current Repository Drop all stored vectors for this repo

Settings

Setting Default Notes
whoot.ollamaUrl http://localhost:11434 Ollama daemon URL
whoot.chatModel llama3.2:3b Summarization model
whoot.embedModel nomic-embed-text Embedding model
whoot.embedDimensions 768 Must match the embed model. Clear the index when changing.
whoot.includeRemote true Index refs/remotes/* in addition to refs/heads/*
whoot.autoIndex true Index incrementally on activation
whoot.reindexOnCheckout false Run an incremental re-index whenever you check out a different branch
whoot.autoFetchIntervalMinutes 0 Periodically run git fetch and re-index, in minutes. 0 disables.
whoot.maxCommitsPerBranch 50 Cap on commits sampled per branch
whoot.maxFilesPerBranch 40 Cap on changed-file entries in the LLM input
whoot.indexConcurrency 2 Max parallel Ollama requests

When does the index refresh?

By default Whoot re-indexes once on extension activation (autoIndex) and then only when you ask it to (status-bar menu, sidebar refresh, or @whoot /reindex). It does not re-index on every git event in the background. Opt in to either of these for more automatic behavior:

  • whoot.reindexOnCheckout — incremental re-index after every branch checkout.
  • whoot.autoFetchIntervalMinutes — periodic git fetch --all followed by an incremental re-index.

Known limitations

  • First indexing run on a large repo can take a while (one chat + one embed per branch).
  • Changing the embed model requires Whoot: Clear Index for Current Repository because vector dimensions must match the table schema.
  • Multi-root workspaces use the first folder's git repo.
  • Branches with no unique commits relative to the default branch are skipped.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft