1 stable release
| 1.0.0 | Jan 10, 2026 |
|---|
#1064 in Development tools
75KB
1.5K
SLoC
🦀 Portly
A friendly port monitor - See what's running on your ports with style!
Features
- 📋 List all processes listening on TCP ports with a beautiful bordered table
- ☠️ Kill processes by port number (with confirmation)
- 👀 Watch mode - live-updating TUI dashboard powered by ratatui
- ⚙️ Config - save settings and create port aliases
- 📊 Detailed view - CPU, memory, and full command line
- 🎨 Color-coded UI - visual distinction for ports, addresses, and resources
Installation
From source (requires Rust)
git clone https://github.com/adrozdenko/portly.git
cd portly
cargo install --path .
Cargo (crates.io) - coming soon
cargo install portly
Usage
Quick Start
# List all listening ports (fancy table)
portly
# Show detailed info (CPU, memory, command)
portly -d
# or
portly list --detailed
# Filter by port
portly list --port 3000
Kill a Process
# Kill with confirmation
portly kill 3000
# Skip confirmation
portly kill 3000 --force
Watch Mode (Live Dashboard)
# Start live dashboard (default: 2s refresh)
portly watch
# Custom refresh interval
portly watch --interval 5
Watch mode keybindings:
| Key | Action |
|---|---|
↑ / k |
Move up |
↓ / j |
Move down |
x / K |
Kill selected process |
r |
Refresh now |
q / Esc |
Quit |
Configuration
# Create config file
portly config init
# Show current config
portly config show
# Set refresh interval
portly config set refresh_interval 5
# Create a port alias
portly config alias set dev 3000,5173,8080
# List all aliases
portly config alias list
# Remove an alias
portly config alias remove dev
Config file location: ~/.config/portly/config.toml
Screenshots
List View (portly)
┌─ 🦀 Portly v1.0.0 ───────────────────────────────────┐
│ PORT BIND PID PROCESS │
├──────────────────────────────────────────────────────┤
│ 3000 all 3584 node │
│ 5173 local 8679 vite │
│ 5432 local 785 postgres │
│ 8000 all 27755 Python │
├──────────────────────────────────────────────────────┤
│ 4 processes │ MIT License │
└──────────────────────────────────────────────────────┘
Detailed View (portly -d)
┌─ 🦀 Portly v1.0.0 ─────────────────────────────────────────────────────────────────────┐
│ PORT BIND PID PROCESS CPU MEM COMMAND │
├────────────────────────────────────────────────────────────────────────────────────────┤
│ 3000 all 3584 node 2.3% 145.2MB node server.js │
│ 5173 local 8679 vite 0.1% 89.4MB vite --port 5173 │
│ 5432 local 785 postgres 1.2% 201.0MB postgres -D /data │
├────────────────────────────────────────────────────────────────────────────────────────┤
│ 3 processes │ MIT License │
└────────────────────────────────────────────────────────────────────────────────────────┘
Watch Mode (portly watch)
Interactive TUI with:
- Live-updating process list
- Keyboard navigation
- Kill processes with
x - Detail panel showing full command
Requirements
- macOS (uses
lsofandpscommands) - Rust 1.70+ (for building from source)
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project follows the Contributor Covenant Code of Conduct.
License
MIT License - see LICENSE for details.
Changelog
See CHANGELOG.md for version history.
Made with ❤️ by Drozd&Co
Dependencies
~9–23MB
~310K SLoC