Keymap cheatsheet

Every key the cockpit handles, in one place. The in-app ? overlay is the canonical source — this page mirrors it for offline reference.

Global (works everywhere)

KeyEffect
TabNext screen
Shift+TabPrevious screen
19Jump to S1 – S9
0Jump to S10 (Pins)
Alt+1Alt+4Jump to S11 – S14 (Manifest, Watchlist, FeedTimeline, Pubsub)
Ctrl+NOpen node picker (also :nodes)
[ / ]Previous / next tab on the bottom log pane (Errors / Warn / Info / Debug / Bee HTTP / bee::http / Cockpit). Persisted across launches.
+ / -Grow / shrink the bottom log pane height by one line. Clamped to 4..24. Persisted across launches.
Shift+↑ / Shift+↓Scroll the active log tab back / forward by one line. Pauses auto-tail; the title shows a paused N ↑ indicator.
Shift+PgUp / Shift+PgDnSame, ten lines at a time.
Shift+EndResume auto-tail (snap back to the latest entries).
?Toggle help overlay
:Open command bar
qqQuit — double-tap within ~1.5 s. First q shows a footer hint; second q confirms. :q also works for an unguarded quit.
Ctrl+C / Ctrl+DQuit immediately. Escape hatch if the cockpit ever stops responding to qq.
EscClose help / drill / command bar / cancel current input. Also cancels a pending q (so you can back out without committing).

Screen-specific keys

S1 / S3 / S5 / S7 / S8 are read-only — they have no screen-specific keys.

S2 — Stamps + bucket drill

KeyEffect
↑↓ / j kMove row selection
Drill into selected batch (bucket histogram + worst-N)
EscClose drill

S4 — Lottery + rchash

KeyEffect
rFire / re-fire rchash benchmark

S6 — Peers + bin saturation + drill

KeyEffect
↑↓ / j kMove cursor in peer table
PgUp / PgDnPage through peers
HomeJump to first peer
Drill into selected peer (4 endpoints in parallel)
EscClose drill

S9 — Tags / uploads

KeyEffect
↑↓ / j kScroll one row
PgUp / PgDnScroll ten rows
HomeBack to top

S11 — Pins

KeyEffect
↑↓ / j kMove cursor through the pinned-reference list
Drill into selected pin (pin detail)
EscClose drill

S12 — Manifests

KeyEffect
↑↓ / j kMove cursor through the Mantaray tree
Toggle expand / load the cursored fork (lazy fetch)

The cursored row's reference (target hex, or fork self-address) is rendered on a selected: detail line above the footer for terminal-native click-drag copy — there's no explicit copy key.

S13 — Watchlist

KeyEffect
↑↓ / j kMove cursor through :watch-ref daemons

S14 — Feed Timeline

KeyEffect
↑↓ / j kMove cursor through the feed update history
PgUp / PgDnPage ten entries

S15 — Pubsub watch

KeyEffect
↑↓ / j kMove cursor through the merged PSS / GSOC timeline
PgUp / PgDnPage ten entries
cClear the timeline (subscriptions stay open)

The command bar

: opens it. Once open:

KeyEffect
Run the typed command
EscClose without running
BackspaceDelete left
any printableAppend to command buffer

See The :command bar for what each command does.

Conventions

  • The cockpit prefers vim-style keys (j/k, :command, Esc-to-close) but every nav key has an arrow-key + named-key alias. You don't have to know vim.
  • No Ctrl+ chords for normal navigation. The cockpit reserves Ctrl-keys for terminal escape sequences (Ctrl+C exits via SIGINT, etc.). All screen actions are single keystrokes.
  • Esc is universal close. Whatever's most-recently opened — drill / help / command bar — is what Esc closes. The hierarchy is: command bar > help overlay > drill > nothing.

Why qq instead of just q

A bee-tui session is something operators leave running in the background while doing other work. A single q was found to be too easy to misclick — especially when navigating in from another shell. The double-tap guard means a stray keystroke costs you a footer hint, not a session.

If you really want unguarded quit, use :q from the command bar. Ctrl+C and Ctrl+D are also unguarded — they remain the canonical "I want out now" escape hatches and bypass the double-tap entirely.

Discovering keys

Open ? on any screen. The overlay shows the global keymap plus the keys for the current screen. So pressing ? on S6 lists peer-drill keys; pressing ? on S9 lists scroll keys. No memorisation needed.

The node picker overlay

Ctrl+N (or :nodes) opens a centred overlay listing every [[nodes]] entry from config.toml. The cursor lands on the currently active node:

KeyEffect
↑↓ / j kMove cursor through configured nodes
Switch to the cursored node (rebuilds API client + watch hub; no-op if cursor is already on the active node)
Esc / Ctrl+NClose without switching

The active node is marked and the default = true entry is marked . After switching, the metadata line at the top of the cockpit updates to show the new profile and endpoint; any :watch-ref daemons and pubsub subscriptions that were running against the previous node are cancelled (they don't follow the context — re-issue the verbs against the new node if you want them there too).

The help overlay

? opens a centred overlay with two pages:

KeyEffect
?Toggle the overlay
Tab / Shift+TabSwitch between Keys and Verbs pages
Esc / ? / qClose

The Keys page mirrors this cheatsheet (global keys + the screen-specific block for whichever screen is active). The Verbs page lists every :verb grouped by category (navigate, inspect, stamps & economics, uploads, durability, pubsub, mining, diagnostics, cockpit) so the entire surface is discoverable without leaving the cockpit.

What's not bound

The cockpit deliberately leaves these unbound:

  • Up/down arrow for screen jumpTab (or the digit keys) is the screen-jump path. Arrow keys are reserved for in-screen navigation.
  • / for search — there's no global text search yet. Most screens are too short to need one, and where they aren't (S6 peers, S9 tags), you can scroll with j/k/PgDn/Home.