Helps you keep track of your Ruby gems, JavaScript packages, Python packages, and Rust crates.
If you use mise, as you should:
mise use -g ruby
mise use -g gem:gemstar@latest
gemstarThis will first install Ruby and then gemstar through mise's gem backend.
Or if you're using Ruby:
gem install gemstar
gemstarYou can also add gemstar to your Gemfile:
gem "gemstar", group: :developmentThis starts the interactive web UI:
By default, the server listens on http://127.0.0.1:2112/. To customize settings, see the built-in help:
gemstar help serverRun this after you've updated your dependencies.
# in your project directory, after bundle update:
gemstar diffThis will generate an html diff report with changelog entries for each updated package:
You can also specify from and to hashes or tags to generate a diff report for a specific range of commits:
gemstar diff --from 8e3aa96b7027834cdbabc0d8cbd5f9455165e930 --to HEADTo use a time range instead of choosing the starting commit yourself:
gemstar diff --project ~/Code/my-app --since "3 weeks ago"To examine a specific Gemfile.lock, pass it like this:
gemstar diff --lockfile=~/MyProject/Gemfile.lockTo diff a project from anywhere, pass the project directory or a supported project file. In project mode, gemstar includes Ruby gems, JS packages from importmap.rb and package-lock.json, Python packages from uv.lock, and Rust crates from Cargo.lock when present:
gemstar diff --project ~/Code/my-appTo filter a project diff down to one ecosystem:
gemstar diff --project ~/Code/my-app --ecosystem js
gemstar diff --project ~/Code/my-app --ecosystem gems
gemstar diff --project ~/Code/my-app --ecosystem python
gemstar diff --project ~/Code/my-app --ecosystem cargoTo write markdown instead of html:
gemstar diff --format markdownBug reports and pull requests are welcome on GitHub at https://github.com/FDj/gemstar.
This gem is generated via newgem template by @palkan.
The gem is available as open source under the terms of the MIT License.

