Reading the repo
Opening the box…
Reading the repo
Opening the box…
How to install on Linux
Free, Micro AI Code Reviews That Run on Git Commit
Saved setup from 10 h ago
Will it work on Linux?
We also support:
To configure:
Anthropic Compatible API connector from the UI.gw.claudeapi.com) or entering a custom URL.Setup guide: Using ClaudeAPI with git-lrc
Heads-upBuilding it yourself? It also needs 4 settings in .env (2 secret).
CONTRIBUTING.mdmake build-local && lrc hooks install.storage/, and keep network operations in network/.storage/ or network/, update the matching status doc and run make check-status-doc.The ideas behind git-lrc matter, but so does the way changes enter the project.
This guide is here to help you contribute in a way that is clear, scoped, and easy to review.
git-lrc has explicit security and disclosure guidance. Please use it.
There are several valid ways to contribute, but they serve different purposes:
If the work is still fuzzy, start in Discussions.
At git-lrc, we treat writing as a tool for clarifying thought.
It is usually a mistake to begin implementation before the shape of the work and the reason for doing it are clearly understood.
If you cannot explain what you plan to do, what problem it solves, and why that approach is the right one, the work is probably not ready yet.
Work backwards from the problem and from the user experience. That usually leads to better scoping and better implementation.
We do not recommend directly raising PRs.
The preferred path is:
This keeps the project focused and avoids PRs that arrive before the problem has been agreed on.
Use the Go version declared in go.mod.
Build and install git-lrc locally with:
make build-local && lrc hooks install
Important conventions:
lrc.Useful sanity checks after building:
lrc version
lrc hooks status
Run the most specific test that proves your change.
Prefer focused validation such as:
make test-pkg PKG=./path/to/package
Use broader test runs only when the scope actually justifies them.
The main confidence lanes are now split explicitly:
make test-go
make test-simulator
make test-hooks-worktree
make test-hooks-claude
make test-js
make testall
Use the cheapest lane that proves the behavior you changed:
make test-simulator for decision flow, phase gating, message resolution, and race behavior.make test-hooks-worktree or make test-hooks-claude for real temp-repo, hook, worktree, and Claude wrapper regressions.make test-js for deterministic UI state-model regressions.make test-go when the touched slice is broader or package-scoped.If a bug escaped once, add a regression test in the cheapest relevant lane before moving on.
For end-to-end testing without real AI calls, use fake review mode:
make build-local-test
WAIT=30s make run-fake-review
For UI work, use the live development loop:
make dev-ui
That flow lets you edit files under internal/staticserve/static/ and refresh the browser without rebuilding the binary for each UI change.
If your UI work changes icons, button glyphs, provider marks, or icon-bearing controls, follow docs/ui-iconography.md.
internal/staticserve/static/components/icons.js.git-lrc has explicit architectural boundaries. Please follow them.
storage/.network/.storage/ and network/ functions rather than reimplementing the behavior elsewhere.If your change affects those responsibilities, update the status documents alongside the code:
Then verify the line references with:
make check-status-doc
Please keep these project rules in mind when proposing or implementing changes:
A good pull request in git-lrc is:
If your PR changes behavior, call that out directly.
If your PR touches UI, you must include a GIF or video walkthrough of the working change.
When your work changes the user interface, a GIF or video walkthrough is required.
The walkthrough should make it easy for a reviewer to see:
PRs that change UI without this walkthrough are not complete.
AI-assisted programming is fine, but UI changes still need to be tested and demonstrated clearly.
If you contribute to git-lrc, you agree that you have read and accepted the terms in the Contributor License Agreement.
Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
Compare yours with the README's “Compatible API Support” list above before installing anything.
git clone https://github.com/HexmosTech/git-lrc.git cd git-lrc
Go 1.26.10
sudo snap install go --classic # or https://go.dev/dl/
Fill in secrets: B2_KEY_ID, B2_APP_KEY
cp .env.example .env
go mod download
go run .
go test ./...
# Linux/macOS
curl -L https://hexmos.com/ipm-install | bash && ipm i HexmosTech/git-lrc
# Windows
iwr https://hexmos.com/ipm-install-ps | iex; ipm i HexmosTech/git-lrc
Linux / macOS:
curl -fsSL https://hexmos.com/lrc-install.sh | bash
Windows (PowerShell):
iwr -useb https://hexmos.com/lrc-install.ps1 | iex
<details>
<summary><strong>GitHub Codespaces</strong></summary>
curl -fsSL https://git.new/lrc-install | bash
</details>
Binary installed. Hooks set up globally. Done.
Installing git-lrc also gives you claude-lrc -- the same review, vouch, and skip workflow, available as slash commands right inside Claude Code. No separate install, no leaving the chat.
| What you want | How |
| ------------------------- | -------------------- |
| Natural language | review with lrc |
| Slash command | /lrc:review |
| Quality vouch | /lrc:vouch |
| Intentional bypass | /lrc:skip |
Use git-lrc when you want editor-independent, commit-time enforcement across repos and tools. Use claude-lrc when you want natural-language and slash-command control directly inside Claude Code.
git lrc setup
Here's a quick video of how setup works:
https://github.com/user-attachments/assets/392a4605-6e45-42ad-b2d9-6435312444b5
Two steps, both open in your browser:
~1 minute. One-time setup, machine-wide. After this, every git repo on your machine triggers review on commit. No per-repo config needed.
No reports for Linux yet.
GitManual AI Agent reads the 11 key files and writes a step-by-step guide for Linux. Once written, it's saved for everyone.