Jeeves
Jeeves creates Git commit messages from your changes using OpenRouter, the Anthropic API, or a local Ollama model. The bundled prompt adds gitmoji and a sarcastic roast of your engineering choices. Your own prompt can be neutral.
🐛 fix(client): retry only rate limits and server errors
Stop retrying permanent client errors. Asking a 404 more insistently was
never going to make the missing endpoint appear.
Install
Use Ruby 3.3 or newer and Git. Development uses Homebrew's current Ruby.
gem install jeeves-git-commitFrom a source checkout:
bundle install
bundle exec rake installAlternatively, ./install.sh links this checkout's executable into your PATH.
The checkout must remain available when using this installation method.
Configure
For OpenRouter, export OPENROUTER_API_KEY. Optionally set
GIT_COMMIT_OPENROUTER_MODEL to your preferred model. The provider defaults to
OpenRouter.
To call Anthropic directly, save these settings. GIT_COMMIT_ANTHROPIC_MODEL
is optional and defaults to claude-haiku-5-5:
GIT_COMMIT_PROVIDER=anthropic
ANTHROPIC_API_KEY=your-anthropic-key
GIT_COMMIT_ANTHROPIC_MODEL=claude-haiku-5-5To use an installed local Ollama model, save these in your shell's configuration or the environment file your shell already loads:
GIT_COMMIT_PROVIDER=ollama
GIT_COMMIT_LOCAL_MODEL=your-installed-modelPlain jeeves then uses local generation; no per-command flag or cloud key is
needed. See configuration for installation, fish
syntax, all settings, prompt customization, and input limits.
Version 4 renames GIT_COMMIT_MODEL to GIT_COMMIT_OPENROUTER_MODEL. Jeeves
requires Ruby 3.3 or newer and validates conventional commit subjects by
default; use GIT_COMMIT_MESSAGE_FORMAT=plain for a custom format. Existing
personal prompts are preserved. See the release notes.
Use
# Generate and commit the staged changes
jeeves
# Stage all changes, then generate and commit
jeeves --all
# Inspect the message without staging, committing, or pushing
jeeves --dry-run
jeeves --all --dry-run
# Generate from a supplied diff; only the message goes to stdout
git diff | jeeves
# Push only after a successful commit
jeeves --push
# Use a saved provider and its model for one command
jeeves --provider openrouter
jeeves --provider anthropic
# Override the local model for one command
jeeves --local --model another-installed-model| Option | Purpose |
|---|---|
-a, --all
|
Include all working-tree changes |
-d, --dry-run
|
Print the message without changing the real index or HEAD |
-p, --push
|
Push after a successful commit |
--provider openrouter|anthropic|ollama |
Override the provider |
--local |
Use Ollama for this invocation |
--model MODEL |
Override the selected provider's model |
--version |
Print the version |
-h, --help
|
Print help |
Git and generation failures stop the command with a nonzero exit status. Jeeves checks that staged changes and HEAD still match what it reviewed before committing. See architecture and Git behavior.
Local generation defaults to a 65,536-token context. Oversized diffs are automatically shortened, with a warning and omission notices for the model. Only the model input is shortened; Git commits the complete staged changes. See input limits.
Develop
bin/setup
bundle install
bundle exec rake test
bundle exec rake lint
bundle exec rake build
bin/check --full
bin/doctorbin/check runs fast foundation checks. bin/check --documents-only checks
Markdown. bin/check --full adds bin/check-application: Ruby tests, lint,
and gem build. Application checks are not part of the two routine modes.
Built gems go in gems/. Publishing with rake push is an explicit release
action; it is never part of normal validation.
- Development workflow: setup, validation, runtime policy, and releases.
- Project Starter foundation: knowledge search, worktrees, hooks, and shared engineering policy.
- Documents and memory.
- GitHub Issues: bugs and planned work.
- Agent instructions.
- Repository checks.
License
Jeeves uses the MIT license. The adopted project foundation retains its separate license notice.
