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
| Action | Key | What it does |
|---|---|---|
| Exec shell | S on a Pod | Runs a shell in a container. Kubyl tries /bin/bash, then /bin/sh, then sh unless you set terminal.shell_override. |
| Attach | A | Like kubectl attach. |
| Debug container… | Shift D on a Pod | Adds an ephemeral container, like kubectl debug. Image: terminal.debug_image (busybox:1.37). |
| Node shell… | S on a Node | Starts 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-contextsshows 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_TOKENenvironment 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),TERMandCOLORTERM. AKUBECONFIGyou 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
| Keys | Action |
|---|---|
| CmdCorCmdV | Copy / paste on macOS |
| CtrlShiftCorCtrlShiftV | Copy / paste on Windows and Linux |
| ShiftInsert | Paste |
| CtrlA | Select all |
| ShiftPageUporShiftPageDown | Scroll |
| ShiftHomeorShiftEnd | Scroll 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.