Generate conventional commit messages from staged git diffs using an LLM.
brew install garciasdos/tap/commodoOr with Go:
go install github.com/garciasdos/commodo@latestRun the interactive setup to configure your LLM provider:
commodo setupThis creates ~/.commodo/config.yaml with your provider and model. API keys are encrypted with age and saved per-provider in ~/.commodo/keys.yaml.age — when you switch providers and come back, your key is pre-filled.
To change only the model without re-entering your provider and API key:
commodo setup --modelTo get started instantly with a free model (no cost, just an OpenRouter API key):
commodo setup --freeThis skips provider and model selection and configures OpenRouter with its free default model.
You can also create the config file manually:
~/.commodo/config.yaml:
provider: openrouter
model: nvidia/nemotron-3-super-120b-a12b:freeAPI keys are managed via commodo setup — they are age-encrypted and cannot be manually edited.
Stage your changes and run commodo:
git add .
commodoPreview the generated message without committing:
commodo --dry-runCheck the version:
commodo --version| Provider | Default Model | Notes |
|---|---|---|
| openrouter | nvidia/nemotron-3-super-120b-a12b:free | Free tier |
| openai | gpt-5-nano | |
| deepseek | deepseek-chat-v3.1 | |
| anthropic | claude-haiku-4-5-20251001 |
Default models are updated automatically each week via the update-models workflow.
- Reads your staged
git diff - Checks for
README.mdandCLAUDE.mdin the repo root to build project context (cached with hash-based invalidation) - Sends the diff and context to your configured LLM
- Commits with the generated conventional commit message
git clone https://github.com/garciasdos/commodo.git
cd commodo
go test ./...
go build -o commodo .PRs welcome. Please include tests for new functionality.
MIT