AI-powered git commit message generator using local LLMs
Project description
๐ค komit
AI-powered git commit message generator using local LLMs via Ollama. No API keys, no internet required โ runs completely locally and privately.
Features
- ๐ง Local LLM โ uses Ollama, no API keys needed
- ๐ฟ Branch-Aware Context โ infers conventional types and scopes directly from your active git branch
- ๐ Multiple commit styles โ conventional, simple, detailed
- ๐ Smart diff allocation โ per-file context budget, code files prioritized over docs
- ๐ Deep mode โ summarize each file separately for better messages on large changesets
- ๐ก Explain mode โ summarize what changed without committing
- ๐ Recent commits context โ last 3 commits included in the prompt for better inference
- ๐ Regenerate โ not happy? generate a new message instantly
- โ๏ธ Edit before commit โ open your editor to tweak the message
- โ๏ธ CLI flags โ control style, model, and more from the command line
- ๐ Config file โ persist your preferences with
komit init - ๐ Universal โ works via pip, binary, or shell script
- ๐ช Cross-platform โ Linux, macOS, Windows
- โก Fast โ runs on your machine, no network calls to external APIs
- ๐ Ollama validation โ checks if Ollama is running and model exists before generating
- ๐ Smart updates โ detects pip vs binary install and updates accordingly
Requirements
- Ollama installed and running
- A local model pulled (e.g.
ollama pull qwen2.5:7b)
Recommended Models
| Model | Size | Best for |
|---|---|---|
qwen2.5:7b |
4.7GB | Best quality |
mistral:7b |
4.1GB | Good balance |
llama3.2:3b |
2.0GB | Fastest |
ollama pull qwen2.5:7b
Installation
Option 1 โ One line install (Linux/macOS, no Python required)
curl -fsSL https://raw.githubusercontent.com/glemiu6/komit/master/scripts/install.sh | bash
Option 2 โ Windows PowerShell
irm https://raw.githubusercontent.com/glemiu6/komit/master/scripts/install.ps1 | iex
Option 3 โ pip
pip install komit
Option 4 โ pipx (recommended for CLI tools)
pipx install komit
Option 5 โ Download binary
Download the binary for your platform from GitHub Releases:
| Platform | Binary |
|---|---|
| Linux x86_64 | komit-linux-x86_64 |
| macOS Apple Silicon | komit-macos-arm64 |
| Windows | komit-windows-x86_64.exe |
Intel Mac users: use
pip install komitinstead.
# Linux/macOS
chmod +x komit-*
sudo mv komit-* /usr/local/bin/komit
Setup
Git alias (recommended)
git config --global alias.ai '!komit'
Now you can use git ai as a shortcut.
Shell completion
# bash
echo 'eval "$(register-python-argcomplete komit)"' >> ~/.bashrc
source ~/.bashrc
# zsh
echo 'eval "$(register-python-argcomplete komit)"' >> ~/.zshrc
source ~/.zshrc
Usage
# stage your changes
git add .
# generate commit message
komit
# or via git alias
git ai
Subcommands & Maintenance
komit init # create or overwrite your config file
komit update # update to the latest version
komit uninstall # remove komit from your system
CLI flags
| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--style |
-s |
conventional, simple, detailed |
config | Commit message format |
--model |
-m |
String | config | Ollama model to use |
--ollama-url |
-u |
URL | config | Ollama API endpoint |
--max_diff |
โ | Integer | config | Max diff length in characters |
--timeout |
โ | Integer | config | LLM request timeout in seconds |
--include_branch_name |
-ib |
Bool | config | Append branch name to commit message |
--dry-run |
-dr |
Flag | False |
Preview message without committing |
--explain |
โ | Flag | False |
Explain staged changes without committing |
--deep |
โ | Flag | False |
Summarize each file separately (slower, better on large diffs) |
--config |
โ | Path | โ | Path to a custom config file |
Examples
# simple style
komit --style simple
# use a faster model
komit --model llama3.2:3b
# preview without committing
komit --dry-run
# explain what changed without committing
komit --explain
# better messages on large diffs (slower)
komit --deep
# include branch name in the message
komit --include_branch_name True
# remote Ollama instance
komit --ollama-url http://192.168.1.10:11434
Interactive Experience
โญโโโโโโโโโโโโโโโโโโโโโโโโ Staged files (3) โโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โข src/auth.py โ
โ โข tests/test_auth.py โ
โ โข README.md โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Branch name: feat/auth-tokens
Model: qwen2.5:7b ยท Style: conventional
โ Generating commit message...
โญโโโโโโโโโโโโโโโโโโโโ Suggested commit message โโโโโโโโโโโโโโโโโโโโโโฎ
โ feat: add JWT authentication token engine [feat/auth-tokens] โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
ยป Choose an action: (y)es, (n)o, (e)dit, (r)egenerate (y):
| Option | Key | Behavior |
|---|---|---|
| Yes | y |
Commit with the generated message |
| No | n |
Cancel without committing |
| Edit | e |
Open your editor to modify the message |
| Regenerate | r |
Generate a new message |
Deep Mode
For large changesets with many files, --deep summarizes each file individually before generating the final commit message. More accurate, but slower since it makes one LLM call per file.
komit --deep
Explain Mode
Explains your staged changes in plain English without committing โ useful for code review prep or PR descriptions.
komit --explain
Branch Name Parsing
When --include_branch_name is enabled, komit reads your branch name to infer the commit type and scope automatically.
| Branch | Inferred type | Inferred scope |
|---|---|---|
feat/auth-login |
feat |
auth |
fix/ui_button |
fix |
ui_button |
refactor/api-layer |
refactor |
api |
Supported types: feat, fix, chore, docs, style, refactor, test, ci, perf.
Configuration
Run komit init to create your config file at ~/.config/komit/config.toml:
model = "qwen2.5:7b"
style = "conventional"
ollama_url = "http://localhost:11434"
max_diff_length = 4000
timeout = 60
include_branch_name = false
CLI flags always override config file values.
Commit Style Outputs
Conventional (default)
feat: add user authentication
fix: resolve null pointer in response pipeline
Simple
Add user authentication
Fix null pointer in response pipeline
Detailed
feat: add user authentication
- Add JWT token generation pipeline
- Implement password hashing with bcrypt
- Add login and logout endpoints
Maintenance
komit update # update to latest version
komit uninstall # remove komit completely
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-cool-feature) - Commit your changes (
komit๐) - Push to the branch (
git push origin feat/my-cool-feature) - Open a Pull Request
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file komit-0.5.0.tar.gz.
File metadata
- Download URL: komit-0.5.0.tar.gz
- Upload date:
- Size: 21.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d41aa9472d47585a279cb7bf65bfebf0aeadb6b5ea7f1628eae98cd4835dc3c7
|
|
| MD5 |
d625a3d2be49eb7bf83d076b5ed82cc7
|
|
| BLAKE2b-256 |
758873b5039a3be3bc0ca44a4f9aa1a8662a3dafe4b2314fa87a4c8e5a4b72c1
|
File details
Details for the file komit-0.5.0-py3-none-any.whl.
File metadata
- Download URL: komit-0.5.0-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b923f4a6bea9f239e2aa3f6524da0de27674c30848e3fbd5ac4b3dc5376d18f
|
|
| MD5 |
704059ef5f39e89ac04927bc0e2b98eb
|
|
| BLAKE2b-256 |
d2287c0cfb7c1190a51b8e6acad22ad2ed1b64633142e1948fc7b3dd64709b42
|