Keyboard Shortcuts
CLI
| Shortcut | Action |
|---|---|
| Ctrl+] | Detach from session (session keeps running) |
TUI picker (relay or relay tui)
Sessions are grouped by working directory, as in the web sidebar. Rows are either a directory header or a session.
| Key | Action |
|---|---|
↑/↓ or j/k | Move between rows |
← or h | On a session, go to its directory; on an open directory, fold it |
→ or l | On a folded directory, unfold it; on an open one, go to its first session |
Space | Fold or unfold the selected directory |
z | Fold every directory, or unfold all when all are folded |
1-9 | Select session N (the numbers shown in the list) |
Enter | Attach to the selected session, or fold/unfold a directory |
c | New shell in the selected directory, then attach |
C | Run a command in the selected directory, then attach. Plain commands are split into words; anything with shell syntax (&&, pipes, $VAR, globs) runs through your shell |
s | Sort menu: r recent, a active, c created, n name. Picking the current sort flips its direction |
f | Filter menu: toggle r running and c closed sessions |
, | Rename selected session (Ctrl+U clears the field, Esc cancels) |
x | Stop selected session |
r | Refresh session list |
g / G | Jump to top / bottom |
q or Esc | Quit |
| Mouse | Click a directory to fold it, click a session to select it, click the selected session to attach, wheel to move |
Sort, filter, and folded directories are saved in ~/.relay-tty/tui.json and restored the next time the TUI opens.
TUI attached (prefix key, default Ctrl+B)
While attached, every key goes to the program except the prefix. Change the prefix with prefix = C-a in ~/.config/relay-tty/relayrc. Mouse events pass through to the program.
| Key | Action |
|---|---|
Ctrl+B n / p | Next / previous running session in picker order, including sessions in folded directories |
Ctrl+B 1-9 | Jump to session N (the numbers the picker shows) |
Ctrl+B c | New shell session in the current session's directory, then switch to it |
Ctrl+B , | Rename the current session (pins the title) |
Ctrl+B s or Esc | Back to the picker |
Ctrl+B d | Detach and quit the TUI (session keeps running) |
Ctrl+B x | Interrupt the foreground process (SIGINT) |
Ctrl+B k | Clear scrollback |
Ctrl+B a | Actions menu: interrupt, clear, rename, stop session |
Ctrl+B ? | Show this key list on the status row |
Ctrl+B Ctrl+B | Send a literal Ctrl+B to the program |
Web UI — All Views
| Shortcut | Action |
|---|---|
| Cmd+Shift+N (macOS) / Ctrl+Shift+N | Create new session in current project directory |
Web UI — Session View
| Shortcut | Action |
|---|---|
| Standard terminal shortcuts | Passed through to the remote shell |
| Shift+Enter | Insert newline without submitting (for programs like Claude Code that support extended key reporting) |
| Cmd+K (macOS) / Ctrl+Shift+K | Clear scrollback buffer |
| Ctrl+Shift+F | Toggle terminal search |
| Cmd+= / Cmd+- | Increase/decrease font size |
| Pinch-to-zoom | Increase/decrease font size (touch devices) |
Clearing the scrollback resets both the on-screen buffer and the server-side ring buffer for the session, so the reported output size drops back toward zero and the cleared scrollback stays cleared across reconnects and other connected devices. The delta-resume offset is preserved, so reconnecting clients still recover instantly.
Font size changes send SIGWINCH — the terminal columns and rows adjust to fit the viewport at the new font size. Scroll position is preserved.
Web UI — Grid & Lanes Views
| Shortcut | Action |
|---|---|
| Click sidebar session | Select that session's cell without leaving the view |
| Double-click sidebar session | Select and zoom that session's cell (same as double-clicking the cell) |
| Click cell | Select cell for keyboard input |
| Double-click cell | Zoom/expand cell |
| Cmd+= / Cmd+- | Increase/decrease font size of selected cell |
| Pinch-to-zoom | Increase/decrease font size (touch devices) |
| Escape | Unzoom, then deselect |
Picking a session in the sidebar reveals it in the view you are already in rather than navigating to the single-session page. In Grid and Lanes it unzooms whatever cell was zoomed and selects the picked session's cell; in Tiles it focuses that session's pane, opening one beside the focused pane if none is showing it. Double-clicking a sidebar session additionally zooms the cell in Grid and Lanes, replacing any cell that was already zoomed; in Tiles a double-click behaves like a single click. If a project, recency, or inactive filter was hiding the session, only the filter responsible for hiding it is relaxed, so the rest of your filtering survives.
Font size is saved per session and shared across all views (grid, lanes, and single-session). Every font size change sends SIGWINCH to recompute terminal dimensions — the container stays fixed while columns and rows adjust to fit the new cell size.
Mobile toolbar
The mobile toolbar provides button equivalents for common actions:
| Button | Action |
|---|---|
| Keyboard icon | Open/close scratchpad |
| Search icon | Open terminal search |
| Microphone icon | Start voice input |
| Folder icon | Open file browser |
| Share icon | Open share dialog |