A tiny CLI for Kubernetes workflows

All your port forwards.
One place.

Keep the services you need within reach. Define your forwards once, start them together, and let KubePin reconnect when a connection drops.

Local bind by default YAML, JSON, or .env Open source
ONE COMMAND→MULTIPLE SERVICES→LOCAL PORTS READY
01 / THE IDEA

Less babysitting.
More building.

KubePin manages the forwards that make local development possible, so you can focus on the app in front of you.

01

Start together

Launch every configured service forward with a single command. Each runs as its own supervised process.

02

Stay connected

If a forward exits, KubePin retries it automatically with a delay that grows during repeated failures.

03

Choose the bind address

Forwards bind to 127.0.0.1 by default. Set a global or per-service address when you need another interface.

02 / CONFIGURATION

Fits the way
you work.

Keep a shareable YAML or JSON file in your project, or configure forwards with environment variables. Override context, namespace, and bind address from the command line when you need to.

YAMLJSON.envCLI flags
Read the configuration guide
kubepin.yaml
context: development
namespace: default
forwards:
  - service: postgres
    namespace: data
    ports:
      - "15432:5432"
  - service: redis
    ports:
      - "16379:6379"
Two services. One file.
03 / GET STARTED

Ready when
you are.

Install with Homebrew, or build from source with Go 1.22+. You’ll need access to your Kubernetes context; the Homebrew formula installs kubectl for you.

01

Get KubePin

brew install opcode0x/tap/kubepin

Prefer Go? Build from source.

02

Add your forwards

Create kubepin.yaml in your project, using the example above as a starting point.

03

Run it

kubepin

Use kubepin -dry-run to inspect commands first. Press Ctrl+C to stop.

KEEP THE CONNECTION

Pin your services.
Get back to work.

Explore the project