Terminal interface for managing multiple Kubernetes port-forwards with auto-reconnect, hot-reload, health monitoring, and mDNS hostnames.
Everything you need for production-grade port-forwarding
Beautiful terminal interface with real-time updates and keyboard navigation
Add, edit, delete, and toggle port-forwards without restarting
Exponential backoff retry with infinite retries on connection failures
Configuration changes applied automatically without restart
Multiple check methods with stale connection detection
Access forwards via .local hostnames without /etc/hosts
Manage forwards across multiple clusters and namespaces
Automatic reconnection when pods restart or reschedule
Validates port availability with process ID information
Real-time HTTP logging with detail view, JSON highlighting, gzip decompression, and clipboard copy
Built-in HTTP benchmarking with latency percentiles
Background operation for scripting and automation
How kportal compares to other Kubernetes port-forwarding tools
Terminal TUI | Single binary
Terminal TUI | Single binary
Desktop GUI | Electron
Desktop + TUI | Tauri
| Feature | kportal | k9s | Kube Forwarder | kftray |
|---|---|---|---|---|
| Interface | Terminal TUI | Terminal TUI | Desktop GUI | Desktop + TUI |
| Persistent Config | ✓ YAML | ✗ Session only | ✓ JSON | ✓ JSON + Git |
| Auto-reconnect | ✓ Exp. backoff | ✗ | ✓ Basic | ✓ Watch API |
| Hot-reload Config | ✓ | ✗ | ✗ | ✗ |
| Health Checks | ✓ TCP + data | ✗ | ✗ | ✗ |
| Stale Connection Detection | ✓ Age + idle | ✗ | ✗ | ✗ |
| HTTP Traffic Logging | ✓ Built-in | ✗ | ✗ | ✓ |
| Connection Benchmarking | ✓ Built-in | ✓ Via Hey | ✗ | ✗ |
| mDNS Hostnames | ✓ .local | ✗ | ✗ | ✗ |
| Label Selectors | ✓ | ✓ | ✗ | ✓ |
| Headless Mode | ✓ | ✗ | ✗ | ✗ |
| System Tray | ✗ | ✗ | ✗ | ✓ |
| UDP Support | ✗ | ✗ | ✗ | ✓ Proxy |
| Dependencies | Single binary | Single binary | Electron | Tauri |
Get started in seconds
macOS & Linux
brew install lukaszraczylo/taps/kportal
All platforms
curl -fsSL https://raw.githubusercontent.com/lukaszraczylo/kportal/main/install.sh | bash
Linux, macOS, Windows (amd64 & arm64)
Simple commands, powerful results
kportal
Launch the interactive TUI with real-time status updates and keyboard controls.
kportal -v
Run with detailed logging for debugging and automation.
kportal --check
Validate configuration without starting any forwards.
kportal -c /path/to/config.yaml
Use a custom configuration file instead of .kportal.yaml
kportal -headless -v &
Run without TUI for scripting and background operation.
Simple YAML configuration with powerful options
contexts:
- name: production
namespaces:
- name: backend
forwards:
- resource: service/postgres
protocol: tcp
port: 5432
localPort: 5432
alias: prod-db
- resource: pod/nginx
protocol: tcp
port: 80
localPort: 8080
mdns:
enabled: true
healthCheck:
interval: "3s"
method: "data-transfer"
maxConnectionAge: "25m"
contexts:
- name: production
namespaces:
- name: default
forwards:
- resource: service/postgres
port: 5432
localPort: 5432
alias: db # db.local
service/name Servicepod/name Pod by namepod/prefix Pod by prefixdeployment/name Deploymentresource: podselector: app=nginxresource - Target resourceport - Remote portlocalPort - Local portalias - Display name & mDNSselector - Label selectorProduction-ready capabilities
Advanced health monitoring prevents stale connections during long operations.
Access forwards via .local hostnames without editing /etc/hosts.
alias: prod-db
→
prod-db.local
service/redis
→
redis.local
Works on macOS & Linux
Configuration changes are applied automatically without restarting.
Exponential backoff with infinite retries ensures reliability.
Press l to view real-time HTTP traffic.
Press b to benchmark connections.