🦀 Rusty Commit (rco)
AI-powered commit message generator written in Rust
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
✨ Why Rusty Commit?
⚡ 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.
🔌 Editor Integration
MCP server for Cursor, VS Code, Claude Code, and other AI-powered editors.
📦 Installation
One-liner (recommended)
|
# Download and inspect
# Verify with SHA256 checksums, Cosign, GPG, or GitHub attestations
# See: docs/INSTALL-SCRIPT-VERIFICATION.md
Verify release binaries with GPG:
# Download release files
# Verify GPG signature
# Verify checksums
Or verify individual files directly:
GPG Public Key: 0x0EC2DFF577818B86 (full: 0EC2DFF577818B86BA38DA3F164E3F90E425B2AD)
| 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 | - |
🚀 Quick Start
Interactive Setup
Quick 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
Generate Your First Commit
# Add multiple provider accounts
# Switch between them
&&
&&
🎯 Features
| 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 |
🤖 Providers
Rusty Commit supports 100+ AI providers. Configure interactively with rco setup or manually:
🔑 OAuth (No API Key)
| Provider | Command |
|---|---|
| Claude (Anthropic) | rco auth login |
| GitHub Copilot | rco auth login --provider github-copilot |
🔐 API Key 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 |
| 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=... |
| 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=... |
| 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=... |
| 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 |
| 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=... |
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
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.
⚙️ Configuration
Interactive Configuration
Configuration Priority
Per-repo config > Global config > Environment variables > Defaults
Manual Config Commands
| Key | Description | Default |
|---|---|---|
RCO_AI_PROVIDER |
AI backend | anthropic |
RCO_MODEL |
Model name | Provider-specific |
RCO_API_KEY |
API key | - |
RCO_API_URL |
Custom endpoint | - |
RCO_COMMIT_TYPE |
Commit format | conventional |
RCO_EMOJI |
Include emojis | false |
RCO_LANGUAGE |
Output language | en |
RCO_MAX_TOKENS |
Max response tokens | 1024 |
RCO_TEMPERATURE |
Response creativity | 0.7 |
RCO_ENABLE_COMMIT_BODY |
Add commit body | false |
RCO_LEARN_FROM_HISTORY |
Learn from git history | false |
🎣 Git Hooks
Install/Uninstall
Once installed, git commit (without -m) automatically generates commit messages!
# Pre-generation hook
# Pre-commit hook
# Post-commit hook
# Hook behavior
Skip Hooks (Per-Run):
🧠 Advanced Features
Enable detailed commit messages with body explaining the "why":
Output:
feat(auth): implement OAuth2 PKCE flow
- Add secure token storage with automatic refresh
- Support GitHub, GitLab, and generic OAuth2 providers
- Handle token expiration gracefully
Automatically learn and match your team's commit style:
Analyzes last 50 commits to detect:
- Common commit types and scopes
- Average description length
- Capitalization preferences
- Gitmoji usage patterns
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 |
Rusty Commit automatically detects project context:
# Create custom context file
Auto-detected sources:
.rco/context.txt- Custom project descriptionREADME.md- First paragraphCargo.toml- Rust project descriptionpackage.json- Node.js project description
🎨 Custom Skills
Create reusable commit message templates:
# Import from Claude Code
# Import from GitHub
# Import from GitHub Gist
# Import from URL
Create ~/.config/rustycommit/skills/my-skill/prompt.md:
Analyze this {language} code change:
{diff}
Context: {context}
Format: {commit_type}
Max length: {max_length}
Generate a commit message following our team conventions:
- -
🔌 MCP Server
Rusty Commit includes an MCP (Model Context Protocol) server for editor integrations.
Cursor: Settings > Features > MCP > Add Server → Type: HTTP → URL: http://localhost:3000
Claude Code: rco mcp stdio | claude-code connect stdio
📋 PR Description Generation
🚫 File Exclusion
Exclude files from AI analysis via .rcoignore:
# Dependencies
node_modules/
vendor/
# Build artifacts
*.min.js
*.map
dist/
build/
# IDE
.idea/
.vscode/
# OS
.DS_Store
Or via command line: rco -x "*.lock" -x "*.min.js"
🔄 Updates
🏃 GitHub Action
- uses: hongkongkiwi/rusty-commit@v1
with:
provider: 'anthropic'
api-key: ${{ secrets.ANTHROPIC_API_KEY }}
auto-commit: 'true'
🤝 Contributing
See CONTRIBUTING.md for development setup and contribution guidelines.
📄 License
MIT License - see LICENSE for details.
Made with 🦀 by the Rusty Commit Contributors