Skip to main content

⚡ Git Pulse

AI-powered conventional commit messages, right from your terminal.

PyPI version PyPI downloads GitHub stars License: MIT Python versions

Demo GIF placeholder

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:

  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

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

  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

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)

Source distribution for gitpulse-commit 0.1.0
File Size Uploaded
gitpulse_commit-0.1.0.tar.gz 10.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gitpulse-commit 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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