Catalog PyPI
PACKAGE EXPLORERView in registry

aigitmsg

PyPI

Write good git commit messages with any AI provider

Versions collected1
Direct dependencies2From release 0.3.0
Last observed21 Oct, 10:49 UTC

README

Version 0.3.0 documentation

ai-commit

Write good git commit messages with any AI provider.

$ ai-commit
Generating commit message...

--- Generated message ---
feat(parser): add JSON schema validation for config files

- Validate config against JSON Schema on load
- Return clear error messages for invalid config
- Add test coverage for schema validation

Create this commit? [Y/n]: y
Commit created.

Why this exists

Every other AI commit tool locks you into one provider. OpenAI only. Anthropic only. A local Ollama thing. If you switch providers, you switch tools.

ai-commit works with any provider. Same CLI, same workflow, swap the model in a config line.

Install

pip install aigitmsg

Or from source:

git clone https://github.com/Morad37/ai-commit
cd ai-commit
pip install .

Setup

Quick start (OpenAI / any OpenAI-compatible API)

export AI_COMMIT_API_KEY="sk-..."
ai-commit --setup

Other providers

export AI_COMMIT_PROVIDER="anthropic"
export AI_COMMIT_API_KEY="sk-ant-..."
export AI_COMMIT_MODEL="claude-sonnet-4-20250514"

export AI_COMMIT_PROVIDER="ollama"
export AI_COMMIT_MODEL="llama3.2"
# Ollama defaults to http://localhost:11434

export AI_COMMIT_PROVIDER="groq"
export AI_COMMIT_BASE_URL="https://api.groq.com/openai/v1"
export AI_COMMIT_MODEL="llama3-70b-8192"

Usage

# Stage all changes and generate commit
ai-commit

# Just generate a message for staged changes (no auto-stage)
ai-commit --no-stage

# Regenerate the last commit message
ai-commit --amend

# Auto-install as a git hook (runs before every commit)
ai-commit --install-hook

# Use a specific style
ai-commit --style conventional
ai-commit --style short
ai-commit --style detailed

# Generate 3 candidates and pick one
ai-commit -n 3

# Skip confirmation prompts (CI/headless)
ai-commit --yes

With -n (or --num), ai-commit generates that many distinct message candidates and lets you pick:

$ ai-commit -n 3
Generating 3 commit message candidates...
[1] feat(parser): add JSON schema validation for config files
[2] feat(config): validate config against JSON Schema on load
[3] refactor(config): surface clear errors for invalid config files

Pick a message [1]: 2

Git hook

ai-commit --install-hook

This installs a prepare-commit-msg hook that auto-generates the commit message before your editor opens. You can still edit it. If you already wrote a message, the hook leaves it alone.

Configuration

Config file at ~/.config/ai-commit/config.json:

{
  "provider": "openai",
  "model": "gpt-4o-mini",
  "api_key": "",
  "base_url": "",
  "style": "conventional",
  "max_diff_lines": 200,
  "language": "en"
}

All fields can be overridden via environment variables:

VariableOverrides
AI_COMMIT_API_KEYapi_key
AI_COMMIT_MODELmodel
AI_COMMIT_BASE_URLbase_url
AI_COMMIT_PROVIDERprovider

Supported providers

  • OpenAI (and any OpenAI-compatible API -- Groq, Together, Fireworks, OpenRouter, local vLLM, etc.)
  • Anthropic (Claude)
  • Ollama (local models)
  • Custom -- set base_url to any OpenAI-compatible endpoint

Commit styles

StyleExample
conventionalfeat(parser): add JSON schema validation
imperativeAdd JSON schema validation to the config parser
shortAdd config validation
detailedMulti-line with bullet points explaining each change

How it works

  1. Reads the staged diff (git diff --cached)
  2. Sends it to your configured AI provider with a prompt tuned for commit messages
  3. Returns a structured commit message
  4. Either creates the commit or writes it to your editor via the hook

Only works in git repos. Only generates messages for staged changes (by default).

License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.3.01 Aug 20262

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:49 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:0ca7764f17ff7c0f7f487e798c0d55abcfdf98f8d33cd208c5cdec90f88e2246