Skip to main content

🤖 komit

AI-powered git commit message generator using local LLMs via Ollama. No API keys, no internet required — runs completely locally and privately.


PyPI Python License Downloads CI codecov


Buy Me a Coffee


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, Homebrew, 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)

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

brew tap glemiu6/komit
brew install komit

Shell completion is included automatically — no extra setup needed.

Option 2 — One line install (Linux/macOS, no Python required)

curl -fsSL https://raw.githubusercontent.com/glemiu6/komit/master/scripts/install.sh | bash

Option 3 — Windows PowerShell

irm https://raw.githubusercontent.com/glemiu6/komit/master/scripts/install.ps1 | iex

Option 4 — pip

pip install komit
pipx install komit

Option 6 — 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 komit instead.

# Linux/macOS
chmod +x komit-*
sudo mv komit-* /usr/local/bin/komit

Setup

git config --global alias.ai '!komit'

Now you can use git ai as a shortcut.

Shell completion

If installed via Homebrew, completion works automatically.

For other install methods, activate it once:

# bash
echo 'eval "$(register-python-argcomplete komit)"' >> ~/.bashrc
source ~/.bashrc

# zsh
echo 'eval "$(register-python-argcomplete komit)"' >> ~/.zshrc
source ~/.zshrc

# fish
register-python-argcomplete --shell fish komit | source

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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/my-cool-feature)
  3. Commit your changes (komit 😉)
  4. Push to the branch (git push origin feat/my-cool-feature)
  5. Open a Pull Request

License

Apache License 2.0

Metadata

Release files for komit 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for komit 1.0.1
File Size Uploaded
komit-1.0.1.tar.gz 21.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for komit 1.0.1
File Interpreter ABI Platform
komit-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 41.7 kB

Release files / komit-1.0.1.tar.gz

Download URL komit-1.0.1.tar.gz
Size 21.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9a06460026fcf7abf06cfdac5b63f5cef67c321e79b93f227708de5030d6a5e7
BLAKE2b-256 checksum
How to use checksums
0c048d20d2e2efc77e1d5b03f13a436add8e9f7ef554178cda563e7840cf8dff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / komit-1.0.1-py3-none-any.whl

Download URL komit-1.0.1-py3-none-any.whl
Size 20.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d654033215ca51e3c904e67c2b2187e4d004b64c0cbe3055c5ddc727fa1d4178
BLAKE2b-256 checksum
How to use checksums
ef7c4474a3cd005906ff6cdfbc3c0f98a6e77d9d2a8518d6568005b56e46eb38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page