Skip to main content

LocalPort

Universal port forwarding manager with intelligent health monitoring

LocalPort is a Python CLI that manages port forwarding across kubectl and SSH with automatic health monitoring, intelligent restart policies, and a background daemon. Feedback and issue reports are welcome.

Why LocalPort?

  • Universal — kubectl and SSH tunnels managed with one tool
  • Self-healing — health monitoring with restart policies and exponential backoff
  • Hot reload — config changes applied live in daemon mode (via watchdog)
  • Daemon mode — background operation with monitoring
  • Rich CLI — clean output with progressive verbosity (-v, -vv, --debug)
  • Flexible config — YAML with environment variable substitution and validation

Installation

Python 3.11+ required. LocalPort runs on Linux and macOS only (the daemon relies on POSIX fork and Unix signals — Windows is not supported).

# pipx (recommended)
pipx install localport

# with optional health-check extras
pipx install "localport[kafka,postgres]"

# or with uv
uv tool install localport

Install from GitHub or Test PyPI:

pipx install git+https://github.com/dawsonlp/localport.git
pipx install git+https://github.com/dawsonlp/localport.git@v1.1.1   # specific tag

Need Python 3.11+? Install it via Homebrew (brew install python@3.11), your distro's package manager, or pyenv. Verify with localport --version.

Quick Start (5 minutes)

  1. Create localport.yaml:
version: "1.0"

services:
  - name: postgres
    technology: kubectl
    local_port: 5432
    remote_port: 5432
    connection:
      resource_name: postgres
      namespace: default
    tags: [database]

  - name: redis
    technology: kubectl
    local_port: 6379
    remote_port: 6379
    connection:
      resource_name: redis
      namespace: default
    tags: [cache]
  1. Start your services (start requires service names, --tag, or --all):
localport start --all              # everything
localport start postgres redis     # specific services
localport start --tag database     # by tag
  1. Check status and connect:
localport status
psql -h localhost -p 5432 -U postgres
redis-cli -h localhost -p 6379

Your services are now forwarded locally with automatic health monitoring and restarts. See the full command list and configuration options.

Documentation

Status

Stable (v1.x) — core functionality is production-ready.

Implemented:

  • kubectl port forwarding (services, deployments, pods)
  • SSH port forwarding, including bastion/jump hosts
  • Health monitoring (TCP, HTTP/HTTPS, Kafka, PostgreSQL) with restart policies
  • Daemon mode with hot configuration reload
  • Cluster health monitoring for Kubernetes contexts
  • Configuration management (config add/remove/list/validate/export)
  • Service logging and diagnostics

PostgreSQL and Kafka health checks need the optional extras (localport[postgres], localport[kafka]) and credentials — see the Configuration Guide.

Roadmap

Direction, not commitments — priorities follow community demand and contributions:

  • Reverse proxy — HTTP/HTTPS proxying with load balancing
  • Advanced routing — multi-hop and service-mesh connectivity
  • Enhanced logging — ring-buffer storage with real-time streaming
  • AI integration — natural-language service management via MCP
  • Enterprise security — mTLS, RBAC, and identity-provider integration
  • Developer tools — IDE plugins and environment templates

See the full roadmap and vote on GitHub issues.

Metadata

Release files for localport 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for localport 1.2.0
File Size Uploaded
localport-1.2.0.tar.gz 261.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for localport 1.2.0
File Interpreter ABI Platform
localport-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 501.4 kB

Release files / localport-1.2.0.tar.gz

Download URL localport-1.2.0.tar.gz
Size 261.7 kB
Tags Source
SHA-256 checksum
How to use checksums
911c9f4dd9af56dfa08284391ee4bcf24d5a4cafb89ebda502a027d90f02fecb
BLAKE2b-256 checksum
How to use checksums
7b5df6a3d2521a583842a88796dec39f9808d2c634017345a4fe1d0135fd8dd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localport-1.2.0-py3-none-any.whl

Download URL localport-1.2.0-py3-none-any.whl
Size 239.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
49ba5a5383471bc31d3b022ea9d0171afd3356e1ea17f1862e850473570191e4
BLAKE2b-256 checksum
How to use checksums
0ff2d2da4ad9701c6ad6b3adda6855c8e199870d019fc74f8fc0beda48e0888d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page