TUI panels
The Manage section of the TUI is eight full panels, and each one is driven almost entirely by single letter keys. There are no menus and no mouse. This page is the reference for what every key does in every panel.
Open the section with /manage, or jump straight to a panel with its slash command (/skills, /mcp, /tasks, /memory, /llm, /telegram, /import, /privacy). Tab and Shift+Tab cycle between panels.
Conventions
A few things hold across every panel:
- j / k and Up / Down move the row cursor. They are interchangeable everywhere.
- Enter triggers the row’s primary action.
- Esc closes a detail view, a modal, or a form — never the panel itself.
- r refreshes; a, where present, toggles auto-refresh.
- Panels keep the chat editor unfocused, which is why bare letters work as commands. Typing / anywhere opens the slash palette instead.
Skills
The Skills panel lists what is installed and, through its built-in hub, browses and installs new skills from ClawHub and your configured GitHub taps.
List
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| Enter | Open the skill’s detail view |
| e | Enable or disable the selected skill (writes skills.disabled) |
| i | Open the remote skill hub |
| d | Uninstall the selected skill — opens a confirm |
| f | Cycle the filter (all / enabled / disabled) |
| a | Toggle auto-refresh |
| r | Refresh the list |
Detail
| Key | Action |
|---|---|
| Esc | Close the detail view |
| e | Enable or disable the displayed skill |
| r | Refresh |
Hub
i from the list opens the hub: a browsable catalog of remote skills with download counts for ClawHub entries.
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| / | Focus the search field |
| Enter | Open the selected skill’s pre-install card |
| r | Re-browse the catalog |
| Esc | Return to the installed list |
While the search field is focused, every printable key types into the query, Enter runs the search, and Esc unfocuses without searching. Navigation hotkeys are swallowed so a stray j never jumps the list mid-query.
Pre-install card
The card shows the skill’s SKILL.md before anything is written to disk.
| Key | Action |
|---|---|
| i, y, or Enter | Install the skill |
| n or Esc | Close the card, return to the hub |
| j / k, Up / Down | Scroll the body one line |
| PageUp / PageDown | Scroll the body one screen |
Confirms
Both confirm modals take the same two answers, and both swallow every other key so a stray hotkey cannot act behind them.
| Key | Action |
|---|---|
| y or Enter | Confirm |
| n or Esc | Cancel |
The install confirm only appears when the scan flags the skill as risky — typically because it carries runnable scripts. Pressing y there is your acknowledgment of that risk, the same thing --acknowledge-risk does on the CLI. The uninstall confirm appears on every d and ignores input while the delete is in flight.
MCP
The MCP panel is a live view of your configured servers, and it edits them: n adds a server and d removes one.
List
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| Enter | Open the server’s detail view |
| n | Open the add-server modal |
| d, Delete, or Backspace | Remove the selected server — opens a confirm |
| a | Toggle auto-refresh |
| r | Refresh |
Detail
| Key | Action |
|---|---|
| Esc | Close the detail view |
| j / k, Up / Down | Move the cursor within the sub-tab |
| 1 | Jump to the Tools sub-tab |
| 2 | Jump to the Resources sub-tab |
| 3 | Jump to the Prompts sub-tab |
| [ / ], Left / Right | Cycle sub-tabs |
| d | Remove this server — opens a confirm |
| r | Refresh |
Add-server modal
The modal hands the keyboard to a text editor, so there are no letter hotkeys inside it. Paste one MCP server config as JSON — either a bare server object or the { "mcpServers": { ... } } envelope that Claude Desktop and Cursor use. A top-level command plus args, with no transport wrapper, is accepted too and promoted to stdio.
| Key | Action |
|---|---|
| Enter | Submit the JSON |
| Esc | Cancel |
Because paste delivers its whole payload before the next Enter is read, multi-line JSON pastes cleanly.
Remove confirm
| Key | Action |
|---|---|
| y or Enter | Remove the server |
| n or Esc | Cancel |
Keys are ignored while the removal is in flight, so a repeated y cannot queue a second write to config.json.
Tasks
List
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| Enter | Open the task’s detail view |
| n | Open the create-task form |
| c | Cancel the selected task |
| R | Run the selected task now |
| / | Open the search field |
| f | Cycle the status filter |
| a | Toggle auto-refresh |
| r | Refresh |
| Esc | Clear an active search query |
While the search field is open, printable keys type into the query, Enter commits it and closes the caret, and Esc cancels and wipes the query. Every keypress is swallowed there, so list hotkeys never fire mid-search.
Detail
| Key | Action |
|---|---|
| Esc | Close the detail view |
| o | Open the task’s session |
| R | Run the task now |
| c | Cancel the task (same no-confirm rule as the list) |
| r | Refresh |
Create form
Navigation here deliberately uses Tab rather than arrows for field-to-field movement, and the arrows are reserved for the schedule-kind selector.
| Key | Action |
|---|---|
| Tab / Shift+Tab | Move to the next / previous field |
| Enter | Move to the next field; submit when the cursor is on the submit row |
| Ctrl+Enter | Submit from anywhere in the form |
| Left / Right | Cycle the schedule kind (cron / interval / at) while that field is focused |
| Esc | Discard the form |
Every other printable key types into the focused text field. The schedule preview revalidates as you type, so a bad cron expression shows up before you submit.
Cancel confirm
| Key | Action |
|---|---|
| y | Cancel the task |
| n or Esc | Keep it |
Memory
The Memory panel is read-only: it browses channels, follows links between notes, and expands a note’s graph neighbours. Nothing here writes.
List
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| Enter | Open the row’s detail view. On a links row it jumps to the source note instead |
| 1–6 | Jump directly to that channel |
| [ / ] | Cycle to the previous / next channel |
| f | Cycle the archive filter (notes channel only) |
| a | Toggle auto-refresh |
| r | Refresh the current channel |
The digits map onto the channel list in display order, so 1 is always the first channel available in your build, not a fixed name.
Detail
| Key | Action |
|---|---|
| Esc | Close the detail view |
| g | Expand the note’s graph neighbours (notes channel only) |
| Enter | Follow the selected link to its neighbouring note (notes channel only) |
| r | Refresh |
Enter walks the note’s outgoing links first, then its incoming ones, then anything g has already expanded — so pressing g before Enter widens what you can reach.
LLM
The LLM tab has four panes, not one: local, cloud, external, and fallback, in that left-to-right order. [ / ] and Left / Right switch between them, and the cursor position is remembered per pane.
Shared keys
These work in every pane.
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| Enter | Trigger the row’s primary action |
| [ / ], Left / Right | Switch pane |
| f | Focus the inline model filter (switches to the Cloud pane first) |
| n | Add a provider (switches to the Cloud pane first) |
| c | Configure the selected provider (switches to the Cloud pane first) |
| e | Activate the provider’s embedding model |
| E | Toggle the embedding master switch |
| s | Start or stop the managed daemon |
| B | Pull or update the llama.cpp backend |
| L | Jump to the LLM logs tab |
| r | Refresh providers and local models |
| / | Open the slash palette |
While the inline model filter is focused, printable keys edit the query, Up / Down walk the filtered results, Enter selects, and Esc unfocuses while keeping the text.
Local models pane
The local pane has extra keys that only apply to catalog rows:
| Key | Action |
|---|---|
| Enter | Do the next obvious thing for the row: pull it, pull a missing mmproj, make it active, or start the daemon |
| g | Pull the GGUF only, skipping the mmproj — a fast text-only smoke test |
| i | Open the row’s detail view |
| d | Delete the downloaded model — opens a confirm |
| G | Cycle the daemon’s GPU device preference |
| q or Esc | Close the detail view |
Remove confirms take y to delete and n or Esc to cancel. The chat-model and embedding-model confirms are kept strictly separate, so a y meant for one can never delete the other.
Fallback pane
The fallback chain is editable from this pane, and that is worth pausing on: the chain decides where a prompt goes when the head provider fails. Reordering or adding a link can send your next prompt to a different vendor than you expect.
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| < / > | Move the selected link up / down in priority |
| a or Enter | Open the add-link picker |
| d | Remove the selected link |
| l | Toggle whether the local model is appended as the last resort |
In the add-link picker, j / k and Up / Down move, Enter adds the highlighted provider, and Esc cancels. Every other key is swallowed while the picker is open.
Telegram
| Key | Action |
|---|---|
| Enter | Advance the connect flow by exactly one step |
| e | Enable or disable the Telegram channel |
| t | Open the masked token prompt |
| T | Clear the stored bot token |
| o | Start owner pairing |
| O | Clear the stored owner |
| r | Restart the bridge |
| R | Refresh the panel |
| a | Toggle the advanced view |
Token prompt
The token prompt is masked, and it is the only way the token is ever entered — it is never taken as a command argument, so it cannot land in your shell history.
| Key | Action |
|---|---|
| Enter | Submit the token |
| Esc | Cancel |
| Backspace | Delete the last character |
Every printable key types into the masked buffer.
Pairing
While pairing is running, Esc cancels it and no other key does anything. Once the result is shown, any key dismisses it.
Privacy
| Key | Action |
|---|---|
| 1–5 | Jump the approval ladder straight to that level |
| Left / Right | Step the ladder one level down / up |
| a | Toggle anonymous analytics and error reporting |
| r | Refresh the persisted snapshot |
Every key is ignored while a write is in flight, so a double-press cannot stack two level changes.
You can also drive this from the editor: /privacy level 1..5, and /privacy approve on|off as aliases for levels 5 and 1. See Approvals for what each level covers.
Import
The Import panel migrates sessions and tasks from Hermes or OpenClaw. It runs in three stages: configure, preview, execute.
Configure form
Navigation uses Up / Down rather than Tab on purpose — the global Tab keeps cycling between panels, so the form never traps you.
| Key | Action |
|---|---|
| Up / Down | Move between fields |
| Enter | Toggle the focused switch, flip the source, or start the dry run from the run row |
| Space, Left / Right | Flip the focused toggle or switch the source |
| Ctrl+Enter | Start the dry run from anywhere in the form |
| Backspace | Delete the last character in a text field |
Letters type into the two text fields, source and limit. On toggle and source rows, stray letters are swallowed rather than typed.
Preview
The dry run reports what would be imported without writing anything.
| Key | Action |
|---|---|
| y or Enter | Execute the import for real |
| n, e, or Esc | Discard and return to the form |
While the import is running every key is swallowed. When it finishes, Enter or Esc resets the panel.
Where to go next
- CLI & TUI — the surrounding TUI: Run, Observe, sidebar, and global shortcuts.
- Skills — what skills are and how installation works.
- Approvals — what each rung of the approval ladder allows.