Terminal UI
The interactive Empryo TUI: keybindings, the chat input, tabs, panels, the status bar, forge modes, mouse support, and the embedded Neovim editor.
Run empryo in a repository and the full terminal UI opens: a chat thread, a live status bar, up to five tabs, and dozens of panels — all keyboard-driven, all over a live Genome. It is built on OpenTUI (React for the terminal).
Keybindings
Global shortcuts work from the chat view. When a panel or modal is open, only Ctrl+C stays live.
| Keys | Action |
|---|---|
Ctrl+K / Ctrl+H | Open the command palette (search every command). |
Ctrl+L | Switch the LLM model. |
Ctrl+D | Cycle the forge mode. |
Ctrl+S | Browse and install skills. |
Ctrl+G | Git menu. |
Ctrl+P | Browse and restore sessions. |
Ctrl+E | Toggle the editor panel. |
Ctrl+T | New tab. |
Ctrl+W | Close the current tab. |
Ctrl+N | New session (saves the current one first). |
Ctrl+1…Ctrl+9 | Switch to tab N. |
Ctrl+[ / Ctrl+] | Previous / next tab. |
Ctrl+B | Rewind to the previous checkpoint (code + conversation). |
Ctrl+F | Step forward / return to live. |
Ctrl+X | Abort the running generation. |
Ctrl+O | Expand or collapse all code and reasoning blocks. |
Ctrl+C | Copy the selection, or exit when there is none. |
Ctrl+Shift+C | Copy the selection (never exits). |
Meta+R | Open the error log (Alt+R on Linux). |
The checkpoint keys are the time machine: every prompt is a git-tagged checkpoint, so Ctrl+B / Ctrl+F move code and chat together.
Chat input
| Keys | Action |
|---|---|
Enter | Submit the prompt. |
↑ / ↓ | Prompt history (when the cursor is on the first / last row). |
Tab / Shift+Tab | Cycle tabs (when no autocomplete is open). |
Ctrl+R | Fuzzy-search prompt history. |
Ctrl+V / Alt+V | Paste an image from the clipboard as an attachment. |
Alt+S / Alt+P | Stash the current draft / pop the most recent one. |
@ | Mention a file — opens a fuzzy file picker. |
/ | Start a slash command, with inline autocomplete. |
Forge modes
The mode shapes how the agent works. Cycle with Ctrl+D or set one with /mode. The active mode persists per project.
| Mode | Behavior |
|---|---|
default | Implements directly. |
architect | Read-only. Designs and analyzes: current architecture, proposal, risks, recommendation. |
socratic | Read-only. Investigates, then asks probing questions before implementing. |
challenge | Read-only. A constructive adversary that challenges assumptions. |
plan | Read-only research and planning. Produces a plan and confirms before executing. |
auto | Continuous autonomous execution. Destructive actions still confirm. |
Read-only modes keep the full tool set but refuse edits and shell writes at execution time.
Tabs
Up to five tabs run side by side, each its own conversation lane on the same repository. They share the Genome and memory and coordinate file edits through cross-tab claims so two tabs never clobber the same file silently.
Ctrl+Topens a tab (names it first);/tab newworks too.Ctrl+Wcloses the current tab; a busy tab asks first. The last tab can't be closed.Ctrl+1–9,Ctrl+[/Ctrl+], or clicking the tab bar switch tabs./tab renamerenames; drag ormoveTabreorders.
All tabs persist into one session, each owning a slice — reopen and your tabs come back.
Panels and modals
Everything beyond the chat thread is a panel. Open the command palette (Ctrl+K) to reach any of them by name, or use the slash command shown.
Ctrl+L or /models — pick a provider and model, with live availability.
Ctrl+K — fuzzy-search every command and panel.
Ctrl+P or /session history — browse and restore past sessions.
Ctrl+S or /skills — search, install, and load skills.
Ctrl+G or /git — status, diff, commit, branch, stash, and more.
/router — assign a different model to each task slot.
/mcp — connected MCP servers, their tools, and reconnect.
/lsp — install, restart, and inspect language servers.
/genome — the code graph status: files, symbols, ranking.
/memory — browse, pin, and clear cross-session memory.
/status or /context — tokens, context window, dispatch, system health.
/terminals — a floating terminal manager.
There are over thirty panels in all — the full set is reachable from the command palette and the command reference.
Status bar
The header and footer keep live telemetry in view:
- Model — provider and model, with a
proxy›orgateway›prefix when routed. - Git — branch with a
*dirty marker, green when clean, amber when dirty. - Mode — the active forge mode badge (single-tab) or per-tab badges (multi-tab).
- Context bar — a gauge of context-window usage that turns warning-toned past 50% and red past 85%, a compaction spinner, and a checkpoint-browsing indicator.
- Cost — running session cost (or
FREE/Localfor local models), greener when cache hits are high.
The footer also rotates keybinding hints and discovery tips.
Mouse support
- Click and drag to select text; the selection is copied (OSC-52 + native clipboard). Right-click copies and clears.
- The scroll wheel scrolls the chat with momentum and sticks to the bottom on new output.
- Click the tab bar to switch, close, or open tabs.
- Click inside the editor pane to focus it; click the chat to focus back.
Embedded Neovim
Ctrl+E opens a real Neovim instance beside the chat, connected over msgpack-RPC. It is an opt-in add-on (empryo addon install neovim).
- The agent and the editor share state: AI edits trigger a buffer reload, and the agent can drive the editor through the editor tool — navigate, rename, format, read diagnostics, and more.
/editor splitcycles the editor/chat width (40/50/60/70%);/nvim-configswitches between Empryo's bundled config and your own.- When the editor is focused, keystrokes go straight to Neovim;
Ctrl+EandCtrl+Cbring focus back to chat.