TUI Guide
Single bubbletea textarea (internal/runtime/tui); slash commands open transient popups that close cleanly back to the prompt.
Shortcuts
| Key | Action |
|---|---|
Enter |
Send the current input. While a run is in flight it queues the text as a steer message instead, delivered to the running loop |
Alt+Enter |
Insert a newline |
/ |
Begin slash-command filter (popup picker — Up / Down to navigate, Tab / Enter to autocomplete into the textarea, Esc to dismiss) |
Up / Down |
Walk input history when the cursor is on the first / last line (per-session .cmd_history file) |
Esc |
Dismiss the command picker; while running, open the cancel popup — No, Yes (cancel), or Pause (keep pending) since v1.0.10. Cancel discards the pending task, pause stops the run and leaves it resumable through /pending. A run that has emitted nothing yet is cancelled straight away with no popup. Otherwise clear a non-empty input |
Ctrl+C |
While running, cancel the task outright (the user-cancel path — the pending task is discarded); otherwise print ctrl+c again to quit. A second Ctrl+C within 3 seconds quits the TUI |
Single-key toggles fire only when the input is empty and no run is active:
| Key | Action |
|---|---|
Shift+Tab |
Toggle auto mode (safe ↔ auto) |
Shift+F |
Toggle fast mode — the mode line shows fast while enabled |
Shift+U |
Live provider usage / balance |
Shift+W / Shift+S |
Cycle the session model backward / forward through auto and the registered models (not the same as w / s inside /model, which reorder the fallback list) |
Shift+A / Shift+D |
Cycle the reasoning level down / up; no effect while auto reasoning is on |
Shell command mode (Shift+T) was removed; ask the agent to run the command instead. The Shift+M model list was removed; use /model, which lists the registered models.
In list popups, Enter confirms the highlighted entry, d deletes it and t sets its tier where the popup offers those actions. Text-input popups use Ctrl+S to confirm, Enter for a newline, and Esc to cancel.
The TUI auto-tails the active session's action.log (foreign-process writes prefixed with ▌ in warn-purple). Single-session view only.
Modes
The current mode renders on the line below the input box, followed by the working directory. Since v1.0.19 the labels carry no brackets:
safe(default) — tool calls require user confirmation before executionauto— all tool calls are automatically approved (allowAll = true); sandbox and validator still applyfast— passesprovider.ModeFastthroughgo-llm-routerso supported provider backends request a faster service tier
The session's model and reasoning level (model/reasoning, or just the model while auto reasoning is on) sit on the right of the input box's bottom border. The session name is no longer shown there; the TUI prints Session ID: <short id> at startup and after each session switch instead.
Since v1.0.21 the transcript prints ⏵ Model(<model> <reasoning>) when a run picks its model and ⏵ Switch(<model> <reasoning>) when fallback moves to another one; the thinking line no longer repeats the model. Compaction shows as ⏵ Compact(tool history) or ⏵ Compact(conversation history). The reply footer is two lines: duration, tokens and finish time first, then model(quota)/reasoning and the session label. Finish times are shortened — 15:04 for today, 01-02 15:04 earlier this year, the full date otherwise; the web chat footers drop today's date and the current year the same way.
Auto mode is session-local and resets when the TUI restarts. Fast mode is process-local and is not persisted to config.json.
Slash commands
| Command | Description |
|---|---|
/model |
Two tabs since v1.0.22 (←/→ switches). model: registered models in fallback order (Enter picks the session model, d removes one, t sets its tier S / A / B / C / pass, w / s moves it up / down the fallback order) plus add (model from a provider). config: dispatch (a registered model or the TypeSafe beta dispatcher), reasoning (auto reasoning on / off, added in v1.0.18), summary, image, stt, tts; the image / stt / tts pickers group models into one tab per provider. Each action also works as a subcommand, e.g. /model add |
/mcp |
List MCP servers · add · per-server login (browser OAuth), reconnect, tools, per-tool permission, remove |
/session |
Renamed from /sessions in v1.0.22, and absorbs the former /bot. Session picker — Enter switches, d deletes; below the list, name / id / role edit the current session's display name, self id and persona. /session <self id> switches directly; /session name, /session id, /session role open one field directly |
/new |
Create a session (name conflict-checked) |
/skill |
Replaces /skills and /allow-skill in v1.0.22; two tabs. permission: every scanned skill with its source, Enter toggles it between always allow and ask in the global list (~/.config/agenvoy/allow_skill), o opens its folder; the project scope is no longer offered in the TUI (use POST /v1/allowlist). system: multi-select over the installable skills (code-reviewer, commit-generate, go-test-generate, readme-generate, seo-optimize, version-generate, wiki-generate); checked entries are cloned from github.com/agenvoy/skill-<name> into ~/.config/agenvoy/skills/.system_design/, unchecked ones are removed |
/compact |
Remove redundant exchanges from history through LLM analysis — confirmation required |
/reset |
Reset the current session — double confirmation; the summary is regenerated first, then history, task history and action.log are dropped |
/rule |
List / add / edit a session-prompt rule — title + description |
/note |
List / add / edit an operator note — title + description. Renamed from /knowledge in v0.35.4 |
/channel |
Enable / disable the Telegram or Discord bot (token validated on enable). Once either is enabled, admin sets the relay for new-chat verification codes. Subcommands: telegram discord admin |
/config |
Searchable settings: Startup on login (launchd agent on macOS, systemd user unit on Linux), Reply language, Output dir |
/schedule |
Recurring (cron) and one-shot (task) entries in one list — Enter fires one now, d deletes it. Add or edit schedules by asking the agent |
/sched-<name> |
Manually dispatch an existing scheduler skill body. Filtered by session — only skills bound to the current session's task / cron entries appear |
/update |
Fetch the latest release, rebuild, and quit the TUI (re-attach with agen) |
/resume |
Reload the visible transcript — last 100 entries from action.log |
/log |
Follow the raw daemon.log through $PAGER (less +F); Ctrl-C stops following |
/usage |
Per-model token usage — current session above, global below — 24 h / 7 d / 28 d |
/pending |
List / resume interrupted tasks — error recovery and ask_user resume |
/key |
Update / rotate a keychain value, picked from the recorded key list |
/clear |
Clear the visible transcript — memory untouched |
/exit |
Exit the TUI (daemon keeps running); /quit is an alias |
There is no /switch; use /session. There is no /dangerous; delete a session with d in /session and mark skills in /skill → permission. v1.0.22 renamed /sessions → /session and /skills → /skill, folded /bot into /session and /allow-skill into /skill; popups now open full-screen and switch tabs with ←/→. There is no /memory; use /compact and /reset. There are no /discord, /telegram or /admin-channel; use /channel. There is no /startup; use /config. There are no /cron or /task; use /schedule.
There is no /kuradb. The setup / update / reconnect wizard was removed in v0.35.0 — KuraDB is installed on its own and registered like any other MCP server through /mcp.
There is no /voice, removed in v0.34.3. Inbound voice handling is no longer a toggle: it follows whichever speech-to-text model /model stt selects, and outbound voice replies are no longer synthesized by the channels themselves — generate_audio writes a file instead, and since v1.0.13 an .ogg / .oga / .opus file attached to a Telegram reply is delivered as a voice note.
There is no /sudo. Elevated mode was removed in v0.32.10 in favor of per-request authorization — a restricted path or a write outside $HOME raises one prompt for that call and asks for the system password there. See the Security page.
Loaded skills appear in the same picker below the built-in commands, labeled with their source; scheduler skills (/sched-<name>) follow them.