portly

Crates.ioportly
lib.rsportly
version1.0.0
created_at2026-01-10 09:07:14.136581+00
updated_at2026-01-10 09:07:14.136581+00
descriptionA friendly port monitor - See what's running on your ports
homepagehttps://github.com/adrozdenko/portly
repositoryhttps://github.com/adrozdenko/portly
max_upload_size
id2033923
size116,007
Andrii Drozdenko (adrozdenko)

documentation

README

🦀 Portly

A friendly port monitor - See what's running on your ports with style!

CI License: MIT Made with Rust macOS


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 lsof and ps commands)
  • 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

Commit count: 7

cargo fmt