A lightweight macOS menu bar utility for developers to monitor and manage TCP listening processes. See which dev servers are running, their resource usage, and terminate them with one click.
- Process Discovery - Scans all TCP listening processes on your machine
- Framework Detection - Identifies Vite, Next.js, FastAPI, Django, Docker, PostgreSQL, Redis, and more
- Project Grouping - Groups processes by working directory
- Resource Monitoring - Shows CPU and memory usage with color-coded indicators
- One-Click Kill - Terminate individual processes or kill all at once
- Auto-Refresh - Configurable refresh interval (2-60 seconds)
- Customizable - Choose your header emoji, set resource thresholds
Install via curl:
curl -fsSL https://raw.githubusercontent.com/EndlessHoper/portwatch/main/scripts/install.sh | bashApple Silicon (arm64) only. Or download the latest release from GitHub Releases, or build from source:
git clone https://github.com/EndlessHoper/portwatch.git
cd portwatch
swift build -c release
open .build/release/PortWatchPortWatch lives in your menu bar. Click the icon to see all listening processes grouped by project directory.
Color indicators:
- 🟢 Green - Low resource usage
- 🟡 Yellow - Medium usage (>10% CPU or >100MB RAM by default)
- 🔴 Red - High usage (>50% CPU or >500MB RAM by default)
Actions:
- Click Kill to terminate a specific process
- Click Kill All to terminate all visible processes
- Click ⚙️ to open preferences
PortWatch shows all TCP listening processes. It also auto-detects common frameworks and labels them:
| Pattern | Label |
|---|---|
vite |
Vite |
next |
Next.js |
astro |
Astro |
webpack |
Webpack |
uvicorn, fastapi |
FastAPI |
flask |
Flask |
django |
Django |
rails |
Ruby on Rails |
llama-server |
llama.cpp |
docker-proxy |
Docker |
postgres |
PostgreSQL |
redis-server |
Redis |
mongod |
MongoDB |
Unrecognized processes still appear - they just won't have a framework label.
- macOS 14.0+ (Sonoma)
- Apple Silicon (arm64)
rm -rf ~/Applications/PortWatch.appIf macOS says the app is damaged after downloading the zip, remove the quarantine flag and try again:
xattr -cr "/path/to/PortWatch.app"MIT