Skip to content
Docs · Documentation

Using Kubyl

Terminal

Exec shells, attach, debug containers and node shells in a real terminal.

Kubyl embeds a real terminal with scrollback, selection, links, mouse reporting and bracketed paste. It opens in the bottom dock by default. Set terminal.open_in to tab to use an editor tab instead, or press Alt S for one-off.

Session types

ActionKeyWhat it does
Exec shellS on a PodRuns a shell in a container. Kubyl tries /bin/bash, then /bin/sh, then sh unless you set terminal.shell_override.
AttachALike kubectl attach.
Debug container…Shift D on a PodAdds an ephemeral container, like kubectl debug. Image: terminal.debug_image (busybox:1.37).
Node shell…S on a NodeStarts a privileged pod and mounts the node's root filesystem at /host. Run chroot /host for a host shell.

Exec, attach, debug and node shell are unavailable on read-only clusters.

  • The header of an exec tab has container and shell pickers and a reconnect button. Debug containers ask for the image, the target container whose processes to share, and a command.
  • Select with the mouse (double-click for a word, triple-click for a line). Ctrl-click (or Ctrl-click) opens URLs and OSC 8 hyperlinks. Mouse reporting and wheel scrollback work, with alternate-scroll on the alternate screen.
  • The renderer supports the full xterm palette, wide characters, cursor shapes and the usual text attributes, and columns line up at any zoom.
  • Exec shells in editor tabs are restored at startup. Processes you started in an exec session may keep running after the connection closes, as with kubectl exec, and ephemeral debug containers stay in the pod until it is deleted.
  • A node shell's pod is deleted when the session ends, and after 12 hours at the latest. On PROD clusters opening one needs the typed confirmation.

Local shell for this cluster

Run Terminal: Open Local Shell for This Cluster in the palette to get a shell on your own machine, in the dock or an editor tab (per terminal.open_in), where kubectl, helm and friends already point at the cluster. The + button opens another one.

  • Only that context. The shell gets a private kubeconfig with just the cluster's context, so kubectl config get-contexts shows one entry. Kubyl removes the file when the tab closes and sweeps leftovers at startup.
  • Credentials. Client certificates, static tokens and exec plugins are copied from your kubeconfig. For clusters you sign in to through Kubyl (OIDC, OpenShift) the shell gets an exec plugin that reads the token from the KUBYL_KUBE_TOKEN environment variable of the shell. The token is not in arguments or files, and it expires like your sign-in: open a new tab after that.
  • Environment. The shell is interactive, not a login shell, and inherits Kubyl's environment with its own KUBECONFIG, PATH (your login shell's), TERM and COLORTERM. A KUBECONFIG you export in your rc file wins over Kubyl's.
  • Never restored. Local shells are not reopened at startup.

Set the program with terminal.local_shell (default $SHELL, then %COMSPEC%, then /bin/sh).

Shortcuts

KeysAction
CmdCorCmdVCopy / paste on macOS
CtrlShiftCorCtrlShiftVCopy / paste on Windows and Linux
ShiftInsertPaste
CtrlASelect all
ShiftPageUporShiftPageDownScroll
ShiftHomeorShiftEndScroll to top / bottom

Ctrl A to Ctrl Z and the Alt, Tab and Escape keys are passed to the program in the terminal. After a session exits you can reconnect. Output is capped per batch so Ctrl C still stops a flood.

Settings

terminal.scrollback_lines (10000), terminal.font_size (13), terminal.option_as_meta (off on macOS, on elsewhere) and terminal.local_shell (see above). See Settings.

Something missing or wrong? Open an issue on GitHub.