Free and open source. macOS 15 or newer.

Keep Homebrew, Node and Ruby up to date from your menu bar.

DevHub finds what is outdated across your Mac, including every Node and Ruby version you have installed, and updates it in a click. Every command it runs is written to a history you can read.

Version 1.0.0 (3.0 MB). Apple Silicon and Intel. MIT license. Not notarized yet, so macOS asks you to approve it once. See how.

The DevHub window listing outdated Homebrew packages, with a sidebar for Homebrew, Node and Ruby versions
Works with
  • Homebrew
  • npm
  • RubyGems
  • nvm
  • fnm
  • Volta
  • asdf
  • RVM
  • rbenv
  • chruby
One window

Everything outdated, sorted by where it lives.

A sidebar filters by tool, by Node version and by Ruby version, so a global package that is old in one Node and current in another is never hidden. Switch between what needs an update and everything installed, open the details pane for the path, disk size and dependents, and update or uninstall from the same row.

The DevHub window with the Node and Ruby versions in the sidebar
The DevHub popover with counts for Homebrew, Node and RubyDevHub settings with the tools, update checks and notifications
Always at hand

The count is one glance away.

The popover groups updates by tool. Update one package, update everything, or open the full window. Show an icon, an icon with the count, or only the count, and decide how often DevHub checks and what it tells you.

Made for people who live in a terminal.

It does the boring part of keeping a development machine current, and shows its work.

Update one, some or all

Update a package, a selection or everything, with a confirmation you can turn off. Cancel at any point.

Watch it work

A progress strip shows the package running, how many are done and how long it has been going. The output log streams what the tool prints.

Node updates that fit your Node

npm installs a version your Node cannot run and only prints a warning. DevHub reads each version's engine range and installs the newest one your Node supports.

A history of everything

Every check, update and uninstall is saved with its command, exit code and output, in a plain text file you own. Filter it, export it, keep it as long as you like.

Notifications on your terms

Hear about every update, get a daily summary, or only major versions. Checks run on a schedule, when DevHub opens, and when the Mac wakes.

Keyboard first

A shortcut for every action, arrow keys through the lists, and VoiceOver labels on every row.

Nine languages

Pick your language in Settings. The layout mirrors for right-to-left languages.

Light and dark

Follows your system, or stays on the setting you choose.

Private by design

No account, no analytics, and no network requests of its own. It never uses sudo.

How it works

It runs the tools you already have.

No private index and no background service. DevHub runs your own brew, npm and gem, using the right version of each, and reads what they print.

  1. 1Each Node and Ruby version uses its own npm and gem.
  2. 2One Homebrew command at a time, because Homebrew locks its files.
  3. 3A failed command shows its real output and exit code, and Try again runs it once more.
What DevHub runs
# Homebrew
$ brew outdated --json=v2
$ brew upgrade <name>

# Node, once per installed version
$ npm outdated -g --json
$ npm install -g <name>@<version>

# Ruby, once per installed version
$ gem outdated
$ gem update <name> --no-document

Your machine, your data, your call.

Never sudo

DevHub never asks for your password. If a package needs elevated rights, the update fails and the History page shows the real error.

No network of its own

There is no account and no analytics. Only the package managers it runs talk to the internet.

History in a text file

It lives at ~/Library/Logs/DevHub. Open it, export it or clear it any time.

Speaks your language.

Nine languages, with more welcome. The translations have not had a native review yet, so corrections are appreciated.

  • English
  • Deutsch
  • Español
  • Français
  • Português (Brasil)
  • Русский
  • 日本語
  • 한국어
  • 简体中文
Install

Up and running in a minute.

  1. 1

    Download

    Get the latest DMG from the releases page. It is a universal build for Apple Silicon and Intel.

  2. 2

    Drag to Applications

    Open the DMG, drag DevHub into Applications and open it. A package icon appears in your menu bar.

  3. 3

    Approve it once

    DevHub is not notarized yet. Open System Settings, then Privacy and Security, and choose Open Anyway next to DevHub.

Prefer the terminal?
$ xattr -dr com.apple.quarantine /Applications/DevHub.app
Or build it from source
$ brew install xcodegen
$ git clone https://github.com/chiefpansancolt/devhub.git
$ cd devhub && make run

Questions

Is DevHub free?

Yes. It is open source under the MIT license, and you can read every line of it on GitHub.

Why does macOS block it the first time?

The app is signed ad hoc and is not notarized yet, because notarization needs an Apple Developer account. After you approve it once, it opens like any other app.

Does it use sudo or ask for my password?

No. It runs everything as you. If a package needs elevated rights, the update fails and the History page keeps the full output so you can fix the cause.

Which Node and Ruby versions does it see?

Those installed with nvm, fnm, Volta or asdf for Node, and RVM, rbenv, chruby or asdf for Ruby. The macOS system Ruby is left out because its gems need sudo. If yours live somewhere else, choose the folder in Settings.

Does it send anything anywhere?

No. DevHub has no network code. Your settings stay in the app's preferences and your history stays in a file on your Mac.

Which Macs does it run on?

macOS 15 Sequoia or newer, on Apple Silicon or Intel.