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 → x², \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
- Type
/resumeto open the session picker - Browse sessions scoped to the current working directory — each entry shows the first message, model, message count, and relative time
- 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.
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
| Key | Action |
|---|---|
Enter | Send message (or run a shell command in bash mode if the line starts with !) |
Ctrl+Enter / Alt+Enter / Shift+Enter | Insert newline |
Up / Down | Move cursor, then navigate history |
Tab | Complete a command or file path; on empty input, accept the next-prompt suggestion |
Shift+Tab | Cycle permission mode: strict → auto → yolo. Takes effect immediately, including on a turn already running |
Ctrl+R | Start reverse-i-search through prompt history |
Ctrl+C | Interrupt the active turn; press twice in a row to exit (or use /exit) |
Ctrl+S | Steer queued messages into the running turn |
Ctrl+V | Paste text or an image from the clipboard |
Escape | Close a popup, or interrupt the active turn when none is open |
Line editing
The composer supports readline-style editing with multi-step undo/redo:
| Key | Action |
|---|---|
Ctrl+A / Home | Jump to start of line |
Ctrl+E / End | Jump to end of line |
Alt+B / Ctrl+← | Move to previous word |
Alt+F / Ctrl+→ | Move to next word |
Ctrl+W / Alt+Backspace | Delete the previous word |
Alt+D | Delete the next word |
Ctrl+D | Delete the character under the cursor |
Ctrl+K | Kill (cut) from the cursor to end of line |
Ctrl+U | Kill (cut) from the start of line to the cursor |
Ctrl+Y | Yank (paste) the most recently killed text |
Ctrl+Z | Undo the last edit |
Alt+Z | Redo |
Global shortcuts
| Key | Action |
|---|---|
Ctrl+T | Open theme dialog |
Ctrl+P | Toggle focus between the chat input and the embedded terminal panel (opens it if closed; use /pty to close) |
Ctrl+E | Stop running llama server (offline mode) |
Ctrl+O | Toggle local inference log panel |
Ctrl+K / Ctrl+J | Scroll inference log up/down |
Diff view (fullscreen)
| Key | Action |
|---|---|
j / Down | Scroll down |
k / Up | Scroll up |
Page Down / Page Up | Page scroll |
Home / End | Jump to top/bottom |
q / Escape | Close diff view |
Tool approval
| Key | Action |
|---|---|
↑ / ↓ (or k / j) | Move between options |
1 / 2 / 3 / 4 | Pick Yes / for-session / always-allow / No directly |
y / Enter | Confirm the highlighted option |
Esc | Reject the tool call |
Tab | Preview the diff or request details |
Reverse search (Ctrl+R mode)
| Key | Action |
|---|---|
Ctrl+R | Next match |
Ctrl+S | Previous match |
Enter | Accept match |
Escape / Ctrl+G | Cancel 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
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.
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