Documentation v1.0.22

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:

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.

中文