Vitals 1.8 adds a command-line system monitor for Mac, and it is the biggest update since launch. You can now ask Vitals about your Mac from Terminal, install it with Homebrew in one line, and try every feature free for 3 days before you buy.
If you missed the launch, Vitals is an Activity Monitor alternative for Mac. It groups every process under the app it belongs to, so you see about 60 apps instead of 1,000 processes. It keeps up to a year of history, knows which project each dev server belongs to, and shows what your coding agents are doing and what is left of your AI plans. I wrote about why I built it when it came out.
Why a command
I spend most of my day in Terminal, and so do the coding agents I work with. Whenever I wanted to know what was slowing my Mac down, I had two choices: leave Terminal and open a window, or read top, which lists processes one by one and forgets everything a second later.
Vitals already had the answers. It groups helpers under their apps, keeps the history and knows the projects. The vitals command asks it, so the answer in Terminal is the same one the window would give.
Ask your Mac
vitals status is the whole Mac at a glance:
~ vitals status
● CPU ███░░░░░░░ 27% · Apple M4 Pro, 14 cores
● Memory ████████░░ 52.6 GB of 64 GB · pressure normal
● GPU ██░░░░░░░░ 18%
● Disk ██████░░░░ 412 GB free of 1 TB
● Network down 1.2 MB/s · up 84 KB/s
● Battery ████████░░ 82% · 4h 10m left
● Heat CPU 52° · fans 1,800 rpm
vitals top lists the apps using the most, with every helper counted under its app. Chrome’s 96 processes are one line:
~ vitals top memory 4
APP MEMORY CPU PROCS
Google Chrome 21.2 GB 48% 96
VS Code 8.2 GB 14% 31
Terminal 3.9 GB 3% 12
Figma 2.8 GB 6% 8
62 apps running · by memory
Add a time span, and it reads from the history instead of the moment. vitals top cpu day shows what used the most CPU today, and week and month work too.
Ports and dev servers
This is the one I use most. vitals ports lists what is listening, which project it belongs to, and whether other machines can reach it:
~ vitals ports
PORT PROCESS PROJECT OPEN TO
3000 node storefront-web network
4322 node docs-site this Mac
5432 postgres – this Mac
8080 python api this Mac
4 ports listening · 1 open to the network
No more lsof -i :3000 and guessing which terminal tab started it.
Coding agents and AI plans
vitals agents lists every coding agent running on your Mac, the project it is in, and whether it is working or waiting for you:
~ vitals agents
AGENT PROJECT STATUS MEMORY
Claude Code storefront-web working 412 MB
Codex api waiting for you 4m 287 MB
Gemini CLI docs-site working 198 MB
3 sessions · 6 processes started
vitals limits shows what is left of each AI plan, when each limit resets, and whether you will run out first:
~ vitals limits
TOOL LIMIT LEFT RESETS PACE
Claude 5-hour session 59% in 2h 10m on pace
Claude This week 72% Mon 9:00 on pace
Codex This week 38% Thu 14:00 runs out Wed
Cursor This month 81% Nov 3 on pace
Stopping things safely
From Terminal, it is easy to kill the wrong thing. So Vitals gives a verdict first.
vitals can-quit says whether something is safe to quit, needs your say first, or is better left alone, with the reason and what would stop with it. vitals quit and vitals stop show that verdict and wait for your yes.
~ vitals stop --idle
✓ Safe to quit node (48211) of docs-site · port 4322
Idle for 3 days. Stopping it frees 458 MB.
Continue? [y/N] y
Stopped node (48211). Port 4322 is free.
vitals stop --idle finds the dev servers nobody has used in a while and stops them after you say yes. Agents tend to start a fresh server every session, so by the evening there are often a few of these.
Anything that needs a person to decide is refused when there’s no one at a terminal to ask, even with --yes. A script or an AI agent can’t wave it through.
For scripts and agents
Add --json to any command and it answers in JSON, the same data an AI assistant gets from Vitals. --csv gives the main list for a spreadsheet, and --watch refreshes the answer every two seconds.
vitals top --json | jq '.apps[0].name'
vitals ports --csv > ports.csv
vitals status --watch
When the output goes to a pipe or a file, nothing is cut short, so a script, or an agent with a shell, reads every word.
The command measures nothing itself. Each answer is one question to the Vitals app that is already running, so asking costs your Mac almost nothing.
Install with Homebrew
Many of you asked for this one:
brew install --cask foredotstudio/tap/vitals
It installs the app and the command together, with a manual page and tab completion for zsh, bash and fish. Vitals keeps updating itself, so brew upgrade leaves it alone.
You don’t need Homebrew, though. The command is inside the app. Turn on Let AI Assistants Ask Vitals in Settings → Integrations, and Vitals puts vitals on your PATH. vitals help lists every command, and man vitals explains each one.
Try it free for 3 days
Until now, you had to buy Vitals before you could use it. That is a lot to ask for an app you haven’t seen on your own Mac.
From 1.8, anyone can download Vitals and use every feature for 3 days, the command included. No account, no credit card. The dropdown shows how much time is left, with a Buy button. When the trial ends, Vitals asks for a key, and everything it recorded during the trial is still there once you enter one.
Two ways to pay
There are now two ways to pay for Vitals:
- $9 for a year of updates. It isn’t a subscription. You pay once, and the app keeps working after the year. You only pay again if you want versions released after it.
- $15 for life at the launch price. The regular price is $39.
Both come with a 14-day refund, and the trial is there if you’re not sure yet.
Smaller things
- AI plans for your assistant. Claude, Codex and Cursor can ask Vitals what is left of each AI plan, when each limit resets, and whether it lasts at the rate you are going.
- Ports say who can reach them.
vitals ports, and assistants asking Vitals, say whether each port is open to this Mac only or to the network. - Activating is quicker. Enter License Key opens straight on the key field.
- Fewer keychain questions. In 1.8.1, if macOS asks whether Vitals may read another app’s sign-in and you choose Deny, Vitals stops asking.
How to get it
All of this is in Vitals 1.8 and later. There is a page for this release with a live terminal demo and answers to common questions, and the command’s page lists every command.
The update is free for everyone who owns Vitals. Vitals offers it the next time it checks for updates. New to Vitals? Try it free for 3 days.
What comes next is on the roadmap: disk tools: a storage map and safe cleanup. If something is missing from it, email me.