Committor is a powerful VS Code extension that generates meaningful, conventional commit messages instantly from your staged changes using state-of-the-art AI models.
Get it on the VS Code Marketplace | Get it on Open VSX
- Auto-Population: Automatically fills the Git Source Control input box for you.
- Quick Access: Dedicated "Generate Commit" button with a ✨ (sparkle) icon in the Source Control title bar.
- Privacy First: Your API keys never leave your machine.
- Conventional Commits: Strictly adheres to the Conventional Commits standard (
feat:,fix:,chore:, etc.). - Custom Models: Manually input any model ID supported by your provider.
Follow these simple steps to set up and start using Committor.
- VS Code Marketplace: Search for "Committor" and click Install.
- Configure API Key:
- Stage your changes (
git add .). - Press
Ctrl+Shift+Pand type "Committor: Generate Commit Message". - Follow the prompts to select your provider (Groq, OpenRouter, Gemini, or OpenAI) and paste your API key.
- Select "Yes" to save it locally for later use without reentering it every time you generate a commit message.
- Stage your changes (
- Stage your changes in the Source Control view.
- Click the ✨ (sparkle icon) or the "Generate Commit" text in the Source Control title bar.
- Note: If this is your first time or if the API key is missing, a popup will guide you to select a provider and enter your key automatically.
- The commit message will populate the input box!
- Stage your changes.
- Press
Ctrl+Shift+P. - Type "Committor: Generate Commit Message" and hit Enter.
- Note: If not configured, you will be prompted to set up your provider and API key.
Access settings via Ctrl+, and search for "Committor":
- Active Provider: Select which AI to use.
- Auto-Detection: If no provider is selected, Committor automatically finds a configured API key for you.
- Switch Provider: Use the command palette (
Ctrl+Shift+P) and type "Committor: Switch AI Provider" to quickly swap between AIs. - Copy to Clipboard: Enabled by default for easy pasting elsewhere.
The following diagram illustrates the lifecycle of a commit message generation:
graph TD
A[Start: committor.generate] --> B{Staged Changes?}
B -- No --> C[Error: No changes staged]
B -- Yes --> D{Provider Saved?}
D -- No --> E[Prompt: Select Provider]
E --> F[Prompt: Select Model]
F --> G[Check/Prompt: API Key]
D -- Yes --> H[Read Saved Settings]
G --> I[Send Diff + Prompts to LLM]
H --> I
I --> J[Clean & Extract Message]
J --> K[Populate Source Control Box]
K --> L[Finish: Success Message]
The project is organized logically to separate concerns:
committor/
├── src/
│ ├── commit/ # Core logic for commit generation
│ ├── config/ # Configuration management and key validation
│ ├── const/ # System-wide constants (prompts, endpoints)
│ ├── llms/ # Provider implementations (OpenAI, Gemini, OpenRouter)
│ ├── types/ # Centralized TypeScript interfaces
│ ├── ui/ # VS Code UI wrappers (pickers and selectors)
│ ├── utils/ # Shared utilities (Git helpers, error handlers)
│ └── extension.ts # Main entry point and command registration
├── package.json # Extension manifest and configuration schema
└── tsconfig.json # TypeScript configuration
Settings are managed via VS Code's standard settings interface (Ctrl+,).
- Open Settings (
Ctrl+,). - Type "Committor" in the search bar.
- Configure your preferences:
- Default Provider: Set your preferred AI.
- API Keys: Manage keys for all providers.
- Default Models: Choose your go-to model (Supports o1, Gemini 2.5, DeepSeek R1, etc.).
| Setting | Description | Default |
|---|---|---|
committor.activeProvider |
The AI currently in use. Auto-detected if empty. | "" |
committor.openaiModel |
Default model for OpenAI. | "gpt-4o" |
committor.groqModel |
Default model for Groq. | "openai/gpt-oss-120b" |
committor.openrouterModel |
Default model for OpenRouter. | "meta-llama/llama-3.3-70b-instruct:free" |
committor.geminiModel |
Default model for Gemini. | "gemini-1.5-flash" |
committor.copyToClipboard |
Automatically copy generated message to clipboard. | true |
The following diagram precisely maps the project's internal dependencies:
graph TD
subgraph "Entry Point"
Ext["extension.ts"]
end
subgraph "UI"
Selector["ui/selector.ts"]
end
subgraph "Core Logic"
Generator["commit/commitGenerator.ts"]
end
subgraph "AI Engines"
LLM["llms/ providers"]
OpenAI["llms/openAI.ts"]
OpenRouter["llms/openRouter.ts"]
Gemini["llms/gemini.ts"]
end
subgraph "Storage & Config"
Config["config/configuration.ts"]
end
subgraph "Resources"
Prompts["const/prompts.ts"]
Endpoints["const/endpoints.ts"]
end
subgraph "Helpers"
Git["utils/gitUtils.ts"]
Extract["utils/extractCommitMessage.ts"]
Error["utils/errorHandler.ts"]
Types["types/index.ts"]
end
Ext --> Selector
Selector --> Generator
Ext --> Config
Generator --> Git
Generator --> LLM
Generator --> Error
LLM --> OpenAI
LLM --> OpenRouter
LLM --> Gemini
LLM --> Endpoints
LLM --> Prompts
LLM --> Extract
Ext -.-> Types
Generator -.-> Types
If using free models on OpenRouter, visit OpenRouter Privacy Settings and enable "Allow data usage for model improvement".
We are constantly working to improve Committor. Upcoming features include:
- More LLM Providers: Experimental support for xAI Grok, Anthropic Claude, and Ollama (for local models).
- Multi-line Commits: Support for generating detailed commit bodies and footers.
- Internationalization: Localized commit messages for multiple languages.
- Custom Templates: Allow users to define their own commit message formats.
We welcome contributions and your feedback!
- Request a Model: If there’s a specific model you’d like to see supported, please open an issue on GitHub.
- Contribute: Feel free to submit pull requests for new features, bug fixes, or improved prompts.
- Repository: https://github.com/ManojBelbase/committor
Have a suggestion, found a bug, or just want to say hi?
📧 Send Feedback / Report Issue
Enjoying Committor? Please rate us ⭐⭐⭐⭐⭐ in the marketplace!