⚡ Git Pulse
AI-powered conventional commit messages, right from your terminal.
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
- 🧠 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
1. Install
pip install 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
git add .
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
git pulse [options] # generate a commit message
git pulse init # install the prepare-commit-msg hook
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
After running git pulse init, every time you run git commit, the hook will:
- Check for staged changes
- Generate a conventional commit message automatically
- Open your editor with the message pre-filled (or commit directly if
--autowas set).
🔧 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
- Extracts the
git diff --cachedoutput - Sends it together with a carefully engineered system prompt to the AI endpoint
- Parses the response, strips any formatting, truncates to 72 characters
- 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
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
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!
Metadata
Release files for gitpulse-commit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gitpulse_commit-0.1.0.tar.gz | 10.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gitpulse_commit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.8 kB
Release files / gitpulse_commit-0.1.0.tar.gz
| Download URL | gitpulse_commit-0.1.0.tar.gz |
|---|---|
| Size | 10.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
712146277913cc0b55b0d43b19ba8a01a3a058249add9ce5e6c5a44896fa5500
|
|
BLAKE2b-256 checksum How to use checksums |
4179e23d51682260d4bbc76c3810f936c9d88880cd52dd2a755d69f49283adab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / gitpulse_commit-0.1.0-py3-none-any.whl
| Download URL | gitpulse_commit-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
38e401af31d82759a886eb70f5aac2ece3377c3f4cca310d24f8b9769a42a17f
|
|
BLAKE2b-256 checksum How to use checksums |
0bd793394b66cfd97f5aa089bb736bf4717ae470f349a7077367f6db2205e340
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|