Skip to content

Keybindings

Eric Kochen edited this page May 16, 2026 · 24 revisions

Press ? on any screen in the TUI to see context-sensitive help.

Host List

Key Action
j / k Navigate down and up
PgDn / PgUp Page down / up
Enter Connect to selected host
Tab Cycle to next top tab (Hosts -> Tunnels -> Containers -> Keys -> Hosts)
Shift+Tab Cycle to previous top tab (Hosts -> Keys -> Containers -> Tunnels -> Hosts)
Esc Clear group filter or multi-select. Cancels only, never quits. First idle press surfaces a one-shot toast pointing to q
a Add new host
A Add pattern
e Edit selected host or pattern
d Delete selected host or pattern
c Clone host or pattern
y Copy SSH command
x Export config block to clipboard
/ Search and filter
# Filter by tag
t Tag host (bulk tag editor when hosts are selected)
s Cycle sort mode (config order / A-Z alias / A-Z hostname / most used / most recent / down first)
g Cycle group mode (none / provider / tag; tag step is skipped when no user tags are defined)
i All directives
v Toggle detail panel
[ / ] Scroll detail panel (Detailed view only; toggle with v)
u Undo last delete or bulk tag operation
p Ping selected host. ProxyJump hosts inherit bastion status
P Ping all hosts. ProxyJump hosts inherit bastion status
! Down-only filter (show unreachable hosts)
S Cloud provider sync
Space Select / deselect host
Ctrl+Space Select / deselect host (alternative)
Ctrl+A Select all visible / deselect all
r Run snippet on host(s)
R Run snippet on all visible
F Remote file explorer (scp)
C Per-host container overlay for the selected host (Docker / Podman). For every container across every host, use the dedicated Containers tab via Tab
T Manage host tunnels
I Import from known_hosts
X Purge stale hosts
V Sign Vault SSH certificates for all signable hosts. Always available. Press V again during a run to cancel. When no role is configured shows a hint to set one in the host form
K SSH key list overlay (legacy read-only view). For the multi-action surface use the Keys tab via Tab
m Theme picker
n What's new overlay. Shows recent changelog sections. Also reachable via Jump
: Jump. Universal fuzzy search across hosts, tunnels, containers, snippets and actions. Type to filter, Enter to open
? Help
q Quit

Search

Key Action
Type Filter hosts
Enter Connect to selected
Ctrl+E Edit selected host
Ctrl+P Ping selected host (ProxyJump hosts inherit bastion status)
Esc Cancel search
Tab / Shift+Tab Next / previous result
Ctrl+Space Multi-select toggle
Ctrl+A Select all matching / deselect all

Forms

Forms use progressive disclosure. Required fields are shown first. Press Tab or Down from the last required field to expand and reveal optional fields.

Key Action
Tab / Down Next field (expands form if on last required field)
Shift+Tab / Up Previous field
Enter Always saves, regardless of which field is focused
Space (on toggle field) Flip the boolean (Verify TLS, Auto Sync, Tunnel Type)
Space (on empty picker field) Open the picker (Identity File, ProxyJump, Password Source, Vault SSH Role, Regions)
Space (on populated picker field) Insert a literal space — supports paths like /home/me/My Keys/id_rsa and custom commands like my-script %h
Ctrl+D Set global default (in password picker)
Esc Cancel (asks to discard if changed)

Picker fields: when the field is empty, Space opens the picker overlay. Once you start typing the picker becomes unreachable until you backspace the field clean. This preserves free-text editing while keeping the picker discoverable.

Discard prompt: pressing Esc on a dirty form surfaces a confirm dialog that follows the standard y/n/Esc contract (see Keybindings#Confirmation-dialogs). Y confirms discard, n / N / Esc returns to the form.

Confirmation dialogs

All confirmations follow the same contract:

Key Action
y / Y Confirm
n / N / Esc Cancel
any other key Ignored (by design — prevents stray keystrokes from cancelling)

Footer labels use action verbs for destructive operations (y delete | Esc keep, y sign | Esc skip, y purge | Esc keep) so the choice is explicit.

Tunnels Page

Reachable from the Host List with Tab (or Shift+Tab). Lists every tunnel directive from your SSH config across all hosts. Active tunnels show live throughput, channel events and the client processes using them in the detail panel on the right.

Key Action
j / k Navigate
PgDn / PgUp Page down / up
Enter Start / stop tunnel
a Add tunnel (opens host picker first)
e Edit selected tunnel
d Delete selected tunnel
s Cycle sort (most recent / alphabetical)
/ Search by alias or forward
n What's new overlay
: Jump
? Help
Tab / Shift+Tab Cycle to next / previous top tab (same cycle as the Host List)
Esc Clear search. Cancels only, never quits. First idle press surfaces a one-shot toast pointing to q (flag shared with the Host List, shows at most once per session)
q Quit

Tunnel Host Picker

Reachable from the Tunnels page with a when adding a tunnel. Filters the editable hosts (excluding hosts from included files) as you type. Letter keys append to the query; only / navigate the list.

Key Action
Type Filter hosts by alias or hostname
/ Navigate filtered list
Enter Pick host and open tunnel form
Backspace Pop one query character (closes picker when query is empty)
Esc Cancel and return to Tunnels page

Tunnel List (per host)

Reachable from the Host List with T. Manages tunnel directives for the selected host only.

Key Action
j / k Navigate
Enter Start / stop tunnel
a Add tunnel
e Edit tunnel
d Delete tunnel
PgDn / PgUp Page down / up
? Help
q / Esc Back

Provider List

Key Action
j / k Navigate
Enter Edit on a single config; expand/collapse on a multi-config provider
Space Toggle expand/collapse on a multi-config provider
a Add another config of the selected provider (prompts for labels when multi-config)
s Sync the selected config (or all configs of the provider when on a header)
d Remove the selected config (on a multi-config provider header, expand the group first to pick a specific config)
X Purge stale hosts
PgDn / PgUp Page down / up
q / Esc Back (cancels syncs)

Snippet Picker

Key Action
j / k Navigate
Enter Run snippet (captured output)
! Run snippet (raw terminal)
/ Search snippets
a Add snippet
e Edit snippet
d Delete snippet
PgDn / PgUp Page down / up
q / Esc Back

Snippet Output

Key Action
j / k Scroll
g / G Jump to top / bottom
n / N Next / previous host output
c Copy output
PgDn / PgUp Page down / up
Ctrl+C Cancel execution
? Help
q / Esc Close

File Explorer

Key Action
Tab Switch pane (local / remote)
j / k Navigate
Enter Open directory or copy selected file(s)
Backspace Go up one directory
Ctrl+Space Select / deselect file
Ctrl+A Select all / deselect all
. Toggle hidden files
s Cycle sort mode
R Refresh both panes
PgDn / PgUp Page down / up
Esc Close

Containers Tab

Reach the Containers tab from the Host List with Tab (or Shift+Tab from Tunnels). Every Docker or Podman container across every cached host is grouped per host under a divider row that carries the host alias. The detail panel on the right summarises the host (engine version, runtime, sync age and running/exited counts) when the cursor sits on a divider, and the container (image digest, restart policy, user, privileged flag, mounts, network, healthcheck, compose project and a tail of recent logs) when it sits on a container row.

On a container row

Key Action
Enter Drop into an interactive shell on the container (docker exec -it)
l Open the logs viewer (last 200 lines)
K Restart this container (confirms first)
Ctrl-K Restart every running member of this compose stack, one by one (confirms first)
S Stop this container (confirms first)
e Run a one-off command inside the container (prompt)

On a host divider

Key Action
K Restart every running container on this host, in order (confirms first)
S Stop every running container on this host, in order (confirms first)
r Refresh this host's listing
Space Fold / unfold the host group

Tab-wide

Key Action
j / k / / Navigate
PgDn / PgUp Page down / up
g / G Top / bottom
s Cycle sort (A-Z host / A-Z container)
v Toggle detail panel
/ Search containers, hosts and images
Esc Clear search. Cancels only, never quits. First idle press surfaces the shared quit-hint toast
R Refresh every cached host in parallel (max four at a time)
a Add a host to the cache from a picker
n What's new overlay
: Jump
? Help
Tab / Shift+Tab Cycle top tabs
q Quit

Logs viewer (l)

Key Action
j / k / / Scroll one line
PgDn / PgUp Page down / up
g / G Top / bottom
/ Open modeless incremental search (smart case: lowercase matches anywhere, uppercase is case-sensitive)
Tab / Shift+Tab Next / previous match (only while search is active)
r Refresh (re-fetch last 200 lines)
? Help
Esc Close active search, or close the viewer when no search is active
q Back to the Containers tab

Search is modeless: while it is open, every keystroke is treated as input. Type to refine the query, Tab / Shift+Tab to step through matches, / / Home / End / Backspace / Delete to edit, and Esc to exit search.

Exec prompt (e)

Single-line text input that captures an arbitrary command to run via docker exec -it inside the container under the cursor.

Key Action
Type Edit the command
Backspace Remove one character
Enter Submit the command and drop into the exec session
Esc Cancel and return to the Containers tab

Container Host Picker (a from the Containers tab)

Reachable with a. Lists hosts that are not yet in the container cache so the next refresh can include them. Letter keys append to the query; only / navigate.

Key Action
Type Filter hosts by alias or hostname
/ Navigate filtered list
Enter Add the highlighted host to the cache and return
Backspace Pop one query character (closes picker when query is empty)
Esc Cancel and return to the Containers tab

Per-host overlay (C from the Host List)

The original per-host container overlay is still available with C on the Host List. It opens a single-host modal scoped to the selected host, with the same Docker / Podman runtime detection. For multi-host workflows (refresh all, restart whole stacks, jump between hosts) prefer the Containers tab.

Key Action
j / k Navigate containers
s Start the highlighted container
x Stop the highlighted container (confirms first)
r Restart the highlighted container (confirms first)
R Refresh the listing
? Help
q / Esc Close the overlay

Keys Tab

Reachable from the Host List with Tab (cycles Hosts -> Tunnels -> Containers -> Keys). Lists every SSH key found in ~/.ssh/ with strength score, randomart fingerprint, encryption status, agent-loaded status, last-touch and a per-key activity sparkline. A Vault SSH cert TTL strip renders at the top when any host has a Vault SSH role configured. The linked-hosts panel below the hero lists every host that references the highlighted key.

Key Action
j / k / / / / Navigate keys
PgDn / PgUp Page down / up
g / Home First key
G / End Last key
Enter / c Copy the highlighted key's .pub to the clipboard
p Push the highlighted key to a multi-host picker
V Sign Vault SSH certificates for all signable hosts (same handler as the Host List)
/ Search keys by name
n What's new overlay
: Jump
Tab / Shift+Tab Cycle top tabs
? Help
Esc Cancel an in-flight push run. With no push running, the first idle press surfaces a one-shot toast pointing to q (flag shared with the Host List, Tunnels and Containers tabs)
q Quit

Search mode (after /)

Key Action
Type Refine the query
Backspace Remove one character (empty query stays open; Esc is the explicit close)
/ / / Navigate filtered list
PgDn / PgUp Page down / up
Enter Copy the highlighted match and exit search
Tab / Shift+Tab Exit search and cycle top tabs
Esc Close search

Key Push Picker

Reached from the Keys tab by pressing p. Multi-select host picker that lists every host from ~/.ssh/config. Hosts whose vault_ssh role is configured (or whose CertificateFile points into ~/.purple/certs/) render as [-] and are skipped during selection commands so signed-cert hosts never receive a static authorized_keys append.

Key Action
j / k / / Navigate hosts
PgDn / PgUp Page down / up
g / Home First host
G / End Last host
Space Toggle the host under the cursor (vault hosts notify and stay unselected)
a / A Toggle every eligible host on or off (skips vault hosts)
Enter Confirm selection and open the push confirm dialog. Empty selection notifies and stays
Esc Cancel and return to the Host List

Push confirm (Enter after the picker)

Key Action
y / Y Push the key to every committed host (per-host outcome streams back as a toast)
n / N / Esc Return to the picker with the selection intact

Theme Picker

Key Action
j / k Navigate up / down
Enter Apply selected theme
q / Esc Cancel and restore previous theme
? Help

Tag Picker

Key Action
j / k Navigate
Enter Filter by tag
PgDn / PgUp Page down / up
? Help
q / Esc / # Back

SSH Key List overlay (legacy K)

The Host List's K opens a read-only key list overlay carried over from earlier releases. The multi-action Keys tab is the preferred surface; this overlay stays for muscle memory.

Key Action
j / k Navigate keys
Enter Open the key detail view
? Help
K / q / Esc Close the overlay

Bulk Tag Editor

Select hosts with Space or Ctrl+Space, then press t to open the bulk tag editor.

Key Action
j / k Navigate tags
Space Cycle action: [~] leave as-is, [x] add to all, [ ] remove from all
+ Add a new tag
Enter Apply changes
u Undo (from host list, after apply)
? Help
q / Esc Cancel (asks to discard if changed)

Clone this wiki locally