Local-first · On-device embeddings
Semantic Search for Git Commands. Ask in plain language — get a pasteable Git example. Fully local. Sub-second on low-end hardware.
Soft undo and hard undo look alike until you get them wrong. Ask what you mean — get the right example.
Install
Bun package (npm registry) or standalone binaries from GitHub Releases. Runtime for the package path requires Bun ≥ 1.1.
bun add -g git-grasp
git-grasp "undo last commit but keep my files"
Download the zip for your OS, extract, and run git-grasp from that folder
(includes data/ and config/).
Use
Common commands from the CLI reference. Full docs in the repo under apps/cli/README.md.
git-grasp "<query>" git-grasp search [query…] Flags -v, --verbose confidence / channel scores -c, --copy copy winning example to clipboard --json machine-readable JSON on stdout -q, --quiet no spinner; skip telemetry invite Never runs Git for you — pasteable suggestions only. echo "undo last commit keep files" | git-grasp
FAQ
Straight answers for a local-first Git search tool — and for the people evaluating the work behind it.
What is git-grasp?
A local-first search tool for validated Git recipes: you ask in plain language and get a title, description, and command snippet — matched with on-device embeddings and full-text search. The catalog is built with a language model, but the tool never runs Git for you.
What is it not?
Not a Git GUI or command wrapper, not a hosted search service, and not search-time LLM reranking — retrieval is hybrid vec+BM25 only. The marketing site is a playground plus docs; the CLI package path requires Bun.
Why git-grasp?
I keep forgetting Git syntax, and “just Google it” usually means a context switch I find quite taxing. Ironically, after working on this project, the need to look commands up plummeted. You might say the whole thing is a learning experience.
Why don’t we use an LLM?
An LLM is great at approximating unstructured answers; when I’m searching for commands I want the most precise answer possible. The git-grasp catalog is still built entirely with a language model (some might even call it distillation), but results are validated against execution and tied to their descriptions via a local embedding model — making retrieval faster, energy-cheaper, and, hopefully, better.
What does “local-first” mean here?
You can install the CLI and run it fully offline on your machine — including in an enterprise context — since it’s MIT-licensed end to end. You can optionally turn telemetry on; on the web playground it is on by default after Start. When telemetry is on, I collect your queries and use them to improve the catalog further.
What if something is wrong?
Tracking queries enables cyclical improvement, so while you should still report specific issues, many will hopefully be resolved automatically in the next cycle. I don’t have a fixed timeline yet — cycles will depend on volume. You can also open an issue on the GitHub project. Open an issue (opens in a new tab) .
How can I contribute?
Honestly, the fastest way is to use the tool with telemetry on. I’d also love feedback on the project and approach — especially whether it can scale to broader topics.