TUI Dashboard¶
The Terminal User Interface (TUI) provides a k9s-like experience for managing Kubernetes clusters directly from your terminal.
Overview¶
┌─────────────────────────────────────────────────────────────────┐
│ k13d │ Context: minikube │ Namespace: default │ ? for help │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────┐ ┌─────────────────────────┐ │
│ │ Pods (8) │ │ AI Assistant │ │
│ │ │ │ │ │
│ │ NAME READY STATUS │ │ Ask me anything about │ │
│ │ nginx-abc123 1/1 Running │ │ your cluster... │ │
│ │ api-def456 2/2 Running │ │ │ │
│ │ db-ghi789 1/1 Running │ │ > Why is nginx failing? │ │
│ │ │ │ │ │
│ └─────────────────────────────────┘ └─────────────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ :pods Filter: /nginx │
└─────────────────────────────────────────────────────────────────┘
Getting Started¶
Launch TUI Mode¶
# Default mode
k13d
# With specific kubeconfig
k13d --kubeconfig ~/.kube/my-cluster
# With specific context
k13d --context production
Navigation¶
Basic Navigation¶
| Key | Action |
|---|---|
| J / Down | Move down |
| K / Up | Move up |
| Tab | Switch focus between panels |
| Esc | Close modal / Return to main view |
| Q | Quit (with confirmation) |
Resource Navigation¶
| Key | Action |
|---|---|
| : | Command mode (e.g., :pods, :svc) |
| / | Filter current table |
| G | Go to first item |
| Shift+G | Go to last item |
| Ctrl+F | Page down |
| Ctrl+B | Page up |
Panel Focus¶
| Key | Action |
|---|---|
| Tab | Cycle focus between panels |
| Left / Right | Switch panels |
| 1 - 9 | Quick switch to specific panel |
Resource Commands¶
Viewing Resources¶
| Command | Description |
|---|---|
:pods | View pods |
:svc or :services | View services |
:deploy or :deployments | View deployments |
:rs or :replicasets | View replica sets |
:sts or :statefulsets | View stateful sets |
:ds or :daemonsets | View daemon sets |
:jobs | View jobs |
:cronjobs | View cron jobs |
:cm or :configmaps | View config maps |
:secrets | View secrets |
:ingress | View ingresses |
:pv | View persistent volumes |
:pvc | View persistent volume claims |
:nodes | View nodes |
:ns or :namespaces | View namespaces |
:events | View events |
:helm | View Helm releases |
Namespace Commands¶
| Command | Description |
|---|---|
:ns default | Switch to default namespace |
:ns kube-system | Switch to kube-system |
:ns all | View all namespaces |
Management Commands¶
| Command | Description |
|---|---|
:alias | View all configured resource aliases |
:model | Open AI model profile selector |
:model <name> | Switch directly to a named model profile |
:plugins | View available plugins with shortcuts |
:health | Check system status |
:audit | View audit log |
Autocomplete¶
When typing a command, k13d provides smart autocomplete:
- Single match: Dimmed hint text appears (press Tab to accept)
- Multiple matches: Dropdown overlay appears above command bar
- Up / Down to navigate
- Tab or Enter to select
- Esc to dismiss
- Custom aliases from
aliases.yamlincluded in results
Resource Aliases¶
Define custom command shortcuts in ~/.config/k13d/aliases.yaml:
aliases:
pp: pods
dep: deployments
svc: services
sec: secrets
cm: configmaps
ds: daemonsets
sts: statefulsets
Usage¶
- Type
:ppto navigate to Pods (alias resolves automatically) - Type
:aliasto see all active aliases (built-in + custom) - Custom aliases integrate with autocomplete — type
:pand press Tab - If a custom alias conflicts with a built-in, the custom alias wins
Resource Actions¶
General Actions¶
| Key | Action | Description |
|---|---|---|
| Y | YAML | View resource YAML |
| D | Describe | Describe resource |
| E | Edit | Edit resource (opens $EDITOR) |
| Ctrl+D | Delete | Delete resource (with confirmation) |
Pod-Specific Actions¶
| Key | Action | Description |
|---|---|---|
| L | Logs | Stream pod logs |
| Shift+L | Previous Logs | View previous container logs |
| X | Exec | Open shell in container |
| P | Port Forward | Start port forwarding |
Deployment Actions¶
| Key | Action | Description |
|---|---|---|
| S | Scale | Scale replicas |
| R | Restart | Rollout restart |
| H | History | View rollout history |
| U | Undo | Rollback to previous version |
Node Actions¶
| Key | Action | Description |
|---|---|---|
| C | Cordon | Mark node unschedulable |
| Shift+C | Uncordon | Mark node schedulable |
| Shift+D | Drain | Drain node |
AI Assistant¶
Using the AI Panel¶
- Press Tab to focus on the AI panel
- Type your question
- Press Enter to send
- View the response in the output area
Chat History¶
Previous Q&A sessions are preserved within each TUI session. Scroll up to review past conversations, separated by visual dividers.
Model Switching¶
Switch AI models on the fly:
- Type
:modelto see all configured profiles - Type
:model gpt-4oto switch directly - Active model marked with
*in selector
AI Actions on Resources¶
| Key | Action | Description |
|---|---|---|
| Shift+L | AI Analyze | Deep analysis of selected resource |
| H | Explain This | Get explanation of resource |
Tool Approval¶
When AI requests to execute a command:
┌─────────────────────────────────────────┐
│ Tool Approval Required │
│ │
│ kubectl get pods -n production │
│ │
│ [Y] Approve [N] Reject [A] Always │
└─────────────────────────────────────────┘
| Key | Action |
|---|---|
| Y | Approve this command |
| N | Reject this command |
| A | Always approve read-only commands |
Filtering and Search¶
Filter Syntax¶
/nginx # Contains "nginx"
/^nginx # Starts with "nginx"
/nginx$ # Ends with "nginx"
/nginx.*running # Regex pattern
Quick Filter¶
| Key | Action |
|---|---|
| / | Start filter mode |
| Esc | Clear filter |
| Enter | Apply filter |
Status Bar¶
The status bar shows:
- Current resource type
- Selection index / total count
- Active filter
- Kubernetes context
- Current namespace
Plugins¶
Extend k13d with external CLI tools via ~/.config/k13d/plugins.yaml. Plugins bind keyboard shortcuts to commands that run with the selected resource's context.
Quick Start¶
Create ~/.config/k13d/plugins.yaml:
plugins:
dive:
shortCut: "Ctrl-I"
description: "Dive into container image layers"
scopes: [pods]
command: dive
args: [$IMAGE]
Then in the TUI:
- Navigate to Pods (
:pods) - Select a pod with
j/k - Press Ctrl+I to launch
divewith the pod's container image
Using Plugins¶
| Action | How |
|---|---|
| View all plugins | Type :plugins |
| Run a plugin | Press the plugin's shortcut while on a matching resource |
| Confirm execution | Press Execute in the confirmation modal (if confirm: true) |
Example Plugins¶
plugins:
# Analyze container image layers
dive:
shortCut: "Ctrl-I"
description: "Dive into container image layers"
scopes: [pods]
command: dive
args: [$IMAGE]
# Debug pod with ephemeral container
debug:
shortCut: "Shift-D"
description: "Debug pod with ephemeral container"
scopes: [pods]
command: kubectl
args: [debug, -n, $NAMESPACE, $NAME, -it, --image=busybox]
confirm: true
# Background port-forward
port-forward:
shortCut: "Shift-F"
description: "Port-forward to localhost:8080"
scopes: [pods, services]
command: kubectl
args: [port-forward, -n, $NAMESPACE, $NAME, "8080:80"]
background: true
confirm: true
# Multi-pod log streaming
stern:
shortCut: "Shift-S"
description: "Stream logs with stern (by app label)"
scopes: [deployments]
command: stern
args: [-n, $NAMESPACE, $LABELS.app]
# Open in external tool (all resources)
lens:
shortCut: "Ctrl-O"
description: "Open in Lens"
scopes: ["*"]
command: lens
args: [--context, $CONTEXT]
background: true
Tip
Plugins with background: true run without suspending the TUI. Use this for port-forwarding or opening external applications.
See Configuration > Plugins for the full reference including all available variables.
Custom Hotkeys¶
Define custom keyboard shortcuts in ~/.config/k13d/hotkeys.yaml to execute external commands:
hotkeys:
stern-logs:
shortCut: "Shift-L"
description: "Stern multi-pod logs"
scopes: [pods, deployments]
command: stern
args: ["-n", "$NAMESPACE", "$NAME"]
port-forward-8080:
shortCut: "Ctrl-P"
description: "Port forward to 8080"
scopes: [pods, services]
command: kubectl
args: [port-forward, -n, "$NAMESPACE", "$NAME", "8080:8080"]
Hotkeys support $NAMESPACE, $NAME, and $CONTEXT variable expansion. Set dangerous: true to require confirmation before execution.
Per-Resource Sort Defaults¶
Configure default sort in ~/.config/k13d/views.yaml:
views:
pods:
sortColumn: AGE
sortAscending: false # Newest first
deployments:
sortColumn: NAME
sortAscending: true # Alphabetical
services:
sortColumn: TYPE
sortAscending: true
Sort preferences are applied automatically when navigating to each resource. k13d detects column types (numeric, age, ready format, string) for proper sorting.
Context Switching¶
Switch between Kubernetes clusters:
- Type
:contextor:ctx - Select from available contexts (current marked with
*) - Press Enter to switch
On switch, k13d reconnects to the new cluster, reloads namespaces, and refreshes all resource data.
Customization¶
Theme Configuration¶
k13d uses a Tokyo Night-inspired theme by default.
Configuration File¶
# ~/.config/k13d/config.yaml
ui:
theme: tokyo-night # or: light, dark, nord
refresh_interval: 5s
show_header: true
show_status: true
Keyboard Shortcuts Reference¶
Global¶
| Key | Action |
|---|---|
| ? | Show help |
| Ctrl+C | Quit |
| Esc | Cancel / Back |
Navigation¶
| Key | Action |
|---|---|
| J / K | Up / Down |
| G / Shift+G | First / Last |
| Ctrl+F / Ctrl+B | Page Down / Up |
| Tab | Switch panel |
Actions¶
| Key | Action |
|---|---|
| Y | YAML |
| D | Describe |
| L | Logs |
| X | Exec |
| E | Edit |
| S | Scale |
| R | Restart |
| Ctrl+D | Delete |
AI¶
| Key | Action |
|---|---|
| Shift+L | AI Analyze |
| H | Explain This |
Tips and Tricks¶
1. Quick Namespace Switch¶
2. Resource Shortcuts¶
:po # pods
:svc # services
:deploy # deployments
:no # nodes
:alias # view all aliases
:model # switch AI model
:plugins # view plugins
3. Filter + Action¶
4. Vim-Style Navigation¶
If you're familiar with Vim:
j/kfor up/downggfor topGfor bottom/for search
Next Steps¶
- Web Dashboard - Web UI alternative
- Keyboard Shortcuts - Complete shortcut reference
- AI Assistant - AI features