Skip to content

TUI Dashboard

The Terminal User Interface (TUI) provides a k9s-like experience for managing Kubernetes clusters directly from your terminal.

Path note

This page uses ~/.config/k13d/... examples in code blocks. That is now also the default config directory on macOS.

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 namespace
k13d -n kube-system

# With all namespaces
k13d -A

k13d uses the standard Kubernetes client loading rules for kubeconfig and current context. Use KUBECONFIG or your current kubeconfig context instead of --kubeconfig / --context flags.

Basic Navigation

Key Action
J / Down Move down
K / Up Move up
Tab Move focus to the AI prompt
Shift+Tab Move focus to AI chat history
Esc Close modal / Return to main view
Ctrl+E Toggle AI panel
Q Quit (with confirmation)

Resource Navigation

Key Action
: Command mode (e.g., :pods, :svc)
/ Filter current table
Enter / Right Open related resource
Left / Esc Go back
G Go to first item
Shift+G Go to last item
Ctrl+F Page down
Ctrl+B Page up

Namespace quick-select keeps 0 pinned to all namespaces and reorders ++1-9++ so your most recently used namespaces move to the front, similar to k9s.

Panel Focus

Key Action
Tab Move between the table and AI prompt
Shift+Tab Jump into AI chat history
Esc Return focus to the resource table

AI Panel Width

Key Action
Alt+H Make the AI panel narrower
Alt+L Make the AI panel wider
Alt+F Expand the AI panel to full size, then restore the split layout
Alt+0 Reset the AI panel to its default width

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.yaml included in results

Resource Aliases

Define custom command shortcuts in ~/.config/k13d/aliases.yaml:

~/.config/k13d/aliases.yaml
aliases:
  pp: pods
  dep: deployments
  svc: services
  sec: secrets
  cm: configmaps
  ds: daemonsets
  sts: statefulsets

Usage

  • Type :pp to navigate to Pods (alias resolves automatically)
  • Type :alias to see all active aliases (built-in + custom)
  • Custom aliases integrate with autocomplete — type :p and 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
P Previous Logs View previous container logs
S Shell Open a shell inside the selected pod
A Attach Attach to the selected pod
Enter Containers Show the pod's container list
Shift+F Port Forward Start a new port forward
F Active Port Forwards Show running port forwards

Deployment Actions

Key Action Description
Shift+S Scale Scale replicas
Shift+R Restart Rollout restart
Z ReplicaSets Jump to related ReplicaSets
Enter / Right Related Pods Drill down into related resources

Node Actions

Key Action Description
C Cordon Mark node unschedulable
Shift+C Uncordon Mark node schedulable
Shift+D Drain Drain node

Node View

  • :nodes shows whether a node is acting as control-plane or worker in the ROLE column.
  • CPU and MEM prefer live node metrics. When metrics-server is unavailable, k13d falls back to scheduled pod requests and prefixes the cell with ~.
  • GPU shows scheduled GPU requests versus allocatable GPU capacity. Kubernetes metrics-server does not provide live GPU utilization, so this column is request-based by design.

AI Assistant

Using the AI Panel

  1. Press Tab to focus on the AI panel
  2. Type your question in the boxed prompt area
  3. Press Enter to send
  4. Press Shift+Tab to move into transcript history
  5. With the AI panel open, return focus to the table and press Enter on a row to attach or detach that resource as AI context
  6. Use J / K or ++pgup++ / ++pgdn++ to browse older replies
  7. Press Tab to return to the prompt

The prompt area is boxed separately from the transcript so it is easier to see whether you are typing a new message or browsing previous output.

You can keep the table readable while chatting by resizing the right-side AI panel with Alt+H, Alt+L, and Alt+0, or temporarily expand it with Alt+F and restore the split layout with the same shortcut.

When a row is attached to AI, it keeps a subtle highlight in the table and stays available to the assistant even if you navigate to another resource view.

Agentic AI is kubectl-first by default. bash and MCP tools are opt-in through config.yaml, and unsupported interactive kubectl flows such as kubectl edit, kubectl port-forward, and kubectl exec -it are blocked instead of shown as approvable actions.

Chat History

Previous Q&A sessions are preserved within each TUI session. Press Shift+Tab to focus the transcript, then use:

  • J / K or Up / Down to move line by line
  • ++pgup++ / ++pgdn++ to move by a page
  • G / Shift+G to jump to the top or bottom
  • Tab to return to the prompt

Model Switching

Switch AI models on the fly:

  • Type :model to see all configured profiles
  • Type :model gpt-4o to switch directly
  • Active model marked with * in selector

Use Shift+O to edit the current active LLM connection from the TUI settings modal.

For the exact file persistence behavior, including when TUI updates llm, when it syncs the active profile, and how :model rewrites active_model, see Model Settings & Storage.

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:

┌──────────────────────────────────────────────┐
│ Decision Required                            │
│                                              │
│ kubectl get pods -n production               │
│                                              │
│ Reject (N / Esc)      Approve (Y / Enter)    │
└──────────────────────────────────────────────┘

The request opens as a centered modal, matching the Web UI approval flow more closely.

Key Action
Y / Enter Approve this command
N / Esc Reject this command

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:

:pods [1/25] │ Filter: nginx │ Context: production │ NS: default
  • 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:

  1. Navigate to Pods (:pods)
  2. Select a pod with j/k
  3. Press Ctrl+I to launch dive with 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

~/.config/k13d/plugins.yaml
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:

~/.config/k13d/hotkeys.yaml
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:

~/.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:

  1. Type :context or :ctx
  2. Select from available contexts (current marked with *)
  3. 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
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
S Shell
E Edit
Shift+S Scale
Shift+R Restart
Ctrl+D Delete

AI

Key Action
Shift+L AI Analyze
H Explain This

Tips and Tricks

1. Quick Namespace Switch

:ns default
:ns -          # Previous namespace

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

/error        # Filter to errors
Shift+L       # AI analyze all matching

4. Vim-Style Navigation

If you're familiar with Vim:

  • j/k for up/down
  • gg for top
  • G for bottom
  • / for search

Next Steps