# Rusty Commit

> AI-powered commit message generator in Rust. Supports 16+ AI providers (Claude, OpenAI, Ollama, etc.), conventional commits, GitMoji, OAuth, and MCP server for editors.

- **Type:** MCP server
- **Install:** `agentstack add mcp-hongkongkiwi-rusty-commit`
- **Verified:** Pending review
- **Seller:** [hongkongkiwi](https://agentstack.voostack.com/s/hongkongkiwi)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [hongkongkiwi](https://github.com/hongkongkiwi)
- **Source:** https://github.com/hongkongkiwi/rusty-commit

## Install

```sh
agentstack add mcp-hongkongkiwi-rusty-commit
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 🦀 Rusty Commit (`rco`)

### **AI-powered commit message generator written in Rust**

**Generate conventional commits, GitMoji messages, and PR descriptions using 100+ AI providers**

[](https://github.com/hongkongkiwi/rusty-commit/actions/workflows/ci.yml)
[](https://crates.io/crates/rusty-commit)
[](https://docs.rs/rusty-commit)
[](https://opensource.org/licenses/MIT)

**🚀 Fast · 🔒 Secure · 🏠 Local-first · 🔌 Editor integrations via MCP**

[Installation](#-installation) · [Quick Start](#-quick-start) · [Features](#-features) · [Providers](#-providers) · [Configuration](#-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.

**📖 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.

---

## 📦 Installation

### One-liner (recommended)

```bash
curl -fsSL https://raw.githubusercontent.com/hongkongkiwi/rusty-commit/main/install.sh | bash
```

🔐 Security-conscious? Verify first

```bash
# 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.md
```

**Verify release binaries with GPG:**

```bash
# 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.txt
```

Or verify individual files directly:

```bash
gpg --verify rusty-commit-v1.0.0-x86_64-unknown-linux-musl.tar.gz.asc
```

**GPG Public Key:** [`0x0EC2DFF577818B86`](https://keys.openpgp.org/search?q=0x0EC2DFF577818B86) (full: `0EC2DFF577818B86BA38DA3F164E3F90E425B2AD`)

📦 Package Managers

| Platform | Command | Repo |
|----------|---------|------|
| **Homebrew** | `brew tap hongkongkiwi/rusty-commit && brew install rusty-commit` | [homebrew-rusty-commit](https://github.com/hongkongkiwi/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](https://github.com/hongkongkiwi/nixpkgs-overlays) |
| **Windows (Scoop)** | `scoop bucket add rusty-commit && scoop install rusty-commit` | [scoop-rusty-commit](https://github.com/hongkongkiwi/scoop-rusty-commit) |
| **Windows (Winget)** | `winget install hongkongkiwi.rusty-commit` | Community (via [winget-pkgs](https://github.com/microsoft/winget-pkgs)) |
| **Windows (Chocolatey)** | `choco install rusty-commit` | Community |
| **Windows (Binary)** | [Download from releases](https://github.com/hongkongkiwi/rusty-commit/releases) | - |

---

## 🚀 Quick Start

### Interactive Setup

```bash
rco setup              # Quick interactive wizard (recommended)
rco setup --advanced   # Full configuration
rco setup --defaults   # Non-interactive with sensible defaults
```

**Quick Setup** asks for:
1. **AI Provider** - Choose from 30+ providers (100+ total supported)
2. **API Key** - Securely stored in your system's keychain
3. **Commit Format** - Conventional commits, GitMoji, or simple

### Generate Your First Commit

```bash
git add .
rco                    # Interactive mode with review
```

⚡ Common Options

```bash
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

```bash
# 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
```

---

## 🎯 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

🌟 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://.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.

---

## ⚙️ Configuration

### Interactive Configuration

```bash
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

### Configuration Priority

```
Per-repo config > Global config > Environment variables > Defaults
```

### Manual Config Commands

```bash
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` |

---

## 🎣 Git Hooks

### Install/Uninstall

```bash
rco hook set    # Install prepare-commit-msg hook
rco hook unset  # Remove hook
```

Once installed, `git commit` (without `-m`) automatically generates commit messages!

⚙️ Advanced Hooks

```bash
# 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 ms
```

**Skip Hooks (Per-Run):**
```bash
rco --no-pre-hooks      # Skip pre-gen + pre-commit hooks
rco --no-post-hooks     # Skip post-commit hooks
```

---

## 🧠 Advanced Features

📝 Commit Body Generation

Enable detailed commit messages with body explaining the "why":

```bash
rco config set RCO_ENABLE_COMMIT_BODY=true
```

**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
```

🧠 Style Learning from History

Automatically learn and match your team's commit style:

```bash
rco config set RCO_LEARN_FROM_HISTORY=true
rco config set RCO_HISTORY_COMMITS_COUNT=100  # Analyze last 100 commits
```

Analyzes 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:
```bash
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](https://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:

```bash
# 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 configs
```

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [hongkongkiwi](https://github.com/hongkongkiwi)
- **Source:** [hongkongkiwi/rusty-commit](https://github.com/hongkongkiwi/rusty-commit)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: flagged — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-hongkongkiwi-rusty-commit
- Seller: https://agentstack.voostack.com/s/hongkongkiwi
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
