{"id":30354140,"url":"https://github.com/mahmoud-emad/commi","last_synced_at":"2025-08-19T02:05:57.551Z","repository":{"id":269536613,"uuid":"907719654","full_name":"Mahmoud-Emad/commi","owner":"Mahmoud-Emad","description":"Commi is an AI-powered tool that automatically generates Git commit messages based on your code changes.","archived":false,"fork":false,"pushed_at":"2025-07-24T13:50:40.000Z","size":199,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"development","last_synced_at":"2025-07-24T14:35:35.105Z","etag":null,"topics":["ai","commit","commit-message","commit-message-generator","generator","git","github"],"latest_commit_sha":null,"homepage":"https://deepwiki.com/Mahmoud-Emad/commi","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mahmoud-Emad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-24T08:19:03.000Z","updated_at":"2025-07-24T13:23:39.000Z","dependencies_parsed_at":"2025-01-13T17:48:14.851Z","dependency_job_id":"9aad1e56-5d72-4644-aa9f-080e3ffb347b","html_url":"https://github.com/Mahmoud-Emad/commi","commit_stats":null,"previous_names":["mahmoud-emad/gultron","mahmoud-emad/commi"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/Mahmoud-Emad/commi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmoud-Emad%2Fcommi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmoud-Emad%2Fcommi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmoud-Emad%2Fcommi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmoud-Emad%2Fcommi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mahmoud-Emad","download_url":"https://codeload.github.com/Mahmoud-Emad/commi/tar.gz/refs/heads/development","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmoud-Emad%2Fcommi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271088140,"owners_count":24697081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","commit","commit-message","commit-message-generator","generator","git","github"],"created_at":"2025-08-19T02:04:12.564Z","updated_at":"2025-08-19T02:05:57.505Z","avatar_url":"https://github.com/Mahmoud-Emad.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Commi: AI-powered Git Commit Message Generator\n\n[![CI](https://github.com/Mahmoud-Emad/commi/workflows/CI/badge.svg)](https://github.com/Mahmoud-Emad/commi/actions)\n[![Security](https://github.com/Mahmoud-Emad/commi/workflows/Security/badge.svg)](https://github.com/Mahmoud-Emad/commi/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Rust Version](https://img.shields.io/badge/rust-1.70+-blue.svg)](https://www.rust-lang.org)\n\n**Fast, reliable, and dependency-free** - Commi is an AI-powered tool written in Rust that automatically generates Git commit messages based on your code changes using Google's Gemini AI.\n\n## Key Features\n\n- **AI-powered commit messages** - Uses Google's Gemini AI to analyze git diffs\n- **100x faster startup** - Near-instantaneous execution (~5ms)\n- **Single binary** - No runtime dependencies (3.8MB)\n- **Modern CLI** - Hierarchical subcommands with shell completion\n- **Cross-platform** - Works on Linux, macOS, and Windows\n- **Safety confirmations** - Interactive prompts for dangerous operations\n\n## Quick Start\n\n1. **Get your API key** from [Google AI Studio](https://makersuite.google.com/app/apikey)\n2. **Set your API key** (choose one method):\n\n   ```bash\n   # Method 1: Save to config file (recommended)\n   commi config set api-key \"your_api_key\"\n\n   # Method 2: Environment variable\n   export COMMI_API_KEY=\"your_api_key\"\n\n   # Method 3: Command line flag\n   commi generate --api-key \"your_api_key\"\n   ```\n\n3. **Generate commit messages**: `commi generate`\n\n## Installation\n\n```bash\n# Download and install\nwget https://github.com/Mahmoud-Emad/commi/releases/latest/download/commi-$(uname -s)-$(uname -m)\nchmod +x commi-*\nsudo mv commi-* /usr/local/bin/commi\n\n# Or build from source\ngit clone https://github.com/Mahmoud-Emad/commi.git \u0026\u0026 cd commi \u0026\u0026 ./scripts/build.sh\n\n# Install shell completion\n./scripts/install-completions.sh\n```\n\n## Usage\n\n```bash\n# Basic usage\ncommi generate                          # Generate commit message\ncommi generate --copy                   # Copy to clipboard\ncommi generate --commit                 # Auto-commit with message\n\n# Configuration\ncommi config set api-key \"your_key\"     # Set API key\ncommi config list                       # List all settings\n\n# AI Models\ncommi model list                        # List supported models\ncommi config set model gemini-2.5-pro   # Change AI model\n\n# Other commands\ncommi status                            # Show repository status\ncommi update check                      # Check for updates\ncommi completion bash                   # Generate shell completion\n```\n\n## Examples\n\n```bash\n# Generate commit message for staged changes\ngit add .\ncommi generate --cached --copy\n\n# Generate and commit in one step\ngit add .\ncommi generate --commit\n\n# Check what's changed\ncommi status --verbose\n```\n\n## Configuration\n\nCommi stores configuration in `~/.config/commi.toml`:\n\n```bash\n# View all configuration\ncommi config get\n\n# Set API key (required)\ncommi config set api-key \"your_api_key\"\n\n# Set model (optional)\ncommi config set model \"gemini-1.5-pro\"\n\n# View specific setting\ncommi config get api-key\n\n# View cached version info\ncommi config get version\ncommi config get last-version-check\n```\n\n**Configuration Options:**\n\n- `api-key` - Your Google AI Studio API key (required)\n- `model` - AI model to use (default: \"gemini-1.5-flash\")\n- `max-tokens` - Maximum tokens per request (default: 800000)\n- `chunk-overlap` - Lines to overlap between chunks (default: 200)\n- `enable-chunking` - Enable large diff chunking (default: true)\n- `validate-format` - Enable AI-powered commit message validation (default: true)\n\n## AI Models\n\nCommi supports multiple Gemini AI models with different capabilities:\n\n```bash\n# List all supported models\ncommi model list\n\n# Change to a different model\ncommi config set model gemini-2.5-pro\n```\n\n**Available Models:**\n\n- `gemini-1.5-flash` - Fast and efficient (default)\n- `gemini-2.5-flash` - Latest fast model\n- `gemini-2.5-flash-lite` - Lightweight version\n- `gemini-2.5-pro` - Most capable model\n\n**Rate Limiting:**\nIf you encounter rate limit errors, try switching to a different model:\n\n```bash\ncommi config set model gemini-2.5-pro\n```\n\nDifferent models may have different rate limits and quotas.\n\n## Commit Message Validation\n\nCommi includes AI-powered commit message validation to ensure your messages follow best practices:\n\n```bash\n# Enable validation (default)\ncommi config set validate-format true\n\n# Disable validation\ncommi config set validate-format false\n```\n\n**Validation Rules:**\n\n- **Subject line**: ≤ 50 characters, imperative mood, conventional commit format\n- **Body**: Lines wrapped at 72 characters, explains why and what\n- **Footer**: Issue references and breaking change descriptions\n\nWhen enabled, Commi automatically validates and formats commit messages to follow:\n\n- [Conventional Commits](https://www.conventionalcommits.org/) specification\n- Git best practices for line length and formatting\n- Proper imperative mood and clear descriptions\n\n## Documentation\n\n- **[Migration Guide](docs/MIGRATION.md)** - Upgrading from v3.x to v4.0\n- **[Shell Completion Guide](docs/SHELL_COMPLETION.md)** - Setting up tab completion\n- **[Testing Guide](docs/TESTING.md)** - Running and writing tests\n- **[Deployment Guide](docs/DEPLOYMENT.md)** - Production deployment\n- **[Changelog](docs/CHANGELOG.md)** - Version history and changes\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Submit a pull request\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmoud-emad%2Fcommi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmahmoud-emad%2Fcommi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmoud-emad%2Fcommi/lists"}