
Free AI git commit messages. No API key. No signup.
Open-source CLI that turns staged diffs into clean commits in one command.
git diff and filters out noise (lockfiles, binaries, build artifacts)$EDITORbrew install dinoDanic/tap/diny
scoop bucket add dinodanic https://github.com/dinoDanic/scoop-bucket
scoop install diny
Download pre-built binaries from GitHub Releases.
Stage your changes, then run:
git add .
diny commit
This launches the interactive TUI — generate, review, and commit without leaving the terminal.
Staged too much at once? Press S on the ready screen to split the diff into multiple commits grouped by concern — edit, reassign files, regenerate, then commit them in order.
| Command | Description |
|---|---|
diny commit |
Launch the interactive TUI |
diny yolo |
Stage all changes, generate a commit, and push |
diny changelog |
Generate an AI-powered changelog between tags or commits |
diny timeline |
Summarize and analyze your commit history |
diny config |
Interactive TUI config editor |
diny theme |
List available UI themes |
diny auto |
Set up a git auto alias |
diny link lazygit |
Integrate diny with LazyGit |
diny update |
Update diny to the latest version |
git auto)diny auto # install
diny auto remove # uninstall
Then use git auto anywhere you'd use git commit.
diny link lazygit
Adds a custom command to LazyGit so you can generate commit messages from its UI.
Run diny config to open a TUI for browsing and editing all settings.
diny supports a three-tier configuration system:
| Level | Location | Description | Committed |
|---|---|---|---|
| Global | ~/.config/diny/config.yaml |
Your defaults for all projects | No |
| Project (versioned) | .diny.yaml |
Team-shared settings for this project | Yes |
| Project (local) | <gitdir>/diny/config.yaml |
Your personal per-project overrides | No |
Priority: local > versioned > global. Project configs only need to specify the values they override.
Outside a git repository, only global config is available.
| Option | Description | Values |
|---|---|---|
theme |
UI color theme | see Themes |
commit.conventional |
Use conventional commit format | true / false |
commit.emoji |
Prefix commits with emoji | true / false |
commit.tone |
Message tone | professional / casual / friendly |
commit.length |
Message length | short / normal / long |
commit.custom_instructions |
Extra guidance for the AI | free text |
commit.hash_after_commit |
Show and copy commit hash after committing | true / false |
catppuccin, tokyo, nord, dracula, gruvbox-dark, onedark, monokai, solarized-dark, everforest-dark, flexoki-darksolarized-light, github-light, gruvbox-light, flexoki-lightRun diny theme to preview them all.
theme: tokyo
commit:
conventional: true
emoji: true
tone: casual
length: short
custom_instructions: "Include JIRA ticket from branch name"
hash_after_commit: true
diny update # built-in updater
brew update && brew upgrade dinoDanic/tap/diny # macOS / Linux
scoop update diny # Windows
I'm terrible at commit messages — I type fast, make mistakes, and my history ends up full of "fix stuff" and "ui thing." diny reads your changes, writes a decent message, and summarizes your day when you need to remember what you worked on. It's AI doing what it's actually good at: the repetitive stuff.