quay-tui 0.1.0

A TUI port manager for local processes, SSH forwards, and Docker containers
quay-tui-0.1.0 is not a library.

Quay

A TUI port manager for local processes, SSH forwards, and Docker containers.

Features

  • Unified View: See all ports in one place (local, SSH, Docker)
  • Interactive TUI: Navigate with keyboard, filter by source, search by name/port
  • Quick Actions: Kill processes directly from the interface
  • CLI Support: Non-interactive commands for scripting
  • Fast: Written in Rust with ratatui

Installation

cargo install --path .

Usage

TUI Mode (default)

quay

CLI Commands

# List all ports
quay list

# Output as JSON
quay list --json

# Filter by source
quay list --local
quay list --ssh
quay list --docker

# Kill process on port
quay kill 3000

# Kill by PID
quay kill 3000 --pid 12345

# Create SSH port forward
quay forward 8080:localhost:80 remote-host

# Create reverse SSH forward
quay forward 8080:localhost:80 remote-host -R

Keybindings

Key Action
j / Move down
k / Move up
g / Home Go to first
G / End Go to last
/ Search mode
Enter Show details
K Kill selected process
f Create SSH forward
p Open presets
r Refresh
a Toggle auto-refresh
0 Show all
1 Local only
2 SSH only
3 Docker only
? Help
q / Esc Quit

Screenshots

┌─────────────────────────────────────────────────────────────┐
│ Quay - Port Manager                                         │
├─────────────────────────────────────────────────────────────┤
│ Filter: [0] All  [/] search  [?] help                       │
├─────────────────────────────────────────────────────────────┤
│ TYPE   │ LOCAL  │ REMOTE          │ PROCESS/CONTAINER       │
├────────┼────────┼─────────────────┼─────────────────────────┤
│ LOCAL  │ :3000  │                 │ node (pid:1234)         │
│ LOCAL  │ :8080  │                 │ python (pid:5678)       │
│ SSH    │ :9000  │ localhost:80    │ ssh (pid:2345)          │
│ DOCKER │ :5432  │ postgres:5432   │ postgres (abc123)       │
├─────────────────────────────────────────────────────────────┤
│ [j/k] Navigate  [Enter] Details  [K] Kill  [f] Forward  [p] Presets  [?] Help  [q] Quit│
└─────────────────────────────────────────────────────────────┘

Configuration

Configuration files are stored in ~/.config/quay/.

config.toml

[general]
auto_refresh = true
refresh_interval = 5
default_filter = "all"  # all, local, ssh, docker

[ui]
mouse_enabled = true

presets.toml

[[preset]]
name = "Production DB"
key = "1"
local_port = 5432
remote_host = "localhost"
remote_port = 5432
ssh_host = "prod-bastion"

[[preset]]
name = "Staging Redis"
local_port = 6379
remote_host = "localhost"
remote_port = 6379
ssh_host = "staging-bastion"

Requirements

  • Rust 1.88+
  • macOS (uses lsof for port detection)
  • Docker (optional, for container port detection)

Development

# Run in development
cargo run

# Build release
cargo build --release

# Run tests
cargo test

See docs/DEVELOPMENT.md for more details.

License

MIT