Never write a commit message again.
CybrCommit generates perfect Conventional Commits for your git changes. It works without any API keys using a smart rule-based engine, with optional AI enhancement via OpenAI, Anthropic, or local Ollama.
pip install CybrCommit-cli
CybrCommitThat's it. No setup, no API keys, no configuration files.
$ git diff --stageddiff --git a/src/auth/login.js b/src/auth/login.js
new file mode 100644
index 0000000..abc1234
--- /dev/null
+++ b/src/auth/login.js
@@ -0,0 +1,45 @@
+import { useState } from 'react';
+
+export function LoginForm() {
+ const [email, setEmail] = useState('');
+ const [password, setPassword] = useState('');
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ await login(email, password);
+ };
+
+ return (
+ <form onSubmit={handleSubmit}>
+ <input type="email" value={email} onChange={e => setEmail(e.target.value)} />
+ <input type="password" value={password} onChange={e => setPassword(e.target.value)} />
+ <button type="submit">Login</button>
+ </form>
+ );
+}$ CybrCommit
📁 1 file changed
+45 additions, -0 deletions
Files:
➕ src/auth/login.js
🤔 Generating commit message...
💬 Generated commit message:
feat(auth): add login form component
Commit? [y]es, [e]dit, [r]egenerate, [n]o: y
✅ Committed: feat(auth): add login form component# Using pip
pip install CybrCommit-cli
# Using pipx (recommended)
pipx install CybrCommit-cli
# Using uv
uv tool install CybrCommit-cli- ✅ Zero-config mode — Works immediately, no API keys needed
- ✅ Smart rule-based engine — Analyzes diff patterns intelligently
- ✅ Conventional Commits — Always follows the spec
- ✅ AI enhancement — Optional OpenAI, Anthropic, or Ollama support
- ✅ Interactive mode — Review, edit, or regenerate before committing
- ✅ Auto mode — Skip confirmation for CI/CD workflows
- ✅ Gitmoji support — Add expressive emoji to commits
- ✅ File type detection — Understands tests, docs, configs, dependencies
- ✅ Smart truncation — Handles huge diffs gracefully
CybrCommitShows the generated message and asks for confirmation.
CybrCommit --autoCommits without asking. Perfect for scripts and CI/CD.
CybrCommit --dryShows what the message would be without committing.
CybrCommit --allStage all changes first, then commit.
CybrCommit --scope api
# Result: feat(api): ...CybrCommit --type fix
# Forces "fix:" instead of auto-detectingCybrCommit --emoji
# Result: ✨ feat: add new featureThe built-in engine is smart enough for most projects:
| Change Pattern | Generated Message |
|---|---|
| New file added | feat: add filename |
| File deleted | chore: remove filename |
| File renamed | refactor: rename old to new |
| Test files | test: add tests for... |
| Config files | chore: update config |
| README/docs | docs: update documentation |
| Dependencies | chore: update dependencies |
| CSS/styles | style: update styles |
| Multiple files | Summarized intelligently |
For even better messages, connect an AI provider:
export OPENAI_API_KEY="sk-..."
CybrCommit --ai openaiexport ANTHROPIC_API_KEY="sk-ant-..."
CybrCommit --ai anthropic# Start Ollama locally
ollama run llama3.2
# Use local AI
CybrCommit --ai ollama# AI Providers
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export OLLAMA_HOST="http://localhost:11434"
# Default settings
export AI_COMMIT_PROVIDER="openai" # openai | anthropic | ollama
export AI_COMMIT_MODEL="gpt-4o-mini" # any valid model
export AI_COMMIT_EMOJI="1" # enable emoji by default
export AI_COMMIT_AUTO="1" # auto-commit by default
export AI_COMMIT_MAX_DIFF_LINES="500" # truncate large diffsCreate ~/.config/CybrCommit/config:
# AI provider (optional)
provider=openai
model=gpt-4o-mini
# Default behavior
emoji=true
auto=false
max_diff_lines=500commit 3f4a9b2c
Author: developer@example.com
Date: Mon Jan 15 10:30:00 2025
updated stuff
commit 8e7d6f5a
Author: developer@example.com
Date: Mon Jan 15 09:15:00 2025
fix
commit 1a2b3c4d
Author: developer@example.com
Date: Fri Jan 12 16:45:00 2025
WIP
commit 9b8c7d6e
Author: developer@example.com
Date: Mon Jan 15 10:30:00 2025
feat(auth): add OAuth2 login with Google provider
commit 5f4e3d2c
Author: developer@example.com
Date: Mon Jan 15 09:15:00 2025
fix(api): resolve race condition in user cache
commit 7a6b5c4d
Author: developer@example.com
Date: Fri Jan 12 16:45:00 2025
test(utils): add unit tests for date formatting helpers
CybrCommit [OPTIONS]
Options:
-h, --help Show help message
-v, --version Show version
--auto Auto-commit without confirmation
--dry Show message only, don't commit
-a, --all Stage all changes before committing
--scope SCOPE Specify commit scope
--type TYPE Override commit type (feat, fix, docs, etc.)
--ai PROVIDER Use AI provider (openai, anthropic, ollama)
--model MODEL Specify AI model
-e, --emoji Add gitmoji to commit
--no-emoji Disable emoji
-m, --message MSG Use custom message
# Clone the repository
git clone https://github.com/M4ST3R-C0NTR0L/CybrCommit.git
cd CybrCommit
# Create virtual environment
python -m venv venv
source venv/bin/activate # or: venv\Scripts\activate on Windows
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black ai_commit/
isort ai_commit/
# Type check
mypy ai_commit/- Python 3.8+
- Git
Optional:
openaipackage for OpenAI supportanthropicpackage for Anthropic support- Ollama running locally for local AI
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License — see the LICENSE file for details.
- Inspired by the Conventional Commits specification
- Gitmoji support based on gitmoji
Built by Cybrflux