p.enthalabs

GitHub - erico964-blip/gitpulse: ⚡ AI-powered conventional commit message generator for Git

⚡ Git Pulse

[](https://github.com/erico964-blip/gitpulse#-git-pulse) > **AI-powered conventional commit messages, right from your terminal.**

![Image 1: PyPI version](https://badge.fury.io/py/gitpulse-commit)![Image 2: PyPI downloads](https://pypi.org/project/gitpulse-commit/)![Image 3: GitHub stars](https://github.com/erico964-blip/gitpulse/stargazers)![Image 4: License: MIT](https://opensource.org/licenses/MIT)![Image 5: Python versions](https://pypi.org/project/gitpulse-commit/)

![Image 6: Demo GIF placeholder](https://camo.githubusercontent.com/df15fc1905b88f406f7ece097a7fcd287c0e8bbc0b80a59f3a7409efa6c627bb/68747470733a2f2f7669612e706c616365686f6c6465722e636f6d2f383030783430303f746578743d4769742b50756c73652b44656d6f)

Stop struggling with commit messages. **Git Pulse** reads your staged changes, asks your favorite AI model, and generates a perfect Conventional Commit message – ready to use.

- * *

✨ Features

[](https://github.com/erico964-blip/gitpulse#-features)

- 🧠 Uses AI to understand your code diff and craft meaningful messages

- 📐 Strict Conventional Commits format (`feat(scope): description`)

- 🔒 Title never exceeds 72 characters

- 🎮 Interactive (confirm/edit/abort) or fully automatic mode

- 🪝 One-command hook installation (`git pulse init`)

- 🔌 Pluggable providers: **OpenCode**, **OpenAI**, **Ollama** (more soon)

- 🐍 Tiny dependency: only `requests` – Python 3.8+

- * *

🚀 Quickstart

[](https://github.com/erico964-blip/gitpulse#-quickstart)

1. Install

[](https://github.com/erico964-blip/gitpulse#1-install)

pip install gitpulse-commit

2. Configure your AI provider

[](https://github.com/erico964-blip/gitpulse#2-configure-your-ai-provider) By default, Git Pulse uses **OpenCode** (local or remote). Set the environment variables:

export OPENCODE_API_URL="http://localhost:8080/v1/chat/completions" export OPENCODE_API_KEY="your-key-here"

If you prefer **OpenAI**:

export OPENAI_API_KEY="sk-..."

Or **Ollama**:

export OLLAMA_API_URL="http://localhost:11434/api/generate"

3. Make some changes and stage them

[](https://github.com/erico964-blip/gitpulse#3-make-some-changes-and-stage-them)

git add .

4. Let Git Pulse generate your commit message

[](https://github.com/erico964-blip/gitpulse#4-let-git-pulse-generate-your-commit-message)

git pulse

You'll see a generated message like `feat(auth): add JWT token validation`. Confirm, edit, or abort – it's that simple.

For fully automated pipelines:

git pulse --auto

- * *

📦 Usage

[](https://github.com/erico964-blip/gitpulse#-usage)

``` git pulse [options] # generate a commit message git pulse init # install the prepare-commit-msg hook ```

Options for `git pulse`

[](https://github.com/erico964-blip/gitpulse#options-for-git-pulse) | Flag | Description | | --- | --- | | `--auto` | Automatically commit without confirmation | | `--provider` | AI provider: `opencode` (default), `openai`, `ollama` | | `--model` | Model name (e.g., `gpt-4o-mini`) | | `--api-url` | Override API base URL | | `--api-key` | Override API key | | `--output` | Write message to a file (used internally by the hook) |

Git Hook

[](https://github.com/erico964-blip/gitpulse#git-hook) After running `git pulse init`, every time you run `git commit`, the hook will:

1. Check for staged changes 2. Generate a conventional commit message automatically 3. Open your editor with the message pre-filled (or commit directly if `--auto` was set).

- * *

🔧 Supported AI Providers

[](https://github.com/erico964-blip/gitpulse#-supported-ai-providers) | Provider | Default Model | Env Vars | | --- | --- | --- | | **OpenCode** | `opencode` | `OPENCODE_API_URL`, `OPENCODE_API_KEY` | | **OpenAI** | `gpt-4o-mini` | `OPENAI_API_KEY` | | **Ollama** | `llama3` | `OLLAMA_API_URL` |

You can pass `--provider`, `--model`, `--api-url`, and `--api-key` at runtime to override defaults.

- * *

🤖 How It Works

[](https://github.com/erico964-blip/gitpulse#-how-it-works) 1. Extracts the `git diff --cached` output 2. Sends it together with a carefully engineered system prompt to the AI endpoint 3. Parses the response, strips any formatting, truncates to 72 characters 4. If in interactive mode, lets you review and edit; if automatic, commits immediately

The system prompt is designed to produce only the commit message, nothing else.

- * *

🛠 Development

[](https://github.com/erico964-blip/gitpulse#-development) Clone the repo and install in editable mode:

git clone https://github.com/erico964-blip/gitpulse cd gitpulse pip install -e .

Run tests (coming soon):

pytest

- * *

📜 License

[](https://github.com/erico964-blip/gitpulse#-license) MIT © erico964-blip

- * *

⭐ **Star the repo** — If Git Pulse saves you from a few minutes of commit-message anguish, give it a star on GitHub!