Skip to content

Lightweight macOS menu bar app to monitor and kill processes on development ports

Notifications You must be signed in to change notification settings

gupsammy/PortKiller

Repository files navigation

PortKiller

PortKiller

Stop hunting. Start killing.
That rogue process hogging port 3000? Gone in one click.

Download   Platform License

Every developer knows the drill: lsof -i :3000, squint at the output, find the PID, kill -9 1234, repeat. PortKiller lives in your menu bar and does all that for you. One click. Done.


Features

  • One-Click Process Termination — Kill any process hogging your dev ports instantly from the menu bar
  • Docker Integration — See which containers are using ports and stop them directly
  • Homebrew Services — Detect and stop brew services (PostgreSQL, Redis, MySQL) without touching the terminal
  • Desktop Notifications — Get notified when new processes start listening on your ports
  • Project Detection — Shows which git project each process belongs to
  • Smart Graceful Shutdown — SIGTERM first, SIGKILL only if needed
  • Native Menu Bar App — Lightweight, adapts to light/dark mode, zero resource usage when idle
  • Pre-configured for Dev Ports — Monitors Node.js, React, Vite, Django, Flask, PostgreSQL, Redis, MongoDB, and more out of the box
  • Fully Configurable — Add or remove port ranges via simple JSON config
  • Auto-Update Notifications — Get notified when a new version is available

Screenshots

PortKiller Menu UI


Menu bar interface showing active processes, Docker containers, and Homebrew services

Desktop Notifications


Desktop notifications when new processes start listening on your ports

Installation

  1. Download PortKiller.dmg
  2. Open the DMG and drag PortKiller to Applications
  3. First launch (macOS security): Run this in Terminal, then open the app:
    xattr -cr /Applications/PortKiller.app
  4. After that, launch normally from Applications or Spotlight

The app appears in your menu bar — click to see active port listeners.

Build from Source

git clone https://github.com/gupsammy/PortKiller.git
cd PortKiller
cargo build --release
./target/release/portkiller

Requires Rust 1.85+ (2024 edition).

Configuration

PortKiller creates ~/.portkiller.json on first run. Edit via the menu bar (Edit Configuration) or directly:

{
  "monitoring": {
    "poll_interval_secs": 2,
    "port_ranges": [[3000, 3010], [5432, 5432], [8080, 8090]],
    "show_project_names": true
  },
  "integrations": {
    "brew_enabled": true,
    "docker_enabled": true
  },
  "notifications": {
    "enabled": true
  },
  "system": {
    "launch_at_login": false
  },
  "updates": {
    "check_enabled": true,
    "check_interval_hours": 24
  }
}

Changes apply automatically via hot-reload.

Uninstall

Quit PortKiller, move PortKiller.app from Applications to Trash, optionally rm ~/.portkiller.json

Platform Support

macOS 10.15 (Catalina) and later — Intel and Apple Silicon

Development

# Debug build with logging
RUST_LOG=debug cargo run

# Code quality
cargo fmt && cargo clippy

# Install pre-commit hook (auto-formats on commit)
./scripts/install-hooks.sh

Feature Requests & Bug Reports

Have an idea or found a bug? Open an issue — contributions welcome!

License

MIT License — do whatever you want with it.

Acknowledgments

Built with tray-icon, winit, and nix.


Made for developers who have better things to do than hunt PIDs

About

Lightweight macOS menu bar app to monitor and kill processes on development ports

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •