# Vitals 1.8: a command-line system monitor for Mac that groups processes by app

By Atta Ur Rehman Shah (https://attacomsian.com/about). Published Oct 22, 2026. Topics: Product Update.
Canonical URL: https://attacomsian.com/blog/vitals-command-line-system-monitor

> Vitals 1.8 adds a command for Terminal: the apps using your Mac, ports by project, coding agents and AI plan limits, as a table or JSON. Like htop, but by app. Installs with Homebrew.

**[Vitals](https://vitalsmac.com)** 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](https://attacomsian.com/blog/vitals) 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](https://vitalsmac.com/download) 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](https://vitalsmac.com/changelog/1.8) with a live terminal demo and answers to common questions, and the [command's page](https://vitalsmac.com/features/cli) 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](https://vitalsmac.com/download).

What comes next is on the [roadmap](https://vitalsmac.com/roadmap): disk tools: a storage map and safe cleanup. If something is missing from it, [email me](mailto:hi@vitalsmac.com).
