A powerful CLI tool for managing port processes on your system. Quickly find and terminate processes using specific ports with an intuitive interface.
- ๐ Quick Start
- โจ Key Features
- ๐ฆ Installation
- ๐ Usage
- ๐๏ธ Command Options
- ๐ Examples
- ๐จ Output Format
- ๐ Requirements
- ๐จ Building from Source
- ๐ค Contributing
- ๐ Security
- ๐ Project Status
- ๐ Performance & Compatibility
- ๐บ๏ธ Roadmap
- ๐ License
# Install via Homebrew (macOS/Linux)
brew tap polidog/kilar && brew install kilar
# Install via Cargo
cargo install kilar
# Quick usage
kilar check 3000 # Check if port 3000 is in use
kilar kill 3000 # Kill process on port 3000
kilar list # List all ports in use- Lightning-fast port checking - Instantly see if a port is in use and which process owns it
- Protocol support - Works with both TCP and UDP protocols
- Detailed process information - View PID, process name, and command line
- Graceful termination - Kill processes with built-in safety confirmations
- Force kill option - Override confirmations when needed
- Interactive selection - Choose multiple processes to terminate with an intuitive UI
- Port range filtering - View specific port ranges (e.g., 3000-4000)
- Process name filtering - Find ports by application name
- Flexible sorting - Sort by port, PID, or process name
- Color-coded terminal output - Easy-to-read with intuitive color schemes
- JSON export - Perfect for scripting and automation
- Verbose mode - Get detailed information when troubleshooting
- Universal compatibility - Works on macOS and Linux
- Multiple installation methods - Homebrew, Cargo, or from source
- Zero dependencies - Single binary with no runtime requirements
# Add tap and install
brew tap polidog/kilar
brew install kilar
# Or one-liner
brew install polidog/kilar/kilar# Install from crates.io
cargo install kilar
# Install from source
cargo install --git https://github.com/polidog/kilar.gitDownload pre-built binaries from the releases page:
- macOS (Intel):
kilar-x86_64-apple-darwin.tar.gz - macOS (Apple Silicon):
kilar-aarch64-apple-darwin.tar.gz - Linux (x86_64):
kilar-x86_64-unknown-linux-gnu.tar.gz - Linux (ARM64):
kilar-aarch64-unknown-linux-gnu.tar.gz
git clone https://github.com/polidog/kilar.git
cd kilar
cargo build --release
sudo cp target/release/kilar /usr/local/bin/Note: Requires Rust 1.70 or later
# Check port 3000
kilar check 3000
# Check UDP port
kilar check 5353 -p udp
# JSON output
kilar check 3000 --json
# Verbose mode for detailed information
kilar check 3000 -v# Kill process on port 3000
kilar kill 3000
# Force kill without confirmation
kilar kill 3000 --force
# Kill UDP process
kilar kill 5353 -p udp# List all TCP ports
kilar list
# List all ports (TCP and UDP)
kilar list -p all
# Filter by port range
kilar list -r 3000-4000
# Filter by process name
kilar list -f node
# Sort by different criteria
kilar list -s pid # Sort by PID
kilar list -s name # Sort by process name
kilar list -s port # Sort by port number (default)
# Interactive kill mode
kilar list # Select processes to kill interactively
kilar list --view-only # Just view, no kill option-q, --quiet: Suppress output-j, --json: Output in JSON format-v, --verbose: Enable verbose output-h, --help: Print help information-V, --version: Print version information
kilar check <PORT> [OPTIONS]PORT: Port number to check-p, --protocol <PROTOCOL>: Protocol (tcp/udp) [default: tcp]
kilar kill <PORT> [OPTIONS]PORT: Port number of the process to kill-f, --force: Force kill without confirmation-p, --protocol <PROTOCOL>: Protocol (tcp/udp) [default: tcp]
kilar list [OPTIONS]-r, --ports <RANGE>: Port range to filter (e.g., 3000-4000)-f, --filter <NAME>: Filter by process name-s, --sort <ORDER>: Sort order (port/pid/name) [default: port]-p, --protocol <PROTOCOL>: Protocol (tcp/udp/all) [default: tcp]--view-only: View only (no kill feature)
# Check if your development server port is free
kilar check 3000
# If occupied, see what's using it
kilar check 3000 -v
# Kill the process if needed
kilar kill 3000
# List all development-related ports
kilar list -r 3000-9000 -f node# List all services
kilar list -p all
# Find specific service
kilar list -f nginx
# Check system ports
kilar list -r 1-1024
# Export port usage as JSON
kilar list --json > ports.json- โ Green checkmark: Success/Port in use
- ร Red cross: Error/Failed operation
- โ Blue circle: Information/Port available
- Yellow: Port numbers and process names
- Cyan: PIDs and labels
- Blue: Protocol information
All commands support JSON output for scripting and automation:
{
"port": 3000,
"protocol": "tcp",
"status": "occupied",
"process": {
"pid": 12345,
"name": "node",
"command": "node server.js"
}
}kilar requires one of the following system tools to detect port usage:
lsof(recommended) - Usually pre-installed on macOS, optional on Linuxss(Linux fallback) - Part ofiproute2package, typically pre-installed on most Linux distributionsnetstat(alternative fallback) - Available on most systems
Installation instructions for Linux:
# Arch Linux / Manjaro
sudo pacman -S lsof # Optional, ss is already available via iproute2
# Debian / Ubuntu
sudo apt-get install lsof # Optional, ss is already available
# Fedora / RHEL / CentOS
sudo dnf install lsof # Optional, ss is already availableNote: On Linux systems without
lsof,kilarautomatically usesssas a fallback. Only processes owned by the current user will be shown unless running with elevated privileges.
- Some port detection operations may require elevated privileges to see all processes
- Process termination requires appropriate permissions for the target process
# Clone the repository
git clone https://github.com/polidog/kilar.git
cd kilar
# Build in release mode
cargo build --release
# Run tests
cargo test
# Install locally
cargo install --path .We welcome contributions! Here's how you can help:
- ๐ Report bugs
- ๐ก Request features
- ๐ Improve documentation
- ๐ง Submit pull requests
See our Contributing Guide for detailed instructions.
kilar handles system processes and requires appropriate permissions:
- Process visibility: Requires read access to system process information
- Process termination: May require elevated privileges (sudo) for some processes
- Network data: Accesses network connection information through system commands
For security issues, please see our Security Policy.
- Stable: Core functionality is production-ready with v0.1.1 released
- Active: Regular updates and maintenance
- Cross-platform: Tested on macOS, Linux, and Windows
- Package Distribution: Available via Homebrew, Cargo, and GitHub Releases
Note: This tool is designed for Unix-like systems (macOS and Linux) and provides comprehensive port management functionality on these platforms.
| Platform | Min Version | Status | Notes |
|---|---|---|---|
| macOS | 10.15+ | โ Full Support | Intel & Apple Silicon |
| Linux | Any modern | โ Full Support | Requires lsof |
- v0.1.0: Core port management functionality
- v0.1.1: Improved Homebrew distribution and bug fixes
- v0.2.0: Configuration file support
- v0.3.0: Plugin system for custom output formats
- v0.4.0: Network interface filtering
- v1.0.0: Stable API and comprehensive documentation
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Maintainer: polidog
Thanks to all contributors who help make this project better!
- ๐ฆ Built with Rust - For memory safety and performance
- โก Tokio - Async runtime for efficient I/O operations
- ๐จ Terminal UI - Powered by
dialoguerandcolored - ๐๏ธ Cross-compilation - Thanks to GitHub Actions and
cross
- Homebrew Tap - Official Homebrew formula
- Crates.io - Rust package registry
- GitHub Releases - Binary downloads
โ ๏ธ Important: This tool requires appropriate permissions to view and terminate processes. Some system processes may require elevated privileges (sudo).