Observed since 21 Oct, 10:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
AI powered commit message helper
Obtain your API Key
Register and get an API key from the DeepSeek AI developer dashboard
Set the Environment Variable
Set your key as the DEEPSEEK_API_KEY environment variable
export DEEPSEEK_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
Verify the key is picked up
Confirms a key is configured before you rely on it, and prints setup instructions if not
aicommitter doctor
It reports which keys are set, where each one came from, and which provider will be used.
Add --live to ask the provider whether the key is actually accepted — a key can be present
but expired or revoked, which otherwise only surfaces as an HTTP 401 at commit time:
aicommitter doctor --live
Exits non-zero when no usable key is found, so it can gate a setup script or CI step.
Install the Git Hook in your repository
Navigate to the root of any Git project and run the install command
aicommitter install
For every commit after setup:
Stage your changes
Add all or selected changes to the staging area
git add .
Commit!
Commit directly with confirmation
aicommitter generate --commit
For maintainers cutting a release to PyPI.
Before you build, bump the version in all four places — they are not derived from each other:
pyproject.toml, the release badge above, the Latest Release section, and a new CHANGELOG.md entry.
Requires the release toolchain: pip install --upgrade build twine
Clean stale artifacts
Old builds in dist/ get picked up by twine upload dist/* and will publish the wrong version
rm -rf dist/ build/ src/*.egg-info src/aicommitter/*.egg-info
Build the distributions
Produces both an sdist and a wheel
python -m build
Verify what was built
Confirm only the new version is present, that resources/docs.md is bundled, and that the metadata is valid
ls dist/
python -m zipfile -l dist/aicommitter-*-py3-none-any.whl | grep docs.md
twine check dist/*
The docs.md check is not optional — it ships only via [tool.setuptools.package-data], and a missing copy is what broke aicommitter docs in 1.0.5.
Upload to TestPyPI first (recommended)
PyPI versions are immutable, so each version number can only ever be uploaded once
twine upload --repository testpypi dist/*
pip install --index-url https://test.pypi.org/simple/ --no-deps aicommitter==<version>
Publish to PyPI
Authenticate with __token__ as the username and a PyPI API token as the password
twine upload dist/*
Create an API token at pypi.org/manage/account/token. To avoid re-entering it, store it in ~/.pypirc:
[pypi]
username = __token__
password = pypi-xxxxxxxxxxxx
Most current Python installs — Homebrew, Debian/Ubuntu, and python.org 3.12+ — are marked externally managed, so installing the build tools globally fails:
error: externally-managed-environment
× This environment is externally managed
A virtual environment gives the build its own isolated site-packages, so build and twine never touch your system Python and cannot collide with other projects' dependency versions.
1. Create the virtual environment — once per clone. .venv is already in .gitignore:
python3 -m venv .venv
2. Install the release toolchain into it:
.venv/bin/pip install --upgrade build twine
3. Run the build steps through it — prefix each command with .venv/bin/ so the venv's interpreter and tools are used:
rm -rf dist/ build/ src/*.egg-info src/aicommitter/*.egg-info
.venv/bin/python -m build
.venv/bin/twine check dist/*
.venv/bin/twine upload dist/*
Prefixing with .venv/bin/ works without activating anything. If you would rather activate the environment and drop the prefix:
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m build
twine check dist/*
twine upload dist/*
deactivate # when finished
Testing the built package in the venv without publishing it, which also verifies the console entry point:
.venv/bin/pip install dist/aicommitter-*-py3-none-any.whl
.venv/bin/aicommitter --version
.venv/bin/aicommitter docs
Note that aicommitter --version reads installed distribution metadata, so after a version bump you must reinstall (.venv/bin/pip install -e .) before it reports the new number.
To start over at any point, delete and recreate it — a venv is disposable:
rm -rf .venv
See CHANGELOG.md for a detailed history of changes. View on PyPI.
Version 1.3.0 (2026-09-28)
aicommitter doctor to check API key configuration, with --live to verify the key against the providerVersion 1.2.0 (2026-09-28)
Version 1.1.0 (2026-09-18)
gemini-2.5-flash-liteVersion 1.0.9 (2026-04-25)
y flag to auto approve the commit messageVersion 1.0.8 (2026-04-25)
NotOpenSSLWarning by suppressing it before urllib3 is imported--version / -v flag to CLIVersion 1.0.7 (2026-04-25)
Version 1.0.6 (2026-01-25)
1.0.6NotOpenSSLWarning warningVersion 1.0.5 (2026-01-25)
1.0.5docs.md file not being founddeepseek-chat model from deepseek-reasoner modelVersion 1.0.4 (2025-12-07)
1.0.4long_description in pypi libraryVersion 1.0.4 (2025-12-07)
1.0.4long_description in pypi libraryVersion 1.0.3 (2025-12-05)
1.0.3180s for DEEPSEEK and GEMINIFor full details, see the CHANGELOG.
aicommitter generate -c -y # generate, commit without confirmation
aicommitter generate -P -y # generate, commit without confirmation, push to current branch
aicommitter generate --push # generate, confirm commit, then push
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.3.0 | 27 Sept 2026 | 3 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 10:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:e50ecf004fa270d980247fc06378e3960ba5c0372ff3b73d62d1dc9b65383e47