AI-powered utility for generating conventional Git commit messages.
gmsg is a high-performance CLI tool built in Rust for generating commit messages. It uses AI to analyze your staged diffs and generate messages based on the Conventional Commits specification.
- Spec-Grounded: Uses the Conventional Commits specification as a system prompt to ensure total compliance. You can also modify the system prompt to align with your preferred specifications.
- Interactive TUI: Review and edit generated messages in a Ratatui-powered editor before finalizing.
- UNIX Compliant: Automatically discovers the closest git repository in your current folder with TTY/pipe-aware behavior.
- Clipboard & Amend Support: Easily copy messages to your clipboard or amend the most recent commit.
- Multi-Provider and Model Support: Built with Rig, providing excellent support for a wide range of LLM providers and models of your choice.
Ensure you have your appropriate API key set in your environment variables.
export GEMINI_API_KEY="your_api_key_here"
cargo install gmsgOr download a prebuilt binary for your platform.
Stage your changes and let gmsg handle the whole commit process.
git add .
gmsgReview and modify the generated message before committing:
gmsg -i- Ctrl+S: Save and continue.
- Ctrl+Q: Discard and exit.
If you just want to generate the message without committing:
# Copy to clipboard and exit
gmsg -c
# Output to a file
gmsg > message.txt
# Pipe to another utility
gmsg | grepAmend the message of your last commit. If you have staged changes, the diff is sent alongside the previous message to the AI. Otherwise, it opens an editor.
gmsg -agmsg is zero-config by default.
But you can configure it.
gmsg config.provider # set your LLM provider
gmsg config.model # set your model
gmsg config.prompt <Prompt> # customize the system prompt
| Flag | Long | Description |
|---|---|---|
-p |
--path |
Path to the repository (defaults to current dir). |
-i |
--interactive |
Opens the TUI editor before committing. |
-c |
--copy |
Copies the message to clipboard and exits. |
-a |
--amend |
Amends the HEAD commit with the new message. |
Configuration can be set in your project's .gmsgconfig.toml or your global config directory. Project-level config takes precedence.
- Agent Logic: Powered by the
rigcrate for LLM orchestration. - Git Operations: Uses
git2-rsfor robust interaction with Git. - Terminal UI: Built with
ratatuiandratatui-textareafor a smooth editing experience. - Async Runtime: Driven by
tokiofor non-blocking AI generation.
MIT – Build something great.