# Vitals 1.11: ports, open files and Homebrew for Mac developers

By Atta Ur Rehman Shah (https://attacomsian.com/about). Published Nov 12, 2026. Topics: Product Update.
Canonical URL: https://attacomsian.com/blog/vitals-for-developers

> **Quick answer:** Vitals 1.11 turns the Projects tab into a Developer tab with five sections: Projects, Ports, Open Files, Containers and Homebrew. Ports lists every port in use with what holds it and whether other devices can reach it. Open Files shows which apps keep a disk from ejecting and can quit them and eject it. Homebrew lists every package with its size and when it last ran, with updates, cleanup and services. The same answers are in the vitals command and for Claude, Codex and Cursor.

**[Vitals](https://vitalsmac.com)** 1.11 is for developers. The Projects tab is now a Developer tab, with five sections along the top: Projects, Ports, Open Files, Containers and Homebrew. It came out yesterday.

If you haven't used it, 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. I wrote about [why I built it](https://attacomsian.com/blog/vitals) when it came out.

## Why a Developer tab

A day of work leaves a lot running. Dev servers from three projects, a database Homebrew started at login, the tool servers a coding agent brought up and never closed. Each holds a port and some memory, and most of them have names like `node` and `python`.

Vitals already showed projects and containers. 1.11 puts everything a developer runs in one place, and answers the questions you'd otherwise ask Terminal: what is on this port, why won't this disk eject, and what have I installed and never used.

Nothing is stopped, quit or uninstalled until you say so.

## Every dev server, under the project it belongs to

![The Developer tab on Projects: four projects running, their memory, CPU, processes and open ports, a notice that the docs dev server is idle and holding 260 MB, and each project with its ports, the app that started it and its folder](https://attacomsian.com/assets/img/blog/vitals-for-developers/projects.webp)

Projects lists every process under the project it was started in, with its ports, its CPU and its memory. Each project also names the app that started it, such as Terminal or Codex. That turned out to matter: a team trying Vitals found that a project they had closed in the Codex app was still running, and its processes were Codex's.

Open a project to see each process under its parent, so a dev server's chain of `node` under `node` folds into one line. A dev server that has sat idle for days is pointed out, with **Stop It…** and what stopping it frees.

## See which app is using a port on your Mac

![The Ports section: 32 ports in use, seven held by your projects, four open to the network, one Homebrew service and one idle dev server, then each port with its program, its project and This Mac or Network](https://attacomsian.com/assets/img/blog/vitals-for-developers/ports.webp)

**Ports** lists every port something on the Mac is listening on, grouped by your projects, idle dev servers, Homebrew services, and apps and macOS. Each row names what holds the port, where it runs from and how long it has been running.

Each one also says who can reach it. **This Mac** means only programs on this Mac can connect. **Network** means other devices on your network can, which is worth knowing about a dev server you started on a café's Wi‑Fi.

**Open in Browser** opens the port at localhost, and **Quit** stops what holds it, after asking. A range held by one program, such as 24015 to 24034, is one row instead of twenty. The [dev servers and ports page](https://vitalsmac.com/features/dev-servers-and-ports) walks through each part.

## Find what is keeping a disk from ejecting

macOS tells you a disk is in use. It doesn't tell you by what. (If you'd rather do it in Terminal, I wrote up [what to do when a Mac can't eject a disk](https://vitalsmac.com/mac-cant-eject-disk), with and without Vitals.)

![Open Files with three disks: Macintosh HD, T7 marked In Use and Photos marked Ready to Eject, and under them the three apps holding T7, Xcode, Music and Terminal, with the files each has open and which are open for writing](https://attacomsian.com/assets/img/blog/vitals-for-developers/files.webp)

**Open Files** shows every disk as a card: how full it is, how many files are open on it, and **In Use** or **Ready to Eject**. Under it are the apps holding it, with the files each one has open and which are open for writing.

Click **Eject** on a disk that's in use and Vitals names the apps it would quit and asks. Say yes, and it quits them the way ⌘Q does, ejects the disk and tells you it's safe to unplug. An app with unsaved work can still ask you to save.

To find one file, press ⌘F and type part of its name. Whatever has it open is listed, on any disk, which also answers the Trash saying an item is in use. There's more on that in [how to find which app is using a file on Mac](https://vitalsmac.com/which-app-is-using-a-file-mac).

## Find the Homebrew packages you never use

![The Homebrew section: 13 packages installed taking 1.07 GB, three never seen running, two updates, 2.84 GB that can be freed with Clean Up, and each package with its version, when it last ran and its size](https://attacomsian.com/assets/img/blog/vitals-for-developers/homebrew.webp)

If you're new to Homebrew, start with [how to install and use it](https://attacomsian.com/blog/install-homebrew-macos). In Vitals, **Homebrew** lists the packages you installed by name, each with its version, its size on disk and when Vitals last saw one of its programs run. **Not Seen Running** gathers the ones you installed and never used, with the space they take together.

- **Updates** shows the installed version beside the new one, 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…** removes them.
- **Include dependencies** adds the packages others need, each with what needs it.

![Homebrew's Services list: postgresql@16 and redis running and starting at login, sing-box running as root, and cloudflared not running](https://attacomsian.com/assets/img/blog/vitals-for-developers/services.webp)

**Services** lists every Homebrew service with whether it's running, whether it starts when you log in and whether it runs as root, with **Start**, **Stop** and **Restart**.

Vitals only reads what `brew` reports. It runs a brew command when you click one, and each asks first.

## From the menu bar

![The dropdown on the Developer tab's Ports: 32 ports in use, four open to your network, and each program with its project and its ports](https://attacomsian.com/assets/img/blog/vitals-for-developers/dropdown.webp)

The dropdown has a Developer tab too, with Projects, Ports and Containers. Ports other devices can reach come first, an idle dev server carries a moon, and a click on a row opens it in the window.

## Stuck commands and idle terminals

A command a coding agent starts sometimes hangs, and the agent waits on it without saying so. When one has used no CPU and no disk for ten minutes, its session is marked **stuck** in the [Agents tab](https://attacomsian.com/blog/vitals-agents-ai-usage-limits), with **Quit** beside the command. A dev server or a tool server the agent started is never counted as stuck.

Terminal windows left open with nothing running, and nothing typed for an hour, are listed under Projects as idle terminals, with **End** on each.

## Also in 1.11

- **Memory Report.** An app's export menu writes a folder to Downloads for the app's developer: its memory now and at its highest, by the hour and the day, each of its processes, a chart, and the figures as CSV. Vitals sends nothing; the folder is yours to attach to a bug report.
- **Export on every tab.** Save as Image or Copy Image, from the toolbar of any tab.
- **Settings → Readings.** Switches for Read Temperatures and Fans, Read Containers and Watch for Idle Dev Servers, for a Mac where another app runs the fans or one that never uses Docker.
- **Less memory after long use.** Memory left behind each time you changed tabs is now freed.

## In Terminal and for your AI assistant

The [`vitals` command](https://attacomsian.com/blog/vitals-command-line-system-monitor) has the new sections too, as a table or as JSON with `--json`:

```bash
vitals ports
vitals files
vitals homebrew --not-seen
vitals homebrew --updates
```

Claude, Codex and Cursor can ask about ports, open files and Homebrew through Vitals' [MCP server](https://attacomsian.com/blog/vitals-mcp-server), with three new tools, each with its own switch in Settings → Integrations. So you can ask "what is on port 3000, and can other devices reach it?" or "what is keeping my external disk from ejecting?". An assistant that checks the ports first can use the dev server that's already running instead of starting another one.

## Which Macs does it work on?

Any Mac on Apple silicon or Intel running macOS 15 Sequoia or later. In Open Files, files held by macOS itself, such as Spotlight's index, need Full System Metrics turned on in Settings → Permissions.

## How to get it

The update is free for everyone who owns Vitals. In Vitals, choose Check for Updates. New to Vitals? [Get it for Mac](https://vitalsmac.com/#pricing), or try it free for 3 days first. There's a [page for the release](https://vitalsmac.com/changelog/1.11) with a step-by-step for each part.
