Semantic search over your git commit history, right in the terminal.
Type a natural language query and instantly find relevant commits — no need to remember exact messages, file names, or dates. Powered by local embeddings, everything stays on your machine.
- Indexes your commit history (messages + changed file paths)
- Embeds each commit locally using all-MiniLM-L6-v2 via Transformers.js
- Stores vectors in SQLite with sqlite-vec
- Searches using vector similarity — no keywords needed
The index lives in .git-search/ inside your repo and updates incrementally on each launch.
bun install -g @forjd/git-searchOr run directly:
bunx @forjd/git-searchRun inside any git repository:
# Launch the search TUI (indexes on first run)
git-search
# Search from the command line (no TUI)
git-search search "auth login flow"
# Limit results and get JSON output
git-search search "database migration" --limit 5 --json
# Force a full re-index
git-search reindex
# Show index statistics
git-search status| Key | Action |
|---|---|
| Type | Search commits |
Tab / Shift+Tab |
Switch between search and results |
↑ / ↓ |
Navigate results |
Enter |
View commit details |
Escape |
Close detail / return to search |
q |
Quit |
- Bun runtime
- macOS: Homebrew SQLite (
brew install sqlite) — Apple's bundled SQLite disables the extension loading that sqlite-vec needs - Linux: Should work out of the box
bun install
bun run dev # Run the TUI
bun test # Run testssrc/
index.ts CLI entry point
app.ts TUI app composition & state
db/
database.ts SQLite + sqlite-vec setup
queries.ts Insert/search helpers
indexer/
git.ts Git log parsing
embedder.ts Transformers.js pipeline
indexer.ts Orchestration & progress
search/
search.ts Query embedding + KNN search
format.ts CLI output formatting (text + JSON)
views/
indexing-screen Progress bar during indexing
search-input Search bar
results-list Scrollable commit results
commit-detail Expanded commit view
status-bar Repo info & key hints
MIT — Copyright (c) 2025 Forjd