Bro Commits 🤙
Your bro who handles git commits so you don't have to.
Intelligent auto-commits with high-quality messages using local LLMs.
Features
- 🧠 Intelligent Commit Detection - Only commits meaningful changes, ignoring whitespace, comments, and trivial edits
- 📝 High-Quality Messages - Generates clear, concise commit messages using Conventional Commits format
- 🏠 100% Local & Free - Uses open-source LLMs that run entirely on your machine
- ⚡ Heuristics-First - Fast deterministic analysis with optional LLM validation
- 🔧 Highly Configurable - Customize thresholds, models, and behavior to your workflow
Quick Start
- Install the extension from VS Code Marketplace
- Open a Git repository
- Make some changes
- Use
Ctrl+Shift+P → "Bro Commits: Auto Commit Now"
Commands
| Command |
Description |
Bro Commits: Auto Commit Now |
Analyze changes and commit if meaningful |
Bro Commits: Generate Commit Message |
Generate a message without committing |
Bro Commits: Preview Commit Decision |
See what Bro Commits thinks about your changes |
Bro Commits: Toggle Auto-Watch |
Enable/disable automatic watching |
Bro Commits: Show Commit History |
View recent commits |
Bro Commits: Configure LLM Model |
Choose or disable the LLM model |
How It Works
Developer edits files
↓
Change detected
↓
Trivial diff filter (whitespace, comments)
↓
Semantic heuristics (functions, classes, logic)
↓
(Optional) LLM validation
↓
If meaningful:
→ Generate commit message
→ Commit (or preview)
Else:
→ Skip commit
What's Considered Meaningful?
✅ Commit-worthy changes:
- New functions, classes, or methods
- Logic changes (conditionals, loops)
- Bug fixes
- Configuration updates
- New files or file deletions
- Test additions/modifications
❌ Ignored changes:
- Whitespace-only changes
- Comment-only edits
- Single-character typo fixes
- Formatting/style-only changes
Configuration
Access settings via File → Preferences → Settings → Bro Commits
Core Settings
| Setting |
Default |
Description |
brocommits.enabled |
true |
Enable/disable the extension |
brocommits.autoCommit |
false |
Auto-commit on file save |
brocommits.autoPush |
false |
Auto-push after commit |
brocommits.minChangedLines |
3 |
Minimum meaningful lines to trigger commit |
brocommits.minChangedFiles |
1 |
Minimum files to trigger commit |
LLM Settings
| Setting |
Default |
Description |
brocommits.useLLM |
true |
Use LLM for validation/generation |
brocommits.llmModel |
tinyllama |
Model: tinyllama, phi2, mistral, codellama, custom |
brocommits.heuristicsOnly |
false |
Disable LLM, use only heuristics |
brocommits.llmTimeout |
30000 |
LLM inference timeout (ms) |
Commit Message Settings
| Setting |
Default |
Description |
brocommits.conventionalCommits |
true |
Use Conventional Commits format |
brocommits.commitPrefix |
"" |
Prefix for all commits (e.g., ticket number) |
brocommits.maxCommitMessageLength |
72 |
Max subject line length |
brocommits.includeBody |
true |
Include detailed body for complex changes |
Setting Up Local LLM
Bro Commits works great with heuristics alone, but for best results, set up a local LLM:
Option 1: Use Built-in Downloader
cd ~/.vscode/extensions/brocommits-*/python
pip install -r requirements.txt
python download_model.py --model tinyllama
Option 2: Bring Your Own Model
- Download any GGUF-format model
- Set
brocommits.llmModel to custom
- Set
brocommits.customModelPath to your model file
Supported Models
| Model |
Size |
Speed |
Quality |
| TinyLlama 1.1B |
669 MB |
⚡⚡⚡ |
⭐⭐ |
| Phi-2 2.7B |
1.6 GB |
⚡⚡ |
⭐⭐⭐ |
| Mistral 7B |
4.1 GB |
⚡ |
⭐⭐⭐⭐ |
| CodeLlama 7B |
4.1 GB |
⚡ |
⭐⭐⭐⭐ |
Status Bar
The status bar shows Bro Commits' current state:
| Icon |
Status |
Description |
| 👁️ |
Watching |
Monitoring for changes |
| 🔄 |
Analyzing |
Evaluating current changes |
| 📤 |
Committing |
Creating commit |
| ✅ |
Committed |
Successfully committed |
| ⏭️ |
Skipped |
Changes were trivial |
| ❌ |
Error |
Something went wrong |
| 🚫 |
Disabled |
Extension is disabled |
Click the status bar item to toggle watching.
Examples
Auto-generated Messages
feat: add user authentication module
fix: resolve null pointer in data parser
docs: update README with installation guide
refactor: simplify validation logic
test: add unit tests for api service
chore: update dependencies
Requirements
- VS Code 1.108.0 or higher
- Git installed and available in PATH
- (Optional) Python 3.8+ for LLM features
- (Optional) 2-8 GB RAM for local LLM
Privacy & Security
🔒 Your code never leaves your machine.
- All analysis is done locally
- LLM inference runs 100% offline
- No API calls, no telemetry, no cloud services
- Your commits are truly yours
License
MIT License
Made with 🤙 by developers, for developers.
Because life's too short for "fix stuff" commits.