Everything Homebrew installed, and what you never use.

Vitals asks Homebrew what it has installed on your Mac and shows every package with its size, the update waiting and when one of its programs last ran. The ones never seen running are listed with the space they take, the services have Start and Stop, and nothing runs until you confirm the brew command.

Memory by Type
82%
in use
App 22.15 GB
Wired 5.67 GB
Compressed 24.54 GB
Cached 10.32 GB
Free 1.32 GB
Memory by App
59.25 GB
all apps
Google Chrome 21.23 GB
VS Code 8.17 GB
Terminal 3.86 GB
Safari 2.69 GB
Other 23.30 GB
Power by App
1.7 W
all apps
GitHub Desktop 427 mW
Google Chrome 367 mW
Zoom 145 mW
Terminal 86 mW
Other 650 mW
Now
27 %
Average today36%
Load3.41
User
19%
Your apps
System
8%
macOS
Cores
12
8 P4 E
Top App
Google Chrome
18.2%
AppCPU
Google Chrome
96 processes
–
Terminal
49 processes
–
Safari
16 processes
–
Docker
9 processes
–
Visual Studio Code
63 processes
–
Slack
13 processes
–
Figma
14 processes
–
Zoom
8 processes
–
In use of 64 GB
52.63 GB
Normal
Free11.37 GB
Swap0 MB
App
23.43 GB
Wired
5.37 GB
Compressed
23.82 GB
Top App
Google Chrome
20.59 GB
AppMemory
Google Chrome
96 processes
–
Visual Studio Code
63 processes
–
Terminal
49 processes
–
Safari
16 processes
–
Docker
9 processes
–
Slack
13 processes
–
Figma
14 processes
–
Zoom
8 processes
–
Free of 994.66 GB
479.72 GB
Used514.94 GB
Written today38.9 GB
Reading
737 kB/s
Writing
195 kB/s
Volumes
2
Macintosh HDBackup
Top App
Photos
121 kB/s
AppWriting
Photos
6 processes
–
Google Chrome
96 processes
–
Docker
9 processes
–
Visual Studio Code
63 processes
–
Xcode
22 processes
–
Mail
4 processes
–
Slack
13 processes
–
Music
5 processes
–
Downloading
12 kB/s
Today4.4 GB
Last 30 days212 GB
Uploading
419 kB/s
Last 7 Days
48.3 GB
Interface
Wi-Fi
en0
Top App
Safari
8 kB/s
AppDownloading
Safari
16 processes
–
Google Chrome
96 processes
–
Slack
13 processes
–
Zoom
8 processes
–
Music
5 processes
–
Mail
4 processes
–
Docker
9 processes
–
Notion
6 processes
–
Apple M2 Max
60 %
Average32%
Peak95%
Memory
1.69 GB
Average
32%
Peak
95%
Top App
Figma
35%
AppGPU
Figma
14 processes
–
Google Chrome
96 processes
–
Safari
16 processes
–
Zoom
8 processes
–
Visual Studio Code
63 processes
–
Xcode
22 processes
–
Slack
13 processes
–
Notion
6 processes
–
16-core Neural Engine
2 %
Average3%
Peak16%
Memory Traffic
79.9 MB/s
Average
3%
Peak
16%
Top App
Photos
3 connections
AppNeural Engine
Photos
6 processes
–
Xcode
22 processes
–
Safari
16 processes
–
Zoom
8 processes
–
Mail
4 processes
–
Notion
6 processes
–
Google Chrome
96 processes
–
On battery
64 %
Remaining2h 46m
Cycles412
Power Draw
12.6 W
Health
76%
Temperature
31°
Top App
Google Chrome
4.3 W
AppPower
Google Chrome
96 processes
–
Zoom
8 processes
–
Figma
14 processes
–
Slack
13 processes
–
Safari
16 processes
–
Visual Studio Code
63 processes
–
Docker
9 processes
–
Music
5 processes
–
CPU
54°
GPU
47°
Hottest
58°
Fan
1,200rpm
Curve
Fans
Fan
Follows the CPU
1,200rpm
FollowsCPU
Full speed6.4k1.2k40°60°80°100°54°
Rules
Quiet on BatteryThe fans follow Quiet while the Mac runs on battery.
Cool While Apps Work HardWhen one of these apps keeps the Mac busy, the fans follow Cool until it has been quiet for a minute. Add App
XcodeNot running
Set every two seconds while Vitals is open Full speed above 95 °C Given back when Vitals quits
Working the Hardest
XcodeCPU 51.4%
8 Sensors
CPU Performance Core54°
CPU Efficiency Core49°
GPU47°
SSD41°
Wi-Fi39°
Battery33°
Airflow Left31°
Airflow Right32°
Last 24 Hours CPU Hottest
80°40°
6 PM12 AM6 AM12 PM
Fastest Fan
6k2k
6 PM12 AM6 AM12 PM
Output
MacBook Pro Speakers
64%
AppStatusVolumeLevel
Music Playing 100%
Zoom Playing 80%
Google Chrome Playing 35%
Slack Silent Muted
Safari Silent 100%
Figma Silent 100%
Notion Silent 100%
Mail Silent 100%
3 connected
Lowest battery: AirPods Pro, left, 42%. Beats Fit Pro is paired but away.
42% Bluetooth Settings
DeviceKindBatteryLevel
AirPods Pro Headphones
Left 42%
Right 58%
Case 80%
Magic Trackpad Trackpad 67%
Magic Keyboard Keyboard 91%
25installed
Installed
3.23GB
153 packages, with what they need
Not Seen Running
861.6MB
18 packages
Updates
3
ready to install
Can Be Freed
148.8MB
old versions and downloads
Old versions and downloads take 148.8 MB
Homebrew keeps the versions an upgrade replaced and the files it downloaded.
Clean Up…
postgresql@17
Object-relational database system
17.6 Running now 84.6 MB
gh
GitHub command-line tool
2.81.0 Today 40.1 MB
ffmpeg
Play, record, convert, and stream select audio and video codecs
8.0 This week 54.5 MB
cmake
Cross-platform make
4.1.2 Not seen running 81.7 MB
rclone
Rsync for cloud storage
1.71.2 Not seen running 92.5 MB
redis
Persistent key-value database, with built-in net interface
8.2.1 Running now 26.5 MB
go
Open source programming language
1.25.3 This month 283.6 MB
imagemagick
Tools and libraries to manipulate images in select formats
7.1.2 Not seen running 30.2 MB
0%
Claude
This week
On pace · 10% to spare
0%
Codex
5-hour session
Resets in 3h 12m
0%
GitHub Copilot
Premium requests
Runs out in 4d at this rate
0%
Cursor
This billing cycle
Resets in 12d 5h
Checkout flow tests Working Waiting for you
Claude Code · storefront · running 48 min
410 MB
Started · 4 Quit Session…
vitest command · 61% CPU 520 MB
node server · port 3,001 240 MB
Google Chrome for Testing browser 310 MB
mcp-server-fetch tool server 64 MB
Codex idle 48 min
docs · in Terminal · Nothing started
290 MB

The numbers are simulated: a web page cannot read your Mac, and should not.

01Packages

Every package, with its size and when it last ran.

The formulae and casks you asked for by name, each with what it is, its version, its size on disk and when Vitals last saw one of its programs run. Dependencies are a switch away, each with what needs it.

  • Formulae and casks
  • Size on disk, every version counted
  • Running now, Today, This week, This month
  • Dependencies, with what needs each
25 packages3.4 GB
postgresql@17
Object-relational database system
Running now84.6 MB
gh
GitHub command-line tool
Today40.1 MB
ffmpeg
Play, record, convert, and stream audio and video
This week54.5 MB
go
Open source programming language
This month283.6 MB
When it last ran Its size, every version counted
02Unused

The packages you installed and never ran.

Not Seen Running lists the packages Vitals has never seen run, with the space they take together. Uninstall is there for a package nothing else needs, and it runs brew uninstall after you confirm.

  • Not seen running, with the space they take
  • Uninstall, for what nothing else needs
  • Needed by, for the rest
  • Runs brew uninstall, and says so
18not seen running1.2 GB
cmake81.7 MBUninstall…
rclone92.5 MBUninstall…
imagemagick30.2 MBUninstall…
libpngNeeded by imagemagick1.3 MB
Installed, never seen running Only what nothing else needs
03Services

brew services, with Start, Stop and Restart.

Every Homebrew service with whether it is running, whether it starts when you log in and whether it runs as root. Start, Stop and Restart run brew services, and a service's ports are in the Ports section.

  • Running, stopped, or stopped with an error
  • Starts when you log in, or not
  • Started with sudo, runs as root
  • Its ports in the Ports section
postgresql@17:5432
Starts when you log in
RestartStop
redis:6379
Starts when you log in
RestartStop
nginx:80
Started with sudo, runs as root
RestartStop
mysql
Doesn’t start when you log in
Start
Running, and whether it starts at login As brew services does it
04Updates

Updates waiting, and what a cleanup frees.

A package with a newer version says which, with Upgrade on each and Upgrade All for the lot. Can Be Freed is what Homebrew's old versions and downloads take, and Clean Up runs brew cleanup.

  • The version installed, and the new one
  • Upgrade one, or Upgrade All
  • Old versions and downloads, with their size
  • A running service restarts on the new version
3 updatesUpgrade All…
node22.9.022.11.0
gh2.58.02.60.1
ffmpeg7.0.27.1
Can Be Freed
old versions and downloads
2.1 GBClean Up…
The new version, beside the old What brew cleanup would free
Why it matters

Homebrew, before and after

Homebrew is how most developers install their tools, and it only ever grows. A formula tried once two years ago is still there with its dependencies, a database installed for one project still starts at every login, and every upgrade leaves the old version behind.

brew list names them. It does not say which ones you use, how much space each takes or which service is running right now. Each of those is a different command.

Homebrew, a section of Vitals' Developer tab, puts them in one place: every package with its size and when it last ran, the ones never seen running, the updates waiting, the services with Start and Stop, and what a cleanup would free. Every change is a brew command, run after you confirm it.

How to use it

Where it is in Vitals

The tab, the menu bar item and the setting, in the order you would reach for them.

  1. 01

    Open the Developer tab and choose Homebrew

    Vitals asks brew what is installed, which takes a second or two, and shows the packages you asked for by name with their sizes.

  2. 02

    See what you never use

    Not Seen Running lists the packages Vitals has never seen run, with the space they take. Uninstall one after a confirmation.

  3. 03

    Check the services

    Each service says whether it is running and whether it starts when you log in. Stop one you do not need, and it stays stopped until you start it again.

  4. 04

    Upgrade and clean up

    Upgrade one package or all of them, then run a cleanup to remove the old versions and downloads Homebrew kept.

Compared

Homebrew: Activity Monitor and Vitals

The whole comparison is row by row. These are the rows about homebrew.

Activity Monitor Vitals
Installed packages
Activity MonitorNot shown; brew list in Terminal
VitalsListed, with what each is
Size
Activity MonitorNot shown
VitalsPer package, every version counted
Last used
Activity MonitorNot shown
VitalsWhen Vitals last saw it run
Services
Activity MonitorProcesses only
VitalsRunning or not, with Start, Stop and Restart
Cleanup
Activity MonitorNot shown; brew cleanup -n in Terminal
VitalsWhat it frees, and a button to run it

The words behind it

What the numbers mean, from the Activity Monitor glossary.

Questions

The ones people ask about homebrew before they buy.

How does Vitals know when a package last ran?

From its own usage history. When a program that a package installed is running, Vitals notes it, so each package says Running now, Today, This week, This month, Over a month ago or Not seen running. A command that finishes within a second is seldom caught.

Does Vitals change anything by itself?

No. Upgrade, Uninstall, Clean Up and the service buttons each run a brew command, after a confirmation that says which one.

Does it show casks too?

Yes. Formulae and casks are both listed.

What about dependencies?

The list starts with what you asked for by name. Turn on Include dependencies to see the libraries other packages pulled in, each with what needs it.

Can it uninstall a package that others need?

No. Uninstall is offered for a package nothing else needs. The rest say what needs them.

Does it manage brew services?

Yes. Each service shows whether it is running, whether it starts when you log in and whether it was started with sudo, with Start, Stop and Restart.

How much does a cleanup free?

Vitals asks Homebrew, which keeps the versions an upgrade replaced and the files it downloaded. The figure is under Can Be Freed, and Clean Up runs brew cleanup.

Can my assistant ask what is installed?

Yes. Over MCP an assistant can ask what is installed, what has an update and what has not been seen running, and vitals homebrew answers the same in the terminal.

Read on

Guides that use this, and how Vitals compares with the apps people buy for it.

More of Vitals

All features

Lifetime for $29 while the launch price lasts

Then $49, or $15 for a year of updates. One payment, 14-day refund.

Get Vitals for $29