CatMit — AI Commit Message Generator
Generate conventional commit messages with AI. One click in VS Code, one command in the terminal.
CatMit reads your staged git changes, sends them to your chosen AI provider (OpenAI, Anthropic Claude, Google Gemini, or Ollama), and generates clean, standardized commit messages. Available as a VS Code / Windsurf extension and a CLI tool.

Features
- Generate commit messages from staged diffs using AI
- Multiple AI providers — OpenAI, Anthropic, Google Gemini, Ollama (local)
- Bring Your Own Key — use your own API keys, stored securely in the OS keychain
- 6 commit formats — Conventional, Angular, Karma, Emoji/Gitmoji, Semantic, Simple
- One-command push — stage, generate, commit, and push in a single step
- Amend support — regenerate and replace the last commit message
- VS Code integration — cat paw button in Source Control, works in dark and light mode
- Polished CLI — React + Ink terminal UI with interactive setup, spinners, and status messages
VS Code Extension
Quick Start
- Install CatMit from the VS Code Marketplace
- Open the Command Palette (
Ctrl+Shift+P) and run Catmit: Set API Key
- Set your provider in Settings > search "catmit.provider"
- Open the Source Control tab — click the cat paw icon to generate a commit message
Commands
| Command |
Description |
| Catmit: Generate Commit Message |
Auto-stages changes, generates a message, and fills the SCM input box |
| Catmit: Stage, Commit & Push |
Full pipeline — stage, generate, commit, and push to remote |
| Catmit: Amend Last Commit Message |
Regenerates and amends the previous commit message |
| Catmit: Set API Key |
Securely store your API key in the OS keychain |
Settings
| Setting |
Default |
Description |
catmit.provider |
(none) |
AI provider: openai, anthropic, gemini, or ollama |
catmit.model |
(auto) |
Override the default model for the selected provider |
catmit.format |
conventional |
Commit format: conventional, angular, karma, emoji, semantic, simple |
catmit.maxLength |
72 |
Maximum subject line length |
catmit.includeBody |
auto |
Include a commit body: auto, always, never |
catmit.includeBullets |
auto |
Bullet-point summary in body: auto, always, never |
catmit.ollamaUrl |
http://localhost:11434 |
Ollama server URL (for local models) |
catmit.language |
en |
Commit message language |
CLI
Install
npm install -g catmit
Setup
catmit setup
This walks you through selecting a provider, model, and API key. The API key is stored in your OS keychain (Windows Credential Manager, macOS Keychain, or Linux Secret Service).
Usage
# Generate a commit message from staged changes
catmit
# Generate and auto-commit
catmit --commit
# Stage all, generate, commit, and push in one step
catmit push
# Regenerate the last commit message
catmit amend
# Regenerate and apply the amend
catmit amend --apply
# Use a specific provider or format
catmit -p anthropic -f emoji
# List available providers and default models
catmit models
CLI Options
catmit [generate] Generate a commit message (default command)
-p, --provider <name> AI provider (openai, anthropic, gemini, ollama)
-m, --model <name> Override model
-f, --format <format> Commit format (conventional, angular, karma, emoji, semantic, simple)
-c, --commit Auto-commit with the generated message
catmit push Stage all, generate, commit, and push
catmit amend Regenerate last commit message
-a, --apply Apply the new message to the last commit
catmit setup Interactive provider and API key setup
catmit models List providers and default models
Supported Providers
| Provider |
Default Model |
API Key Env Var |
| OpenAI |
gpt-4o-mini |
OPENAI_API_KEY |
| Anthropic |
claude-sonnet-4-20250514 |
ANTHROPIC_API_KEY |
| Google Gemini |
gemini-2.5-flash |
GOOGLE_API_KEY |
| Ollama (local) |
llama3.2 |
(none needed) |
You can override the model with -m or the catmit.model setting.
| Format |
Example |
conventional |
feat(auth): add OAuth2 login flow |
angular |
feat(auth): add OAuth2 login flow |
karma |
feat(auth): add OAuth2 login flow |
emoji |
:sparkles: add OAuth2 login flow |
semantic |
feat: add OAuth2 login flow |
simple |
Add OAuth2 login flow |
Security
- API keys are stored in the OS keychain, not in plaintext config files
- VS Code extension uses
SecretStorage (OS-level encryption)
- CLI uses
@github/keytar for native keychain access
- No
--api-key CLI flag — keys are never exposed in shell history or process listings
.catmitrc.json is gitignored and only stores non-sensitive settings (provider, model, format)
- Environment variables (
OPENAI_API_KEY, etc.) are supported as an alternative
Configuration Priority
Settings are resolved in this order (highest priority first):
- CLI flags (
-p, -m, -f)
- OS Keychain (API key)
- Environment variables
.catmitrc.json (project directory, then home directory)
- VS Code settings (for the extension)
- Defaults
Requirements
- Node.js 18+
- Git installed and available in PATH
- An API key from one of the supported providers (or Ollama running locally)
License
MIT
| |