TUI panels
The Manage section of the TUI is nine full panels, and each one is driven almost entirely by single letter keys. This page is the reference for what every key does in every panel, plus the composer controls that sit next to the chat editor.
Open the section with /manage, or jump straight to a panel with its slash command (/tasks, /skills, /memory, /mcp, /integrations, /swarm, /llm, /import, /privacy). /telegram opens the Integrations panel.
Tab / Shift+Tab (or Ctrl+B) step through every surface: chat, the Observe tabs, then the Manage tabs. In chat with the sidebar visible, Tab moves focus to the sidebar first; Ctrl+B always advances one step. Ctrl+G opens the menu, where each destination has a one-letter chord (for example Ctrl+G then y for Integrations, b for Swarm, l for LLM).
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, modal, form or search first; pressed again (or with nothing open) it takes you back to the chat.
- r refreshes; a, where present, toggles auto-refresh.
- Panels keep the chat editor unfocused, which is why bare letters work as commands. Typing / opens the slash palette instead, except where a panel uses / for its own search (the Tasks list and the Skills hub).
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) |
| p | Cycle the Cloud model list’s price filter: all, free, paid (Cloud pane only) |
| 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 |
| R | Restart the local model server (reloads the model) |
| a | Add a model from Hugging Face that the catalog does not carry (switches to the Local pane first; on the Fallback pane a adds a link instead) |
| N | Reopen “tell me when it lands?” for a download in flight |
| 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 pane
On the Local pane, Enter does the next obvious thing for the selected row, and the shared keys above cover the rest. In v0.6.5 some local-model actions have no key in the TUI. Use the CLI for them:
| To | Run |
|---|---|
| Delete a downloaded model | atomic-agent models remove <id> |
| Pick the GPU for the managed daemon | atomic-agent models use-device <auto|cpu|device> (list devices with atomic-agent models devices) |
| Pull a model, with its vision projector | atomic-agent models pull <id> --mmproj |
| Stop a background download | atomic-agent models downloads cancel <id> |
See CLI & TUI for the full models command.
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.
Integrations
The Integrations panel is the one place for third-party credentials and channels. It lists, in order: Composio, GitHub, Telegram, Discord and Atomic Mail. Each row shows its status; open one to see its fields and setup steps. Open the panel with /integrations (or /telegram).
List
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| Enter | Open the integration’s detail view |
| r | Refresh |
Detail
| Key | Action |
|---|---|
| j / k, Up / Down | Move between fields |
| e | Edit the selected text field. On an on/off field such as Channel, e toggles it |
| Enter | Toggle an on/off field such as Channel |
| d | Clear the selected field |
| Esc | Back to the list |
Each integration also has its own verbs, shown in its detail view:
| Integration | Keys |
|---|---|
| Telegram | p open the 60-second owner-pairing window · s restart the channel |
| Discord | s restart the channel |
| GitHub | v verify the token · i import the token from the gh CLI |
| Atomic Mail | r register an inbox · v resend the verification code · x forget the inbox |
The Telegram setup flow is in the Telegram guide.
Edit
| Key | Action |
|---|---|
| Printable keys | Type into the field |
| Backspace | Delete the last character |
| Enter | Save |
| Esc | Cancel |
While you edit, every key types into the field, so a pasted key full of letters never triggers a hotkey. The value is shown in plain text while you type and masked once saved, so avoid screen-sharing during setup. Saved secrets go to <stateDir>/.env.
Swarm
The Swarm panel lists every Telegram and Discord bot this agent runs, and lets you add more, each with its own token, owner and role. Open it with /swarm. The two primary bots (the Telegram and Discord rows from Integrations) appear here for the full picture but are read-only: edit, pair, restart or switch them in Integrations.
List
| Key | Action |
|---|---|
| j / k, Up / Down | Move the cursor |
| a | Add a bot |
| e | Edit the selected bot |
| Enter or x | Switch the selected bot on or off |
| p | Pair an owner (Telegram bots; the bot must be on). Discord bots do not pair: set the owner id with e |
| s | Restart the selected bot |
| d | Remove the selected bot (opens a confirm) |
| r | Refresh |
Add a bot
The add form walks through five steps: kind, label, role, token, owner.
| Key | Action |
|---|---|
| Left / Right, Tab | Switch the kind between Telegram and Discord (kind step) |
| t / d | Pick Telegram / Discord (kind step) |
| Printable keys | Type into the current step |
| Backspace | Delete the last character |
| Enter | Next step; on the owner step, add the bot |
| Esc | Go back |
Edit and remove
In the edit view, j / k move between the label, role, owner and token fields, Enter or e starts typing a new value, Enter saves it and Esc backs out. The remove confirm takes y; any other key cancels.
As in Integrations, a token is visible while you type it and masked once saved.
Privacy
| Key | Action |
|---|---|
| a | Toggle anonymous analytics and error reporting |
| r | Refresh the persisted snapshot |
Anonymous analytics are on by default. From the editor, /privacy analytics on|off|status (or /analytics on|off|status) does the same as a. You can also set "analytics": { "enabled": false } in config.json.
Approvals moved to the composer
The Privacy panel no longer sets the approval level: the 1 to 5 keys and /privacy level / /privacy approve were removed. There are now two separate controls:
- For this session: the coding-mode chip in the composer.
/mode(or Ctrl+G then M) opens it: default, plan, auto and bypass permissions. It changes approvals for the current session only and never writesconfig.json. See Coding mode below. - Persisted:
agent.approvalLevelinconfig.json(1 to 5, default 1). The default coding mode follows this level.
See Approvals for what each level covers.
Import
The Import panel migrates from Claude Code, Codex, Hermes, OpenClaw, Pi or Oh-My-Pi, bringing whatever that source supports (see the Import guide). 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.
Composer controls
These controls live next to the chat editor rather than in a Manage panel. Each is a slash command, and several have a chip in the composer or a key.
Coding mode: /mode
/mode opens the coding-mode menu; /mode <name> sets one directly. Ctrl+G then M and clicking the chip open the same menu.
| Mode | What it does |
|---|---|
| default | Approvals follow agent.approvalLevel from config |
| plan | The agent reads and proposes; every tool that would change something is refused |
| auto | File writes inside the working directory stop asking (level 2, or your configured level if it is higher) |
| bypass permissions | Nothing asks (level 5) for the rest of the session. Hardline shell-guard rules still block |
The mode applies to the current session only. Switching back to default restores your configured level.
Where it runs: /runmode
/runmode opens the switch between local, cloud and fusion (Ctrl+G then 1, 2, 3 pick them from the menu). /runmode local|cloud|fusion sets one directly, /runmode status shows the current setup, /runmode swap trades the orchestrator and worker roles in Fusion, and /runmode workers N sets the Fusion worker count. The choice is saved to config.json.
Messages while a turn runs: /steer and /queue
When you press Enter while the agent is working, the message either steers the running turn (the default) or is queued to run after it.
- Ctrl+T flips between steer and queue. The choice is saved.
/steer <message>sends one message into the running turn. Bare/steermakes Enter steer./queue <message>parks one message for later. Bare/queuelists what is parked,/queue clearempties it, and/queue modemakes Enter queue.
A second window: /window
/window (or Ctrl+N) opens a new terminal window running Atomic Agent in the same working directory.
Other commands
/sidebarhides or shows the session sidebar./contextshows where the session’s context window went./mouse on|off|statustoggles mouse support (off restores the terminal’s drag-to-select)./theme <name>or/theme listswitches the UI theme./onboardingruns first-time setup again, keeping your providers, keys, sessions and memory./reportfiles a GitHub issue with your logs attached; you choose what to include./uninstallremoves Atomic Agent and all of its data from this machine. It is permanent.
/help lists every slash command.
Where to go next
- CLI & TUI — the surrounding TUI: Run, Observe, sidebar, and global shortcuts.
- Telegram guide: setting up the Telegram channel from Integrations.
- Skills — what skills are and how installation works.
- Approvals — what each rung of the approval ladder allows.