A fresh mix of everything
on your ports

The macOS menu bar app that maps your ports to projects, sniffs out conflicts, and keeps your dev environment tidy.

v0.3.0 — Now with dark mode & AI tool tracking

Get started

macOS 14+ required

Download for Mac View on GitHub
or

Homebrew

terminal
$ brew tap jskoiz/nodewatcher $ brew install --cask nodewatcher

Build from source

terminal
$ git clone https://github.com/jskoiz/node-watcher.git $ cd node-watcher && ./Scripts/package_app.sh

Six ingredients for a cleaner dev setup

Everything you need to understand your local dev environment at a glance.

Project-aware

Maps processes to project roots. See "api on :3000" instead of cryptic PIDs.

Conflict detection

Instantly know when your port is blocked by Docker, SSH, or another process.

AI tool tracking

Claude Code and Codex worktree counts, disk usage, and stale cleanup alerts.

Dark mode

Follows your system appearance automatically. Native on light and dark desktops.

Global hotkey

Toggle from anywhere with Ctrl+Shift+P. No need to hunt for the icon.

CLI included

Script it with nodetracker snapshot --json for CI or custom tooling.

The latest from the garden

What's new in recent releases.

0.2.9
Mar 27

Dark Mode & Polish

  • newPopover follows system appearance automatically
  • improveConsistent text sizing across all rows
  • improveUnified chevron size and AI tool icon alignment
0.2.8
Mar 26

Dot Matrix & Brand Icons

  • newDot matrix menu bar mode with color-coded memory gauge
  • newClaude Code and Codex brand logos in AI tools section
  • improveFully synthetic sample data for clean screenshots
0.2.7
Mar 25

AI Tools Section

  • newWorktree tracking for Claude Code and Codex
  • newDisk usage per worktree, sizes >1 GB highlighted red
  • fixPopover dismiss animation snap
  • fixIdle state view when no Node processes running
0.2.6
Mar 24

Visual Polish

  • improveLighter popover with improved material vibrancy
  • newExpandable process groups with Kill all + Copy PIDs
  • fixControlCenter filtered from port conflicts