Features¶
Slash commands¶
Commands are registered in commands.py (CommandProcessor.commands) and surfaced
through the input overlay: type / to open a fuzzy-filtered menu (ESC to close,
TAB to cycle, Enter to run). Aliases are collapsed in the menu, so /exit and its
alias /quit appear once.
The registry currently exposes 54 entries (including aliases and :-suffixed
subcommands). By area:
| Area | Commands |
|---|---|
| Core | /help, /clear, /exit (alias /quit), /config, /keybindings |
| Modes | /plan, /chat, /build |
| Conversation | /compact, /context, /recap, /export, /diff, /focus, /fast, /image |
| Models & cost | /model, /stats (alias /cost) |
| Theme | /theme |
| Queue | /queue, /queue:clear, /queue:toggle |
| Goals (autonomous) | /goal, /goal:status, /goal:cancel, /goal:history |
| Sessions & agents | /agents, /attach, /bg, /history |
| Knowledge graph | /graph, /kb, /impact, /codemap, /search |
| Project & SDD | /init, /sdd, /memory, /add-dir, /prompts, /review, /test, /simplify |
| MCP & tools | /mcp, /mcp:reload, /tools, /skills, /resources |
| Ops | /logs, /cron, /pipeline, /maintenance |
Some commands depend on optional backend endpoints and degrade or report an error when the backend does not expose them — see Known Issues.
/model¶
Backed by the agent-utilities multi-model registry (GET /models):
/modelor/model list— render the configured models in a table (id, name, provider, tier, tags, default marker, per-1M cost)./model show— show full metadata for the active model (falls back to the registry default when no override is set)./model set <id>— pick a model id for subsequent turns. The id is stored on the app and propagated byAgentClientas anx-agent-model-idheader so the backend can override the registry default for the session.
Zero-cost / local models render as $0.00 / $0.00 rather than -.
/goal¶
Starts an autonomous goal loop. The objective string is parsed locally by the
dependency-free goal.py parser — /goal <objective> until <end_state> without
<constraints> — and submitted to the backend. See Goal Command.
Keyboard shortcuts¶
Application bindings (app.py::BINDINGS):
| Binding | Action |
|---|---|
Ctrl+C |
Interrupt the current operation |
Ctrl+D |
Exit session (with confirmation) |
Ctrl+A |
Select all |
Ctrl+Q |
Quit |
Ctrl+H |
Show help |
Ctrl+U / Ctrl+Y |
Clear / restore input |
Ctrl+G |
Open input in $EDITOR |
Ctrl+R |
Reverse history search |
Alt+P |
Model picker |
Alt+T |
Toggle extended thinking |
Alt+O |
Toggle fast mode |
Alt+D |
Service dashboard |
Shift+Tab |
Cycle reasoning effort / mode |
Esc Esc |
Rewind (experimental) |
Main-screen bindings (screens/main.py::BINDINGS):
| Binding | Action |
|---|---|
Ctrl+B |
Toggle workflow sidebar |
Ctrl+L |
Clear conversation |
Ctrl+V |
Toggle server-log panel |
Input prefixes¶
!— run the rest of the line as a shell command (e.g.!ls -la).@— fuzzy file-mention autocomplete (e.g.@app.py), via the file suggestions overlay.
Headless mode¶
Run a single prompt without the TUI, streaming output to stdout:
agent-terminal-ui --headless --prompt "summarize the open PRs"
agent-terminal-ui --headless --prompt "run the tests" --model claude-opus-4-8
No Textual widget tree is loaded, so a headless instance is lightweight (~30MB) — suited to running many concurrent, non-interactive sessions against one shared backend. See Architecture.
Conversation UI¶
- Structured message blocks: user messages, agent responses (streaming Markdown), and expandable tool-call blocks with status-colored borders.
- New blocks fade in on mount (
tui/animation.py); motion is disabled automatically underTEXTUAL_ANIMATIONS=none/ reduced-motion environments. - The conversation prunes to
max_conversation_widgets(default 50) to bound memory; full history is persisted in SQLite (see Session Management). - Themes: default
tokyo-night; switch live with/theme <name>across Textual's built-in themes, or set the startup theme viaAGENT_THEME.