Generate conventional commits, GitMoji messages, and PR descriptions using 100+ AI providers
π Fast Β· π Secure Β· π Local-first Β· π Editor integrations via MCP
Installation Β· Quick Start Β· Features Β· Providers Β· Configuration
|
β‘ Blazing Fast Native Rust binary with instant startup time. No Node.js bloat, no waiting. π€ 100+ AI Providers Works with OpenAI, Claude, Groq, Cerebras, DeepSeek, GitHub Copilot, Ollama, and 90+ more. π Secure by Default Optional keychain storage keeps your API keys safe. OAuth support for major providers. |
π¨ Flexible Formats Conventional commits, GitMoji, or custom templates. Multi-language support. π Multi-Account Support Seamlessly switch between work and personal accounts, different providers, or models. π Smart Context Awareness Reads AGENTS.md, CLAUDE.md, GEMINI.md, commitlint configs, and Cargo.toml to generate context-aware commits. π Editor Integration MCP server for Cursor, VS Code, Claude Code, and other AI-powered editors. |
curl -fsSL https://raw.githubusercontent.com/hongkongkiwi/rusty-commit/main/install.sh | bashπ Security-conscious? Verify first
# Download and inspect
curl -fsSL https://raw.githubusercontent.com/hongkongkiwi/rusty-commit/main/install.sh -o install.sh
# Verify with SHA256 checksums, Cosign, GPG, or GitHub attestations
# See: docs/INSTALL-SCRIPT-VERIFICATION.mdVerify release binaries with GPG:
# Download release files
wget https://github.com/hongkongkiwi/rusty-commit/releases/download/v1.0.0/rusty-commit-v1.0.0-x86_64-unknown-linux-musl.tar.gz
wget https://github.com/hongkongkiwi/rusty-commit/releases/download/v1.0.0/rusty-commit-v1.0.0-x86_64-unknown-linux-musl.tar.gz.asc
wget https://github.com/hongkongkiwi/rusty-commit/releases/download/v1.0.0/SHA256SUMS.txt
wget https://github.com/hongkongkiwi/rusty-commit/releases/download/v1.0.0/SHA256SUMS.txt.asc
# Verify GPG signature
gpg --verify SHA256SUMS.txt.asc
# Verify checksums
sha256sum -c SHA256SUMS.txtOr verify individual files directly:
gpg --verify rusty-commit-v1.0.0-x86_64-unknown-linux-musl.tar.gz.ascGPG Public Key: 0x0EC2DFF577818B86 (full: 0EC2DFF577818B86BA38DA3F164E3F90E425B2AD)
π¦ Package Managers
| Platform | Command | Repo |
|---|---|---|
| Homebrew | brew tap hongkongkiwi/rusty-commit && brew install rusty-commit |
homebrew-rusty-commit |
| Cargo | cargo install rusty-commit --features secure-storage |
- |
| Debian/Ubuntu | wget .../rusty-commit_amd64.deb && sudo dpkg -i rusty-commit_amd64.deb |
- |
| Fedora/RHEL | sudo dnf install https://.../rusty-commit.x86_64.rpm |
- |
| Alpine | wget .../rusty-commit-x86_64.apk && sudo apk add --allow-untrusted rusty-commit-x86_64.apk |
- |
| Arch Linux (AUR) | yay -S rusty-commit or paru -S rusty-commit |
Community |
| Nix/NixOS | nix-env -iA nixpkgs.rusty-commit or via flake |
nixpkgs-overlays |
| Windows (Scoop) | scoop bucket add rusty-commit && scoop install rusty-commit |
scoop-rusty-commit |
| Windows (Winget) | winget install hongkongkiwi.rusty-commit |
Community (via winget-pkgs) |
| Windows (Chocolatey) | choco install rusty-commit |
Community |
| Windows (Binary) | Download from releases | - |
rco setup # Quick interactive wizard (recommended)
rco setup --advanced # Full configuration
rco setup --defaults # Non-interactive with sensible defaultsQuick Setup asks for:
- AI Provider - Choose from 30+ providers (100+ total supported)
- API Key - Securely stored in your system's keychain
- Commit Format - Conventional commits, GitMoji, or simple
git add .
rco # Interactive mode with reviewβ‘ Common Options
rco --dry-run # Preview without committing
rco --edit # Open in $EDITOR before committing
rco --clipboard # Copy to clipboard instead
rco --generate 3 # Generate 3 variations
rco --fgm # Full GitMoji specification
rco -y # Auto-commit without confirmation
rco -c "context" # Add extra contextπ Multi-Account Workflow
# Add multiple provider accounts
rco config add-provider # Interactive wizard
rco config add-provider --provider openai --alias work-openai
# Switch between them
rco config use-account work-openai
git add . && rco
rco config use-account personal-anthropic
git add . && rco| Feature | Command |
|---|---|
| Interactive mode | rco |
| Auto-commit | rco -y |
| Dry-run preview | rco --dry-run |
| Edit in $EDITOR | rco --edit |
| Copy to clipboard | rco --clipboard |
| Generate variations | rco -g 3 |
| Add context | rco -c "Fix OAuth" |
| Full GitMoji | rco --fgm |
| Show prompt | rco --show-prompt |
| Debug logging | RUST_LOG=debug rco |
Rusty Commit supports 100+ AI providers. Configure interactively with rco setup or manually:
| Provider | Command |
|---|---|
| Claude (Anthropic) | rco auth login |
| GitHub Copilot | rco auth login --provider github-copilot |
π Popular Providers
| Provider | Setup |
|---|---|
| OpenAI | rco config set RCO_AI_PROVIDER=openai RCO_API_KEY=sk-... RCO_MODEL=gpt-4o-mini |
| Anthropic | rco config set RCO_AI_PROVIDER=anthropic RCO_API_KEY=sk-ant-... RCO_MODEL=claude-3-5-haiku-20241022 |
| Google Gemini | rco config set RCO_AI_PROVIDER=gemini RCO_API_KEY=... RCO_MODEL=gemini-2.5-flash |
| xAI/Grok | rco config set RCO_AI_PROVIDER=xai RCO_API_KEY=... RCO_MODEL=grok-2 |
| DeepSeek | rco config set RCO_AI_PROVIDER=deepseek RCO_API_KEY=sk-... RCO_MODEL=deepseek-chat |
β‘ Ultra-Fast Inference
| Provider | Setup |
|---|---|
| Groq | rco config set RCO_AI_PROVIDER=groq RCO_API_KEY=gsk_... RCO_MODEL=llama-3.3-70b-versatile |
| Cerebras | rco config set RCO_AI_PROVIDER=cerebras RCO_API_KEY=... RCO_MODEL=llama-3.3-70b |
| SambaNova | rco config set RCO_AI_PROVIDER=sambanova RCO_API_KEY=... RCO_MODEL=Meta-Llama-3.3-70B-Instruct |
| Nebius | rco config set RCO_AI_PROVIDER=nebius RCO_API_KEY=... |
π Multi-Model Aggregators
| Provider | Setup |
|---|---|
| OpenRouter | rco config set RCO_AI_PROVIDER=openrouter RCO_API_KEY=sk-or-... |
| Together AI | rco config set RCO_AI_PROVIDER=together RCO_API_KEY=... |
| Fireworks | rco config set RCO_AI_PROVIDER=fireworks RCO_API_KEY=... |
| Replicate | rco config set RCO_AI_PROVIDER=replicate RCO_API_KEY=... |
| DeepInfra | rco config set RCO_AI_PROVIDER=deepinfra RCO_API_KEY=... |
| Novita | rco config set RCO_AI_PROVIDER=novita RCO_API_KEY=... |
π’ Enterprise Providers
| Provider | Setup |
|---|---|
| Azure OpenAI | rco config set RCO_AI_PROVIDER=azure RCO_API_KEY=... RCO_API_URL=https://<resource>.openai.azure.com |
| AWS Bedrock | rco config set RCO_AI_PROVIDER=bedrock |
| Google Vertex AI | rco config set RCO_AI_PROVIDER=vertex |
| Mistral | rco config set RCO_AI_PROVIDER=mistral RCO_API_KEY=... RCO_MODEL=mistral-small-latest |
| Cohere | rco config set RCO_AI_PROVIDER=cohere RCO_API_KEY=... RCO_MODEL=command-r |
| AI21 Labs | rco config set RCO_AI_PROVIDER=ai21 RCO_API_KEY=... RCO_MODEL=jamba-1.5-mini |
| Perplexity | rco config set RCO_AI_PROVIDER=perplexity RCO_API_KEY=... |
π Local/Self-Hosted
| Provider | Setup |
|---|---|
| Ollama | rco config set RCO_AI_PROVIDER=ollama RCO_MODEL=llama3.2 RCO_API_URL=http://localhost:11434 |
| LM Studio | rco config set RCO_AI_PROVIDER=lmstudio RCO_API_URL=http://localhost:1234/v1 |
| llama.cpp | rco config set RCO_AI_PROVIDER=llamacpp RCO_API_URL=http://localhost:8080/v1 |
π China-based Providers
| Provider | Setup |
|---|---|
| Moonshot/Kimi | rco config set RCO_AI_PROVIDER=moonshot RCO_API_KEY=... |
| SiliconFlow | rco config set RCO_AI_PROVIDER=siliconflow RCO_API_KEY=... |
| Zhipu AI | rco config set RCO_AI_PROVIDER=zhipu RCO_API_KEY=... |
| MiniMax | rco config set RCO_AI_PROVIDER=minimax RCO_API_KEY=... |
| Alibaba Qwen | rco config set RCO_AI_PROVIDER=dashscope RCO_API_KEY=... |
π All 100+ Supported Providers
GPU Cloud & Inference: Cerebras, SambaNova, Nebius, Lambda, Hyperbolic, Kluster, Together, Fireworks, Replicate, Novita, Predibase, TensorOps, Baseten, Chutes, IO.Net, Scaleway, OVHcloud, Friendli, ModelScope
Enterprise & Specialized: Cohere, AI21 Labs, Upstage/Solar, Jina AI, Abacus AI, Bailing, Poe
AI Gateways & Proxies: Helicone, Cloudflare Workers AI, Vercel AI Gateway, Requesty
China-based: Moonshot, SiliconFlow, Zhipu, MiniMax, Baichuan, 01.AI, Dashscope/Alibaba
Local/Self-hosted: Ollama, LM Studio, llama.cpp, KoboldCpp, Text Generation WebUI, Tabby
Additional Providers: Venice, Cortecs, Synthetic, NanoGPT, ZenMux, V0, Morph, Corcel, CyberNative, Edgen, GigaChat, Hydra, Lingyi, Monica, Pollinations, ShuttleAI, Teknium, TheB, TryLeap, Targon, 302.AI, SAP AI Core
π Secure Storage
When built with --features secure-storage:
- macOS: Keychain
- Linux: Secret Service (GNOME Keyring, KWallet, KeePassXC)
- Windows: Credential Manager
Falls back to config file if keychain is unavailable.
rco setup # Quick setup (essential settings)
rco setup --advanced # Advanced setup (all settings)
rco setup --tui # Force TUI mode (interactive terminal UI)
rco setup --no-tui # Force dialoguer prompts (no TUI)The setup wizard automatically detects whether to use TUI mode based on your terminal. Use --tui or --no-tui to override.
TUI Features:
- Arrow key navigation through menus
- Real-time preview of commit message formats
- Visual confirmation of selections
- Color-coded provider categories
Per-repo config > Global config > Environment variables > Defaults
rco config status # Check secure storage status
rco config set RCO_AI_PROVIDER=anthropic # Set provider
rco config set RCO_MODEL=claude-3-5-haiku # Set model
rco config get RCO_AI_PROVIDER # Get current value
rco config describe # Show all options
rco config reset --all # Reset to defaultsπ§ Common Configuration Options
| Key | Description | Default |
|---|---|---|
| Provider Settings | ||
RCO_AI_PROVIDER |
AI backend | anthropic |
RCO_MODEL |
Model name | Provider-specific |
RCO_API_KEY |
API key | - |
RCO_API_URL |
Custom endpoint | - |
| Commit Format | ||
RCO_COMMIT_TYPE |
Commit format (conventional, gitmoji) |
conventional |
RCO_EMOJI |
Include emojis | false |
RCO_LANGUAGE |
Output language | en |
RCO_DESCRIPTION |
Add description | false |
RCO_DESCRIPTION_CAPITALIZE |
Capitalize description | true |
RCO_DESCRIPTION_ADD_PERIOD |
Add period to description | false |
RCO_DESCRIPTION_MAX_LENGTH |
Max description length | 100 |
| Context & Learning | ||
RCO_READ_CONTEXT |
Read .rco/context.txt |
true |
RCO_READ_AGENT_FILES |
Read AGENTS.md, CLAUDE.md, GEMINI.md | true |
RCO_READ_COMMITLINT |
Read commit style configs | true |
RCO_READ_PROJECT_CONFIG |
Read Cargo.toml, package.json | true |
RCO_LEARN_FROM_HISTORY |
Learn from git history | false |
RCO_HISTORY_COMMITS_COUNT |
Commits to analyze | 50 |
| Output Control | ||
RCO_MAX_TOKENS |
Max response tokens | 1024 |
RCO_TEMPERATURE |
Response creativity | 0.7 |
RCO_ENABLE_COMMIT_BODY |
Add commit body | false |
RCO_GENERATE_COUNT |
Variations to generate | 1 |
RCO_ONE_LINE_COMMIT |
Single line message | false |
| Integration | ||
RCO_CLIPBOARD_ON_TIMEOUT |
Copy to clipboard on timeout | true |
RCO_ACTION_ENABLED |
Enable action mode | false |
rco hook set # Install prepare-commit-msg hook
rco hook unset # Remove hookOnce installed, git commit (without -m) automatically generates commit messages!
βοΈ Advanced Hooks
# Pre-generation hook
rco config set RCO_PRE_GEN_HOOK="just lint; just test -q"
# Pre-commit hook
rco config set RCO_PRE_COMMIT_HOOK="./scripts/tweak_commit.sh"
# Post-commit hook
rco config set RCO_POST_COMMIT_HOOK="git push"
# Hook behavior
rco config set RCO_HOOK_STRICT=false # Allow hook failures
rco config set RCO_HOOK_TIMEOUT_MS=60000 # Timeout in msSkip Hooks (Per-Run):
rco --no-pre-hooks # Skip pre-gen + pre-commit hooks
rco --no-post-hooks # Skip post-commit hooksπ Commit Body Generation
Enable detailed commit messages with body explaining the "why":
rco config set RCO_ENABLE_COMMIT_BODY=trueOutput:
feat(auth): implement OAuth2 PKCE flow
- Add secure token storage with automatic refresh
- Support GitHub, GitLab, and generic OAuth2 providers
- Handle token expiration gracefully
π§ Style Learning from History
Automatically learn and match your team's commit style:
rco config set RCO_LEARN_FROM_HISTORY=true
rco config set RCO_HISTORY_COMMITS_COUNT=100 # Analyze last 100 commitsAnalyzes your git history to detect:
- Common commit types and scopes
- Average description length
- Capitalization preferences
- Gitmoji usage patterns
- Period usage in descriptions
- Subject vs body formatting
Configure how many commits to analyze:
rco config set RCO_HISTORY_COMMITS_COUNT=100 # More commits = better patterns
rco config set RCO_HISTORY_COMMITS_COUNT=20 # Faster, less accurateπ GitMoji Support
25+ emojis from gitmoji.dev:
| Emoji | Meaning | Use Case |
|---|---|---|
| β¨ | :sparkles: |
New feature |
| π | :bug: |
Bug fix |
| π | :memo: |
Documentation |
| π¨ | :art: |
Code structure/format |
| β»οΈ | :recycle: |
Refactoring |
| β‘ | :zap: |
Performance |
| β | :white_check_mark: |
Tests |
| π | :lock: |
Security fix |
| β¬οΈ | :arrow_up: |
Upgrade dependencies |
| π₯ | :fire: |
Remove code/files |
| π | :rocket: |
Deployment |
| π₯ | :boom: |
Breaking changes |
π Repository Context Awareness
Rusty Commit automatically detects project context to generate better commit messages. Control which sources are read via configuration:
# Enable/disable context reading
rco config set RCO_READ_CONTEXT=true # Read .rco/context.txt
rco config set RCO_READ_AGENT_FILES=true # Read AGENTS.md, CLAUDE.md, GEMINI.md
rco config set RCO_READ_PROJECT_CONFIG=true # Read Cargo.toml, package.json
rco config set RCO_READ_COMMITLINT=true # Read commit style configsContext Sources (by priority):
| Priority | Source | Description |
|---|---|---|
| 1 | .rco/context.txt |
Custom project description (highest priority) |
| 2 | AGENTS.md |
AI agent specification (highest priority) |
| 3 | CLAUDE.md |
Claude Code specification |
| 4 | GEMINI.md |
Gemini specification |
| 5 | Commit style config | commitlint, cz, conventionalcommits rules |
| 6 | Cargo.toml |
Rust project description |
| 7 | package.json |
Node.js project description |
Commit Style Configuration Detection:
Rusty Commit reads existing commit style configurations to match your project's conventions:
| File | Format |
|---|---|
commitlint.config.js |
Commitlint (JS) |
commitlint.config.ts |
Commitlint (TypeScript) |
.commitlintrc.js |
Commitlint (legacy) |
.commitlintrc.ts |
Commitlint (legacy TS) |
.commitlintrc.json |
Commitlint (legacy JSON) |
.commitlintrc |
Commitlint (legacy YAML) |
conventionalcommits.yaml |
Conventional Commits |
conventionalcommits.yml |
Conventional Commits |
.czrc |
Cz CLI config |
.cz.json |
Cz JSON config |
When detected, rusty-commit learns:
- Supported commit types (feat, fix, docs, etc.)
- Scope requirements
- Header length constraints
- Breaking change format
Create reusable commit message templates:
rco skills list # List available skills
rco skills create my-template # Create a new skill
rco skills create my-team-style --project # Project-specific skill
rco skills show my-team-style # Show skill details
rco skills remove my-team-style # Remove a skill
rco --skill my-team-template # Use a skillπ₯ Import Skills from External Sources
Import skills from various AI tool formats:
# Import from Claude Code
rco skills available claude-code # List available skills
rco skills import claude-code --name <skill-name>
# Import from Cline
rco skills import cline:/path/to/.cline/skills
# Import from Roo Code
rco skills import roo:owner/repo # From GitHub repository
rco skills import roo:gist:gist-id # From GitHub Gist
# Import from Kilo
rco skills import kilo:owner/repo # From GitHub repository
rco skills import kilo:gist:gist-id # From GitHub Gist
# Import from .codex directory
rco skills import codex:/path/to/.codex
# Import from GitHub
rco skills import github:owner/repo
# Import from GitHub Gist
rco skills import gist:<gist-id>
# Import from URL
rco skills import https://example.com/skill-definition.mdπ Custom Prompt Template
Create ~/.config/rustycommit/skills/my-skill/prompt.md:
# Custom Commit Prompt
Analyze this {language} code change:
{diff}
Context: {context}
Format: {commit_type}
Max length: {max_length}
Generate a commit message following our team conventions:
- Use present tense
- Include ticket number if obvious from branch nameRusty Commit includes an MCP (Model Context Protocol) server for editor integrations.
rco mcp server --port 3000 # TCP Mode (Cursor, VS Code)
rco mcp stdio # STDIO Mode (Direct integration)Cursor: Settings > Features > MCP > Add Server β Type: HTTP β URL: http://localhost:3000
Claude Code: rco mcp stdio | claude-code connect stdio
rco pr generate # Generate PR description for current branch
rco pr generate --base main # Compare against main branch
rco pr browse # Generate and open PR creation pageExclude files from AI analysis via .rcoignore:
# Dependencies
node_modules/
vendor/
# Build artifacts
*.min.js
*.map
dist/
build/
# IDE
.idea/
.vscode/
# OS
.DS_StoreOr via command line: rco -x "*.lock" -x "*.min.js"
rco update --check # Check for updates
rco update # Update to latest
rco update --force # Force update
rco update --version 1.0.2 # Install specific version- uses: hongkongkiwi/rusty-commit@v1
with:
provider: 'anthropic'
api-key: ${{ secrets.ANTHROPIC_API_KEY }}
auto-commit: 'true'See CONTRIBUTING.md for development setup and contribution guidelines.
MIT License - see LICENSE for details.
Made with π¦ by the Rusty Commit Contributors