Observability

Port Forwarding

Kubius implements port-forwarding natively (no kubectl subprocess) - every session runs inside the app, with live connection-count tracking and a floating tray that shows every active session.

Quick forward

In any Pod or Service detail view, each declared port has two buttons next to it:

  • Arrow icon - starts a forward immediately
  • Clipboard icon - copies the equivalent kubectl port-forward command to the clipboard

The tooltip on the arrow icon shows the actual local port that will be used (the natural choice or your saved preference - see below).

Local port selection

By default the local port matches the remote port - port 8080 on the pod is exposed as localhost:8080. If that port is already in use by another active session, Kubius bumps to the next free port (8081, 8082, …).

Unsafe ports

macOS and most browsers refuse to load localhost:<port> for a set of “blocked” ports - the Fetch standard blocklist plus ports below 1024 (which require root to bind). Common offenders: 21, 22, 53, 80, 443, 6000.

If a quick-forward would land on an unsafe port (because your remote port is 6000 / 80 / 22 etc.), Kubius shows a confirmation popup with:

  • A suggested safe alternative pre-filled in the input
  • A warning if you pick another unsafe port
  • A Use Anyway button that lets you proceed regardless

Your choice is saved for that specific resource and remote port, so next time you quick-forward the same Pod foo port 6000, the input defaults to the port you picked previously. Even with a saved choice, the popup still appears - every unsafe port requires an explicit click to start. This is by design: it’s too easy to absent-mindedly start an unsafe forward that won’t work in the browser.

Manual port forward

The Port Forward option in the Pod / Service detail Actions menu opens the full configuration dialog:

  • Declared Ports section - click Forward on any declared port for one-click start
  • Custom section - manually enter Pod Port and Local Port, then Start

The Pod Port box is pre-filled with the first declared port. The Local Port box uses your saved override for that pod/port pair if any.

Both boxes must have valid numbers before Start activates. An inline orange warning appears as soon as you type an unsafe port number - the dialog will route through the same confirmation popup as quick-forward when you click Start.

The Start / Forward buttons grey out when one of the port fields is empty or invalid.

Active forwards tray

A floating panel at the bottom-right of the main window lists every active session:

  • Status dot - green = listening, orange = reconnecting
  • Local port → remote port
  • Connection count - live count of TCP connections currently established to the local port
  • Browser icon - opens http://localhost:<port> in the default browser
  • Stop - terminates the session

Click anywhere on the tray header (not just the chevron) to collapse or expand it. The tray disappears entirely when there are no active forwards. If a Right-Sizing analysis is also in progress, that tray stacks above this one in the same corner.

Copying the kubectl command

The clipboard icon next to each quick-forward arrow copies a ready-to-run command:

  • Pod - kubectl port-forward -n <ns> pod/<name> <local>:<remote>
  • Service - kubectl port-forward -n <ns> service/<name> <local>:<remote>

The local port reflects your saved override if any - so the copied command matches what the quick-forward button would do.