gix generates conventional commit messages from your staged diff and splits large changes into small commits.
Writing a good commit message takes discipline and it's usually the first thing skipped when moving fast. gix handles it for you, read the diff, generate the message, commit.
For larger changes, gix split groups related hunks by semantic similarity and proposes one atomic commit per group, each with its own generated message. It turns one big noisy commit into a clean history.
- Generates Conventional Commits from staged diffs
gix splitsplits a large diff into multiple semantic commits- Embedding-based hunk clustering for intelligent grouping
- Multiple AI providers, OpenAI, Gemini or Ollama (local)
- Bring your own API key
- Runs fully offline with Ollama
- Single binary, no runtime dependencies
brew tap ademajagon/gix
brew install gixDownload binaries from Releases and add it to your PATH.
go install github.com/ademajagon/gix@latestgit stage .
gix commitYou'll see a suggested message and can accept, edit, regenerate or cancel.
git stage .
gix splitgix analyses the staged diff, groups related hunks and proposes one commit per group
gix stores configuration locally on your machine.
gix config set-provider openai # default
gix config set-provider gemini
gix config set-provider ollama # local, no API key requiredgix config set-key # OpenAI
gix config set-key --provider gemini # GeminiConfigure both providers and switch anytime.
| Provider | Chat Model | Embeddings |
|---|---|---|
| OpenAI | gpt-4o | text-embedding-3-small |
| Gemini | gemini-flash-latest | gemini-embedding-001 |
| Ollama | llama3.1:8b (configurable) | nomic-embed-text (configurable) |
gix checks for new releases in the background after each command and prints a notice if one is available. Results are cached for 48 hours and the check never blocks the primary command.
To disable:
gix config update-check off
# or for a single session:
GIX_CHECKPOINT_DISABLE=1 gix commitMIT © Agon Ademaj