Skip to content

Using the TUI

Colours, Markdown Streaming and Scrollback

fast-agent streams reasoning, assistant responses and tool calls to the console, rendering markdown while protecting the scrollback buffer.

ANSI colours are used throughout to match your existing preferences. OSC133 and prominent final response markers are used to assist scrollback navigation.

The apply_patch tool (supplied, and exposed by default to > GPT-5.2 models) has highlighting applied during streaming.

Tools can be labelled as generating python code for syntax highlighting (especially useful when integrating with Pydantic Monty)

Shell Integration

You can run a shell command with ! - for example ! git status. You can enter an interactive shell by typing ! Enter. Child shells get FAST_AGENT_SHELL_CHILD=1. Type exit to return to fast-agent.

File names and paths can be automatically completed with either Tab or Ctrl+Space.

File Previews

When the internal read_text_file tool is used, by default 5 lines of the file are displayed. Adjust this with shell_execution.output_display_lines, SHELL_EXECUTION__OUTPUT_DISPLAY_LINES, or fast-agent config shell.

Use /history detail to review the full contents of a turn and tool calls.

Image Viewer

Images received from the Assistant or tool calls are rendered to the console on the final turn. Local images that you attach to a user message are previewed in the user panel beneath the attachment link text.

Recording format

The image in this asciinema capture uses halfblock rendering so it can be recorded as plain terminal cells. In a real terminal, fast-agent can use higher-resolution terminal image protocols when your terminal supports them.

The image-generation recording was captured with terminal image rendering enabled and the halfcell backend, so asciinema can replay ANSI/Unicode cells instead of terminal-specific image protocols. The Markdown image link and source URL remain visible in the recording as a fallback.

Paste and Attach Images / Documents

You can attach images and documents using /attach or by using the ^<uri|file> syntax. The indicator in the status bar shows a count of attachments, and is green if they are found, red if there is an error. Press F10 to clear all attachments.

You can paste images directly with Alt+V. In terminals that reserve that chord, Ctrl+Alt+V is also bound.

Local image attachments, including pasted clipboard images, are displayed inline after your message when terminal image rendering is enabled. Remote image URLs remain as links.

Model Feature Toggles

Use the function keys in the prompt to cycle model-specific runtime features:

Key Action
F6 Cycle reasoning effort
F7 Cycle text verbosity
F8 Toggle or cycle web search
F9 Toggle or cycle web fetch

These toggles apply when the selected model/provider supports the feature.

Prompt Shortcuts

Key Action
Ctrl+Enter Submit in multiline mode
Ctrl+Space Open completion menu
Tab Complete path/command, or cycle completions
Shift+Tab Cycle completions backwards; otherwise cycle service tier when available
Ctrl+T Toggle multiline mode
Ctrl+E Edit the current buffer in $EDITOR
Ctrl+Y Copy the last assistant or shell output
Ctrl+L Redraw the screen
Ctrl+U Clear the input buffer
Ctrl+C Cancel the current operation; press twice quickly to exit
Ctrl+D End the prompt session

Markdown Theming

Markdown element colours are themeable with logger.theme_file; fenced-code rendering uses logger.code_theme.

The default Rich theme is equivalent to:

fast-agent-theme.ini
[styles]
markdown.h1 = bold yellow underline
markdown.h2 = yellow underline
markdown.h3 = bold yellow
markdown.h4 = italic yellow
markdown.h5 = italic yellow
markdown.h6 = dim yellow

markdown.link = bright_blue underline
markdown.link_url = bright_blue underline

markdown.code = bright_green on black
markdown.block_quote = blue

markdown.table.border = yellow
markdown.table.header = bright_yellow
markdown.hr = yellow dim

Save a modified copy and point logger.theme_file at it to override these styles.

Changing Settings

Use fast-agent config to configure your preferences:

  • fast-agent config display edits console display, markdown rendering, streaming, and prompt mark settings.
  • fast-agent config shell edits shell execution and file preview settings.

Environment variables

The table below lists the matching environment variable for each setting. In general, any nested setting can be overridden by uppercasing the path and joining segments with double underscores; for example, logger.code_theme becomes LOGGER__CODE_THEME.

TUI environment variables

Symbol Variable Purpose
FAST_AGENT_SHELL_CHILD_ENV FAST_AGENT_SHELL_CHILD Set to 1 in child shells opened from the TUI with !.
Setting Environment variable Type Default Description
logger.streaming LOGGER__STREAMING Literal['markdown', 'plain', 'none'] markdown Streaming renderer for assistant responses.
logger.enable_prompt_marks LOGGER__ENABLE_PROMPT_MARKS bool True Emit OSC 133 prompt marks for supported terminals.
logger.progress_display LOGGER__PROGRESS_DISPLAY bool True Enable or disable progress display.
logger.show_chat LOGGER__SHOW_CHAT bool True Show user and assistant messages on the console.
logger.show_tools LOGGER__SHOW_TOOLS bool True Show MCP server tool calls on the console.
logger.truncate_tools LOGGER__TRUNCATE_TOOLS bool True Truncate long tool call display.
logger.theme_file LOGGER__THEME_FILE str \| None None Optional Rich theme file for console styles.
logger.code_theme LOGGER__CODE_THEME str native Pygments/Rich syntax theme for Markdown code rendering.
logger.render_fences_with_syntax LOGGER__RENDER_FENCES_WITH_SYNTAX bool True Render Markdown code fences with Rich Syntax.
logger.code_word_wrap LOGGER__CODE_WORD_WRAP bool True Wrap Syntax-rendered code blocks instead of cropping.
logger.apply_patch_preview_max_lines LOGGER__APPLY_PATCH_PREVIEW_MAX_LINES int \| None 120 Maximum lines to show in apply_patch previews.
logger.terminal_images.enabled LOGGER__TERMINAL_IMAGES__ENABLED bool True Render image content in capable terminals.
logger.terminal_images.backend LOGGER__TERMINAL_IMAGES__BACKEND Literal['auto', 'textual-image', 'kitty', 'sixel', 'halfcell', 'unicode', 'none'] auto Terminal image backend to use.
logger.terminal_images.width LOGGER__TERMINAL_IMAGES__WIDTH TerminalImageSize 80% Image render width.
logger.terminal_images.height LOGGER__TERMINAL_IMAGES__HEIGHT TerminalImageSize auto Image render height.
shell_execution.output_display_lines SHELL_EXECUTION__OUTPUT_DISPLAY_LINES int \| None 5 Maximum shell/read_text_file lines to display.
shell_execution.show_bash SHELL_EXECUTION__SHOW_BASH bool True Show shell command output on the console.
shell_execution.interactive_use_pty SHELL_EXECUTION__INTERACTIVE_USE_PTY bool True Use a PTY for interactive prompt shell commands.
shell_execution.timeout_seconds SHELL_EXECUTION__TIMEOUT_SECONDS int 90 Maximum seconds without command output before termination.
shell_execution.warning_interval_seconds SHELL_EXECUTION__WARNING_INTERVAL_SECONDS int 30 Show timeout warnings every N seconds.
tui.completion_menu_reserved_lines TUI__COMPLETION_MENU_RESERVED_LINES int 6 Prompt-toolkit lines reserved below the input for completion menus.

Detailed Configuration Reference

See the Configuration Reference for the full set of settings.