npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ai-komitto

v0.1.9

Published

Generate short git commit messages from staged diffs using OpenAI, Claude, Gemini or DeepSeek.

Readme

About AI Komitto

Generate short Git commit messages from your staged diff using OpenAI, Claude, Gemini or DeepSeek.

AI Komitto is a small global CLI for developers who want fast commit messages without manually writing summaries. It stages your repository changes, sends the staged diff to your selected AI provider, prints the generated message, and commits with that message.

The command is intentionally short:

komitto

Features

  • Supports Google Gemini, OpenAI, Anthropic Claude, and DeepSeek
  • Global npm CLI installation
  • Default lightweight model support
  • Provider and model overrides
  • Language option, defaulting to English
  • Print-only mode for editor aliases and IDE tasks
  • Optional --lowercase flag to transform commit message to lowercase
  • Optional --no-add mode when you only want to summarize already staged files
  • Configurable min word count for commit messages
  • Multiple commit formats: plain, conventional, gitmoji, full (title + body)
  • Custom context instructions to guide the commit message tone and content

Why

Writing commit messages for small everyday changes is repetitive. This package turns this:

git add .
git commit -m "fix booking status translation"

into this:

komitto

Example output:

fix: update booking status translations

Installation

Install globally:

npm install -g ai-komitto

Or install from a local folder while developing:

git clone <your-repo-url>
cd ai-komitto
npm install -g .

After installation, the package exposes this command:

komitto

Requirements

  • Node.js 18 or higher
  • Git
  • An API key for at least one supported provider

Node 18 is required because the package uses the built-in fetch API.

Provider setup

Gemini

export KOMITTO_PROVIDER="gemini"
export GEMINI_API_KEY="your_gemini_api_key"
export GEMINI_MODEL="gemini-flash-lite-latest"

OpenAI

export KOMITTO_PROVIDER="openai"
export OPENAI_API_KEY="your_openai_api_key"
export OPENAI_MODEL="gpt-5.4-nano"

Claude

export KOMITTO_PROVIDER="claude"
export ANTHROPIC_API_KEY="your_anthropic_api_key"
export CLAUDE_MODEL="claude-haiku-4-5"

DeepSeek

export KOMITTO_PROVIDER="deepseek"
export DEEPSEEK_API_KEY="your_deepseek_api_key"
export DEEPSEEK_MODEL="deepseek-v4-flash"

DeepSeek is the default provider if KOMITTO_PROVIDER is not set.

Language

The default commit message language is English.

komitto

Generate a Malay commit message:

komitto --language malay

Generate a Japanese commit message:

komitto --language japanese

Set a default language permanently:

export KOMITTO_LANGUAGE="english"

You can use any language name supported by your selected model, for example:

komitto --language english
komitto --language malay
komitto --language indonesian
komitto --language japanese
komitto --language chinese

Permanent shell setup

For macOS or zsh:

nano ~/.zshrc

Add your preferred provider config:

export KOMITTO_PROVIDER="gemini"
export GEMINI_API_KEY="your_gemini_api_key"
export GEMINI_MODEL="gemini-flash-lite-latest"
export KOMITTO_LANGUAGE="english"
export KOMITTO_FORMAT="conventional"
export KOMITTO_CONTEXT="reference exact function names modified"

Reload your shell:

source ~/.zshrc

For bash:

nano ~/.bashrc
source ~/.bashrc

Usage

Commit using your default provider:

komitto

Use a specific provider for one commit:

komitto --provider openai

Use a specific model for one commit:

komitto --provider gemini --model gemini-flash-lite-latest

Use a specific language for one commit:

komitto --language malay

Print the generated message without committing:

komitto --print

Do not run git add automatically:

komitto --no-add

Limit the diff size sent to the provider:

komitto --max-chars 12000

Set minimum word count for commit message:

komitto --min-words 8

Use a specific commit format:

komitto --format plain
komitto --format conventional
komitto --format gitmoji
komitto --format full

Possible gitmoji output:

✨ add user avatar upload endpoint

Possible full output:

feat: add user avatar upload endpoint

- add POST /api/avatar route with multer middleware
- validate file size and type before saving
- update user model with avatarUrl field

Add custom context to guide the commit message:

komitto --context "prioritize the performance effects of the updates"
komitto --context "reference the exact function names and file paths modified"
komitto --context "use gen alpha vibes terminology"

Show help:

komitto --help

Editor aliases

You can create aliases in your terminal, editor, or IDE task runner.

Replace your current commit shortcut

alias commit="komitto"

Then use:

commit

Print-only alias

Useful when your editor only needs the generated message:

alias commitmsg="komitto --print"

Then:

commitmsg

Provider-specific aliases

alias commitg="komitto --provider gemini"
alias commito="komitto --provider openai"
alias commitc="komitto --provider claude"
alias commitd="komitto --provider deepseek"

Language-specific aliases

alias commitmy="komitto --language malay"
alias commitjp="komitto --language japanese"

Configuration

Environment variables:

| Variable | Description | Default | | --- | --- | --- | | KOMITTO_PROVIDER | Default provider: gemini, openai, claude, or deepseek | deepseek | | KOMITTO_LANGUAGE | Default commit message language | english | | GEMINI_API_KEY | Gemini API key | none | | OPENAI_API_KEY | OpenAI API key | none | | ANTHROPIC_API_KEY | Anthropic API key | none | | DEEPSEEK_API_KEY | DeepSeek API key | none | | GEMINI_MODEL | Gemini model | gemini-flash-lite-latest | | OPENAI_MODEL | OpenAI model | gpt-5.4-nano | | CLAUDE_MODEL | Claude model | claude-haiku-4-5 | | DEEPSEEK_MODEL | DeepSeek model | deepseek-v4-flash | | KOMITTO_MAX_CHARS | Maximum diff characters sent to the provider | 18000 | | KOMITTO_MIN_WORDS | Minimum words in the commit message | 12 | | KOMITTO_FORMAT | Commit format: plain, conventional, gitmoji, full | conventional | | KOMITTO_CONTEXT | Extra instructions for commit message generation | none |

CLI options override environment variables.

CLI options

komitto [options]

| Option | Description | | --- | --- | | -p, --provider <name> | Provider: gemini, openai, claude, or deepseek | | -m, --model <model> | Override provider model | | -l, --language <name> | Commit message language, default: english | | --no-add | Do not run git add before generating the message | | --print | Print the message only, do not commit | | --dry-run | Same as --print | | --max-chars <number> | Maximum diff characters sent to the provider | | -w, --min-words <n> | Minimum words in the commit message, default: 12 | | -f, --format <type> | Commit format: plain, conventional, gitmoji, full | | -c, --context <text> | Extra instructions for the commit message | | -h, --help | Show help |

Default models

The package uses lightweight defaults intended for low-cost commit message generation:

gemini: gemini-flash-lite-latest
openai: gpt-5.4-nano
claude: claude-haiku-4-5
deepseek: deepseek-v4-flash

The Gemini default intentionally uses the latest alias-style model name:

gemini-flash-lite-latest

This reduces the chance of your CLI breaking when a fixed older Gemini model is deprecated or shut down.

Override the model if your account does not have access to a model or your provider changes the available model IDs:

komitto --provider openai --model gpt-5.4-mini

How it works

By default, komitto runs:

git add <repo-root>
git diff --cached --stat
git diff --cached
git commit -m "<generated-message>"

The generated message is normalized before commit:

  • first line only
  • surrounding quotes removed
  • trailing period removed

To force lowercase output, use the --lowercase or -lc flag:

komitto --lowercase

Examples

English:

komitto --language english

Possible output:

fix: update booking status translations

Malay:

komitto --language malay

Possible output:

fix: kemas kini terjemahan status tempahan

Print only:

komitto --print --language english

Possible output:

refactor: simplify provider selection logic

License

MIT