Documentation

Terminal UI

The interactive TUI — keybindings, slash commands, panels, completion, and background tasks.

Edit on GitHub

The TUI is Nyzhi’s primary interface. It’s a full terminal application with keybindings, tab completion, panels, selectors, and background task management.

Interaction Modes

The TUI operates in one of four modes at any time:

ModeWhat’s happening
InputYou’re typing a prompt
StreamingThe agent is generating a response
AwaitingApprovalA tool needs your permission to run
AwaitingUserQuestionThe agent is asking you a question

Keyboard shortcuts change behavior depending on the current mode.

Input

Basic Input

Type your prompt and press Enter to send.

Multiline Input

  • Alt+Enter — insert a newline
  • Shift+Enter — insert a newline (Kitty terminal protocol)

Special Prefixes

PrefixWhat it does
!<command>Run a shell command and inject its output
& <prompt>Dispatch as a background task
@pathInject a file or directory as context

External Editor

Type /editor to open your prompt in $VISUAL or $EDITOR (falls back to vi).

Keybindings

Core

KeyAction
EnterSubmit prompt or accept completion
EscDismiss completion / clear search / clear input
Ctrl+CExit
Ctrl+LClear session display
KeyAction
Up / DownHistory or selector navigation
Ctrl+RReverse history search
Ctrl+A / Ctrl+EMove to line start / end
Ctrl+N / Ctrl+PNext / previous search match

Editing

KeyAction
Ctrl+UClear to line start
Ctrl+WDelete previous word

Panels and Selectors

KeyAction
Ctrl+KCommand palette
Ctrl+TTheme selector
Ctrl+,Settings panel

Background Tasks

KeyAction
Ctrl+BMove current streaming task to background
Ctrl+F (double press)Kill all background tasks

Tab Completion

Completion triggers automatically in three contexts:

TriggerContextWhat it completes
/Slash commandAvailable slash commands
@At mentionFile and directory paths (fuzzy)
/image Image pathFile paths
KeyAction
TabOpen/cycle forward through completions
Shift+TabCycle backward
EscClose completion menu
EnterAccept selected completion

Panels

The TUI includes built-in panels for organizing your workflow:

  • Plan panel — view and edit the session plan
  • Todo panel — track task progress
  • Settings panel — adjust configuration in-session
  • Session picker — browse and resume sessions
  • Command palette — quick access to all commands
  • Model/Provider/Theme/Accent selectors — switch on the fly

Slash Commands Overview

Type / to see all available commands. Here are the categories:

Utility

/help, /clear, /quit, /exit, /status, /commands, /settings

Provider & Model

/model, /connect, /login, /trust, /thinking, /voice

Session & Context

/sessions, /resume, /session delete, /session rename, /context, /compact, /retry, /search, /export, /handoff

Project Tooling

/index, /mcp, /hooks, /memory, /docs, /verify, /notify

Theme & UX

/theme, /accent, /bg

Planning & Execution

/autopilot, /deep, /qa, /review, /refactor, /walkthrough, /quick, /map, /profile, /init-project

Teams & Subagents

/team, /teams-config, /subagent-config

Worktree & Undo

/worktree, /worktree create, /worktree list, /worktree merge, /worktree remove, /undo, /undo all, /undo git

Misc

/agents, /analytics, /bug, /changes, /diff, /doctor, /editor, /image, /init, /learn, /notepad, /plan, /stop, /todo

See also: Slash Commands Reference for the full list with descriptions.

Command Types

Slash commands are classified by execution type:

TypeBehavior
InstantRuns locally, no model turn
StreamingSafeCan run while the agent is streaming
PromptDispatches a prompt to the agent

Background Tasks

You can send work to the background and keep typing:

  1. While the agent is streaming, press Ctrl+B to move it to background
  2. Start a new prompt — the background task continues
  3. Type & <prompt> to dispatch directly as a background task
  4. Double-press Ctrl+F to kill all background tasks

Background tasks are tracked by ID, label, and start time. Use the message queue for prompt buffering while the agent is busy.

Configuration

TUI-specific settings:

[tui]
markdown = true         # render markdown in responses
streaming = true        # stream tokens as they arrive
theme = "dark"          # "dark" | "light"
accent = "copper"       # accent color
show_thinking = true    # show model reasoning blocks
output_style = "normal" # "normal" | "verbose" | "minimal" | "structured"

[tui.notify]
bell = true             # terminal bell on completion
desktop = false         # desktop notifications
min_duration_ms = 5000  # notification threshold

Next Steps