Skip to content

dominnya/omut

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

omut

Easier opinionated Git workflows.

Latest release License Rust 2026

Why You May Like It

  • omut commit generates commit messages with AI.
  • omut branch generates branch names with AI.
  • --test modes fit cleanly into hooks, scripts, and CI.
  • Repo rules live in omut.config.toml, with glob support where it helps.

Quick Look

flowchart LR
  A[Stage changes] --> B[Run omut commit]
  B --> C{Pick path}
  C --> D[Manual flow]
  C --> E[AI flow]
  D --> F[Choose type and scope]
  E --> G[Generate from staged diff]
  F --> H[Confirm]
  G --> H
  H --> I[Create commit]
Loading
git add .
omut commit
omut branch
omut commit --test "feat(ui): refresh cards"
omut branch --test feat/refresh-cards

Install

npm

npm i -g @omut/omut

Local build

git clone https://github.com/dominnya/omut
cd omut
cargo install --path .

Quick Start

  1. Open any Git repo.
  2. Run omut init when you want AI or repo-specific rules.
  3. Stage files with git add.
  4. Run omut commit for a commit message, or omut branch for a branch name.
  5. Pick Manual, AI, or View Diff.
  6. Confirm and let omut finish the job.

Commands

Command What you get
omut commit Interactive commit flow for staged changes.
omut commit --test "feat(ui): refresh cards" Commit message validation against repo rules.
omut branch Interactive branch flow, plus git checkout -b after confirmation.
omut branch --test feat/refresh-cards Branch name validation against repo rules.
omut init A starter omut.config.toml in repo root.

Config

# omut β€” AI-powered conventional commit CLI
# Docs: https://github.com/dominnya/omut

# Commit message settings
[commit]
# Allowed conventional commit types
# Supports globs: ["*"] = any type, ["feat*"] = starts with feat
types = ["feat", "fix", "chore", "docs", "deps", "ci"]
# Available scopes (empty = freeform)
# Supports globs: ["*"] = any scope, ["api*"] = starts with api
scopes = []
# Require a scope for every commit
scope_required = false
# Show AI option first when choosing commit method
ai_first = false

# Branch naming conventions
[branch]
# Allowed branch prefixes (e.g. feat/*, fix/*)
# Supports globs: ["*"] = any prefix, ["release*"] = starts with release
allowed_prefixes = ["feat", "fix", "hotfix", "chore", "ci"]
# "warn" or "block" on invalid branch names
enforce = "warn"
# Branches exempt from prefix checks
# Supports globs: ["release/*", "main"] = all release branches + main
exempt_branches = ["main", "master", "develop", "dev", "staging", "production", "release"]

# AI provider settings
# Supported providers: claude, openai, gemini, codex, copilot
[ai]
provider = "claude"

# Claude β€” uses `claude` CLI when available, falls back to HTTP API
# Env: CLAUDE_API_KEY or ANTHROPIC_API_KEY
[ai.claude]
model = "claude-sonnet-4-6"
base_url = "https://api.anthropic.com"

# OpenAI β€” HTTP API
# Env: OPENAI_API_KEY
[ai.openai]
model = "gpt-5.4-mini"
base_url = "https://api.openai.com/v1"

# Gemini β€” uses `gemini` CLI when available, falls back to HTTP API
# Env: GEMINI_API_KEY or GOOGLE_API_KEY
[ai.gemini]
model = "gemini-3.1-flash-lite-preview"
base_url = "https://generativelanguage.googleapis.com"

# Codex β€” uses `codex` CLI when available, falls back to HTTP API
# Env: CODEX_API_KEY or OPENAI_API_KEY
[ai.codex]
model = "codex-mini-latest"
base_url = "https://api.openai.com/v1"

# Copilot β€” uses `copilot` CLI (requires GitHub Copilot subscription)
# No API key needed
[ai.copilot]
model = "claude-haiku-4.5"

Globs work in types, scopes, allowed_prefixes, and exempt_branches.

Default rules
Area Default
Commit types feat, fix, chore, docs, deps, ci
Commit scopes Freeform
Scope required false
AI first false
Branch prefixes feat, fix, hotfix, chore, ci
Branch enforcement warn
Exempt branches main, master, develop, dev, staging, production, release
Default AI provider claude

AI Providers

Provider How it runs What to set
Claude claude CLI when available, otherwise Anthropic API CLAUDE_API_KEY or ANTHROPIC_API_KEY
OpenAI Chat Completions API OPENAI_API_KEY
Gemini gemini CLI when available, otherwise Google API GEMINI_API_KEY or GOOGLE_API_KEY
Codex codex CLI when available, otherwise OpenAI-compatible API CODEX_API_KEY or OPENAI_API_KEY
Copilot copilot CLI GitHub Copilot sign-in

OpenAI-compatible endpoints also work by setting a custom base_url in the matching provider block.

AI commit prompts aim for short Conventional Commit messages with allowed types and scopes. AI branch prompts aim for prefix/kebab-case-name.

License

This project is under MIT license. You can freely use it for your own purposes.

About

🌿 AI-powered git management

Resources

Stars

Watchers

Forks

Contributors