Skip to main content

Interactive TUI

Launch Ante without a prompt to enter the interactive TUI:

ante

Overview

The TUI is built with ratatui and provides a rich chat interface directly in your terminal. It renders inline (up to 24 lines) and uses debounced rendering at approximately 100fps for smooth output.

Key features

Chat interface

The main view shows a conversation between you and the agent. Type your prompt in the input area and press Enter to send. The agent's responses stream in real-time with markdown rendering.

Markdown rendering includes LaTeX math: expressions in $...$, $$...$$, \(...\), or \[...\] are converted to a Unicode approximation for terminal display (\alphaα, x^2, \frac{1}{2}½), including multi-line layout for environments like aligned and pmatrix.

Tool approval

When the agent wants to execute a tool that requires approval (like Bash or Write), you'll see an approval prompt. Pick an option with the number keys or arrow keys + Enter:

  • Yes — allow this one call
  • Yes, allow … for this session — grant it for the rest of the run (scoped, not blanket)
  • Yes, always allow … (save to settings) — also persist an allow rule to settings.json
  • No — reject it; the agent will adjust its approach

Press Tab to preview the proposed diff or request details before deciding.

Diff view

When the agent proposes file edits, Ante switches to a fullscreen diff view on an alternate screen. You can review the exact changes before approving.

Model and provider selection

Use the built-in selectors to switch models or providers during a session without restarting.

Theme selection

Ante includes a theme system for consistent styling. Choose a theme through the theme dialog.

Slash commands

Type / to run built-in commands like /models, /resume, and /compact. See the full list in Slash Commands.

Goal-driven sessions

Use /goal <condition> to keep Ante working until a concrete success condition is satisfied. See Goal-Driven Sessions.

Session resume

Ante persists every session to disk. Use /resume to pick up a previous conversation where you left off.

How it works

  1. Type /resume to open the session picker
  2. Browse sessions scoped to the current working directory — each entry shows the first message, model, message count, and relative time
  3. Press Enter to select, or Esc to cancel

On resume, Ante:

  • Restores the full conversation history
  • Re-discovers agents and skills in the project directory
  • Refreshes system prompts and tool definitions (so new features are available)
  • Replays up to 200 recent events so the TUI rebuilds the conversation view

Sessions are stored in ~/.ante/sessions/{session_id}/ with atomic writes for crash safety.

tip

You can also resume from the CLI with ante --resume <SESSION_ID> (or -r) in either TUI or headless mode. The session ID is printed when a TUI session exits.

Keyboard shortcuts

Chat input

KeyAction
EnterSend message (or run a shell command in bash mode if the line starts with !)
Ctrl+Enter / Alt+Enter / Shift+EnterInsert newline
Up / DownMove cursor, then navigate history
TabComplete a command or file path; on empty input, accept the next-prompt suggestion
Shift+TabCycle permission mode: strictautoyolo. Takes effect immediately, including on a turn already running
Ctrl+RStart reverse-i-search through prompt history
Ctrl+CInterrupt the active turn; press twice in a row to exit (or use /exit)
Ctrl+SSteer queued messages into the running turn
Ctrl+VPaste text or an image from the clipboard
EscapeClose a popup, or interrupt the active turn when none is open

Line editing

The composer supports readline-style editing with multi-step undo/redo:

KeyAction
Ctrl+A / HomeJump to start of line
Ctrl+E / EndJump to end of line
Alt+B / Ctrl+←Move to previous word
Alt+F / Ctrl+→Move to next word
Ctrl+W / Alt+BackspaceDelete the previous word
Alt+DDelete the next word
Ctrl+DDelete the character under the cursor
Ctrl+KKill (cut) from the cursor to end of line
Ctrl+UKill (cut) from the start of line to the cursor
Ctrl+YYank (paste) the most recently killed text
Ctrl+ZUndo the last edit
Alt+ZRedo

Global shortcuts

KeyAction
Ctrl+TOpen theme dialog
Ctrl+PToggle focus between the chat input and the embedded terminal panel (opens it if closed; use /pty to close)
Ctrl+EStop running llama server (offline mode)
Ctrl+OToggle local inference log panel
Ctrl+K / Ctrl+JScroll inference log up/down

Diff view (fullscreen)

KeyAction
j / DownScroll down
k / UpScroll up
Page Down / Page UpPage scroll
Home / EndJump to top/bottom
q / EscapeClose diff view

Tool approval

KeyAction
/ (or k / j)Move between options
1 / 2 / 3 / 4Pick Yes / for-session / always-allow / No directly
y / EnterConfirm the highlighted option
EscReject the tool call
TabPreview the diff or request details

Reverse search (Ctrl+R mode)

KeyAction
Ctrl+RNext match
Ctrl+SPrevious match
EnterAccept match
Escape / Ctrl+GCancel search

@ mentions

Type @ in the input to reference files or directories. A file search dropdown appears as you type:

  • @path/to/file.rs — embeds the file contents in your message
  • @path/to/dir/ — embeds the directory tree listing
tip

If you paste multiple file paths, Ante auto-prefixes them with @ for convenience.

Bash mode

Prefix any input with ! to run it directly as a shell command instead of sending it to the agent:

!git status
!cargo build

The command runs in your own login shell ($SHELL -lc, falling back to /bin/sh) from the current working directory, with a 120-second timeout. Its output is shown in the conversation and also fed to the agent as context for the next turn, so you can run a command yourself and then ask the agent to act on what it printed.

note

Bash mode runs locally and is never gated by the permission system — typing ! is the authorization. This is separate from the agent's own Bash tool, which still goes through tool approval. A bare ! with nothing after it is sent as a normal message. Interactive programs (editors, pagers) won't work, since bash mode has no terminal input.

Terminal panel

The PTY tool drives a shared tmux session. /pty opens an embedded panel in the TUI showing that session live, and Ctrl+P switches focus between the chat input and the panel, so you can type into the same terminal the agent is driving.

/pty window attaches a native, full-fidelity terminal to the same session: a split of your current multiplexer when you are inside tmux or zellij, otherwise a new OS terminal window (kitty, WezTerm, Ghostty, GNOME Terminal, or Terminal.app). The embedded panel and the native view show the same session and can coexist. Running /pty window again closes a multiplexer split; OS windows are yours to close. When the TUI exits it kills its tmux session, which closes attached views.

Both forms require tmux.

Next-prompt suggestion

When a turn ends and the composer is empty, Ante predicts a likely follow-up and shows it as dim ghost text. Press Tab to accept it — the suggestion fills the input so you can edit it before sending. Any keystroke other than Tab dismisses it.

The prediction is generated off the critical path on the cheapest available model, so it never slows down your turn and silently does nothing if it can't produce one in time. It is on by default; set "ambient_prompt_suggestion": false in ~/.ante/settings.json to turn it off.

Spinner thinking phrase

While you type a longer prompt, Ante predicts a short, task-specific phrase and uses it as the spinner label for that turn instead of the generic rotating messages. Like the next-prompt suggestion, it runs best-effort on the cheapest model off the critical path, and alarming or destructive words are filtered out of the phrase. On by default; disable with "ambient_thinking_phrase": false in ~/.ante/settings.json.

Spinner tips

While the agent works, Ante shows a short tip under the spinner pointing at a feature you might not have discovered yet:

◆ Thinking
└─ Tip: Press ctrl+r to search your prompt history.

Tips come from a small curated list (features, keyboard shortcuts, workflow habits) — no model call is involved. Selection is deterministic: the least recently shown eligible tip wins, each tip has a cooldown measured in app restarts so it doesn't repeat session after session, and a tip shown once stays quiet for the rest of that session. The tip appears when the turn starts, stays until the turn ends, and never enters the transcript.

On by default; disable with "tips": false in ~/.ante/settings.json. Show history lives in ~/.ante/tip_history.json — delete it to reset the rotation.

CLI flags for TUI mode

ante --model claude-sonnet-4-6
ante --provider openai
ante --system-prompt "You are a Python expert"
ante --append-system-prompt "Always use type hints"
ante --tools Read Grep Glob
ante --include-tools PTY
ante --exclude-tools Bash Write
ante --yolo # skip all tool approvals
ante --resume ses_01ARZ3NDEK... # resume a previous session