Port Kill helps you find and free ports and caches blocking your dev work.
Port Kill helps you find and free ports and caches blocking your dev work.
Port Kill helps you find and free ports blocking your dev work, plus manage development caches and orchestrate services. It works on macOS, Linux, and Windows, locally or over SSH with a simple CLI and status bar.
Two Binaries, Full Feature Parity:
port-kill - GUI status bar app (macOS only) + full CLIport-kill-console - Pure CLI version (all platforms)Both binaries support all features including smart restart, service detection, and orchestration.
Join our Discord community for discussions, support, and updates:
# macOS/Linux
curl -fsSL portkill.com/install | bash
# Windows (PowerShell or CMD)
curl -fsSL portkill.com/install-windows -o install-release.bat && install-release.batWindows users: After installation, you MUST restart your terminal completely for PATH changes to take effect.
If you get 'port-kill' is not recognized error after installing:
powershell -Command "Invoke-WebRequest -UseBasicParsing -Uri 'https://raw.githubusercontent.com/treadiehq/port-kill/main/diagnose-installation.bat' -OutFile 'diagnose.bat'"; .\diagnose.bat"%USERPROFILE%\AppData\Local\port-kill\port-kill.exe" --listSee WINDOWS.md for detailed Windows-specific guidance.
…Port Kill now intelligently manages your development server lifecycle:
Automatically restarts processes using their original startup commands:
# Kill and restart a process (saves restart info automatically)
port-kill 3000 # Kill process on port 3000
port-kill --restart 3000 # Restart it with saved command
# View restart history
port-kill --show-restart-history # See all restartable ports
# Clear restart info
port-kill --clear-restart 3000 # Remove saved restart infoAutomatically discover and start services from your project:
# Discover available services
port-kill --detect
# Found services examples:
# npm:dev - npm run dev (Node.js)
# npm:start - npm run start (Node.js)
# docker:web - Docker Compose service: web
# python:app.py - Python app: app.py
# Start a discovered service
port-kill --start npm:dev
port-kill --start docker:webSupported project types:
Keep your services running automatically:
# Guard a port and auto-restart if process dies
port-kill --guard 3000 --guard-auto-restart
# Works with reservations
port-kill --guard-mode --guard-auto-restart \
--reserve-port 3000 \
--project-name "my-app" \
--process-name "npm"Manage multiple services together with a simple YAML configuration file.
# 1. Create a configuration file
port-kill --init-config
# 2. Edit .port-kill.yaml to define your services
# (see example below)
# 3. Start all services
port-kill --up
# 4. Check status
port-kill --status
# 5. Stop all services
port-kill --downCreate .port-kill.yaml in your project root:
version: "1"
# Global environment variables
env:
NODE_ENV: development
DEBUG: "true"
services:
# Frontend service
frontend:
command: npm run dev
port: 3000
dir: ./frontend
startup_delay: 2
env:
PORT: "3000"
# Backend API service
backend:
command: npm run start
port: 8000
dir: ./backend
depends_on:
- database
env:
PORT: "8000"
DATABASE_URL: postgres://localhost:5432/myapp
# Database service
database:
command: docker-compose up database
port: 5432
startup_delay: 5# Initialize configuration
port-kill --init-config
# Start all services (respects dependencies)
port-kill --up
# Stop all running services
port-kill --down
# Restart a specific service
port-kill --restart-service backend
# Check status of all services
port-kill --status
# Use custom config file
port-kill --config-file my-config.yaml --upService Fields:
command - Command to run the service (required)port - Port the service runs on (optional)dir - Working directory for the service (optional)env - Service-specific environment variables (optional)depends_on - List of services to start first (optional)startup_delay - Seconds to wait after starting (optional)healthcheck - Command to check service health (optional)Global Fields:
version - Config version (optional)env - Environment variables for all services (optional)services - Map of service definitions (required)Services start in dependency order:
services:
api:
command: npm start
depends_on:
- database
- redis
database:
command: docker-compose up database
redis:
command: redis-serverStart order: database → redis → api
……Port Kill now includes comprehensive cache management for development environments:
# List all detected caches
./target/release/port-kill-console cache --list
# List with JSON output
./target/release/port-kill-console cache --list --json
# Clean caches safely (with backup)
./target/release/port-kill-console cache --clean --safe-delete
# System diagnostics
./target/release/port-kill-console cache --doctor --json
# Restore last backup
./target/release/port-kill-console cache --restore-last# Rust caches (target/, ~/.cargo)
./target/release/port-kill-console cache --list --lang rust
# JavaScript/TypeScript caches (node_modules, .next, .vite, etc.)
./target/release/port-kill-console cache --list --lang js
# Python caches (__pycache__, .venv, .pytest_cache)
./target/release/port-kill-console cache --list --lang py
# Java caches (.gradle, build, ~/.m2)
./target/release/port-kill-console cache --list --lang java# Analyze NPX packages with per-package details
./target/release/port-kill-console cache --npx --list --json
# Clean stale NPX packages (older than 30 days)
./target/release/port-kill-console cache --npx --clean --stale-days 30
# Dry run to see what would be cleaned
./target/release/port-kill-console cache --npx --dry-run --stale-days 14# npm, pnpm, yarn caches
./target/release/port-kill-console cache --js-pm --list --json
# Clean JS package manager caches
./target/release/port-kill-console cache --js-pm --clean --safe-delete# Hugging Face cache
./target/release/port-kill-console cache --hf --list
# PyTorch cache
./target/release/port-kill-console cache --torch --list
# Vercel cache (requires VERCEL_TOKEN env var)
VERCEL_TOKEN=your_token ./target/release/port-kill-console cache --vercel --clean
# Cloudflare cache (requires CLOUDFLARE_TOKEN env var)
CLOUDFLARE_TOKEN=your_token ./target/release/port-kill-console cache --cloudflare --cleanAll cache operations are safe by default:
--restore-last to undo the last cleanup--dry-run to preview changes without executing--force to skip confirmations (use with caution)The dashboard provides real-time process monitoring, system resource tracking, history analytics, and security auditing.
Navigate to the dashboard directory:
cd dashboardInstall dependencies (first time only):
npm installStart the dashboard:
npm run devOpen in your browser:
http://localhost:3002The dashboard will automatically connect to port-kill and display:
Quick start script:
# From project root - starts dashboard in one command
./run-dashboard.shOr on Windows:
.\run-dashboard.batFor more details, see the dashboard README.
Check out the full Kill Suite for additional tools and features.
Add npx -y 'https://gitpkg.vercel.app/treadiehq/port-kill/mcp?main' to your MCP config.
Port Management:
list - List processes on portskill - Kill processes on ports reset - Reset common dev portsaudit - Security auditguardStatus - Port guard statusCache Management (NEW!):
cacheList - List all detected cachescacheClean - Clean caches with safe backupcacheRestore - Restore last cache backupcacheDoctor - System diagnosticsFor example for Cursor add to .cursor/mcp.json:
{
"mcpServers": {
"port-kill-mcp": {
"command": "npx",
"args": ["-y", "https://gitpkg.vercel.app/treadiehq/port-kill/mcp?main"]
}
}
}Notes:
./target/release/port-kill-console or port-kill-console if it is on the PATH. If yours lives elsewhere, set PORT_KILL_BIN=/absolute/path/to/port-kill-console. e.g.{
"mcpServers": {
"port-kill-mcp": {
"command": "npx",
"args": ["-y", "https://gitpkg.vercel.app/treadiehq/port-kill/mcp?main"],
"env": {
"PORT_KILL_BIN": "/absolute/path/to/port-kill-console"
}
}
}
}See mcp/README.md for more information on port-kill-mcp including how to install from source.
--resetPort Kill supports named presets so you can avoid long --ports lists and reuse common configurations.
Usage:
…Custom presets:
~/.port-kill/presets.json and override built-ins when names match--ports 3000,8000,8080 # specific ports
--ports '6000-9999' # port ranges (new!)
--ports '3000,6000-6002,8000' # mixed individual ports and ranges
--start-port 3000 --end-port 9000
--ignore-ports 5353,5000,7000
--ignore-processes Chrome,rapportd
--guard-mode --auto-resolve
--audit --json
--remote user@servergit clone <repository-url>
cd port-kill./install.shOr manually:
./build-macos.sh
./run.shgit clone <repository-url>
cd port-kill# Ubuntu/Debian
sudo apt-get install libatk1.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev libappindicator3-dev
# Fedora/RHEL
sudo dnf install atk-devel gdk-pixbuf2-devel gtk3-devel libappindicator-gtk3-devel
# Arch Linux
sudo pacman -S atk gdk-pixbuf2 gtk3 libappindicator-gtk3./iNo open issues yet, or sync has not completed.