GityAI is an AI assistant tool that automates Git workflows — it writes your commit messages and pull request descriptions from your actual code changes, and lets you "refine them in a loop" until they read exactly the way you want.
Under the hood: GityAI spans two JavaScript runtimes. The CLI is built in Deno and compiled to standalone, dependency-free native binaries for Linux, macOS, and Windows, using Deno KV for local state and a provider-agnostic client layer that routes to either Gemini or Claude. It's distributed through a separate tiny Node.js npm package that resolves the user's platform and pulls the matching binary from GitHub Releases at install time.
Click on the below thumbnail to watch the Demo video
- Bring your own AI model — GityAI is provider-agnostic. Configure Google Gemini or Anthropic Claude (or both) and switch between them at any time with
gityai model. - Agentic refinement loop — every generated commit message and PR description is a starting point, not a final answer. Accept it, regenerate a fresh one, or steer it with your own prompt — as many rounds as you like — until it's right.
- Generated from real context — commit messages are written from your
git diff; PR descriptions are written from the commits on your branch. No copy-pasting prompts. - Keys stored locally — your API keys are kept on your own machine, never sent anywhere but the provider you chose.
There are two ways to install GityAI. Both support Linux, macOS, and Windows.
Install globally to use gityai anywhere:
npm install -g @abmsourav/gityaiOn install, the prebuilt binary for your platform is downloaded automatically.
You can also add it to a single project instead of installing globally:
npm install --save-dev @abmsourav/gityai
# then run it with: npx gityai <command>Verify the install:
gityai -vDownload the latest release from the releases page "Assets" section and choose the binary for your system. Unzip it and move the gityai binary to a location of your choice.
Add the binary to your PATH, or make an alias in .bashrc / .zshrc:
alias gityai="path/to/gityai/gityai"Open a new terminal and run gityai --version to confirm the installation.
Your API keys and selected model are stored locally in
~/.gityai/, no matter which installation method you use.
GityAI works with either Google Gemini or Anthropic Claude. Grab an API key from whichever provider you prefer, then run:
gityai setupYou'll be asked to pick a provider and paste its API key. The key is stored securely on your own machine. Run setup again anytime to add a second provider.
The API key is stored in your local machine, and never sent anywhere but the provider you chose.
If you've configured more than one provider, switch the active model at any time:
gityai modelTo see which models are available and which one is currently active:
gityai model -aEach of your project should be initialized with GityAI to use the tool. Run the below command in the project root directory
gityai initgityai <command> [options]Generate a Git commit message from the changes in your project (git diff) and save it to a markdown file for review:
gityai cm -sAfter the message is generated, GityAI enters a refinement loop and asks what you'd like to do:
- Happy with it — commit with the current message.
- Generate another one — regenerate a fresh message from the same diff.
- My prompt — give your own instruction (e.g. "make it shorter", "mention the context") and regenerate.
You can keep choosing Generate another one or My prompt as many times as you like — the loop repeats until you pick Happy with it.
Use gityai cm (without -s) to generate and commit directly without saving to a file.
Generate a Pull Request description from the commits on your current branch:
gityai prd -sGityAI first asks for the base branch to compare against, then generates the description. Just like commit messages, it enters a refinement loop and asks what you'd like to do:
- Happy with it — save the current description.
- Generate another one — regenerate a fresh description from the same commits.
- My prompt — give your own instruction (e.g. "add a testing section", "summarize the breaking changes") and regenerate.
Keep choosing Generate another one or My prompt as many times as you like — the loop repeats until you pick Happy with it. The final description is saved to .gityai/pr.md.
Use gityai prd (without -s) to also print the generated description to the terminal.