commands

kage exposes two surfaces over the same command registry: a vim-style ex line (:) and an inline slash palette (/). Both share the same parser, the same per-arg autocomplete, and the same handlers; pick whichever feels right for the moment.

opening the command line

In Normal mode, press : to open the ex line on the status row.

In Insert mode with an empty input card, press / to open the slash palette inline above the input card. The palette lists every available command with its description and argument hint.

In either surface:

  • Tab extends to the longest common prefix; press Tab again to cycle.
  • Down / Up walk the candidate list when the popup is open.
  • Enter submits.
  • Esc dismisses the popup first, then the line.

Invalid input keeps the line open with an inline error below it. Editing clears the error.

built-in commands

CommandWhat it does
:quit / :qExit the TUI
:cancelCancel the current turn
:model <provider:id>Switch the active model
:fold allFold every block
:unfold allUnfold every block
:theme listShow bundled and user themes
:theme set <name>Switch theme
:theme currentPrint the active theme name
`:mouse onoff
:helpList every command in a readable form
:keybindings / :keysList active key bindings (config/plugin/reserved)
:eventsList events plugins can hook with kage.on
:compactRun a compaction pass right now
:settingsOpen the settings dialog (theme/model/mouse/..)
:treeBrowse the session fork forest
:attach [path] / :imgAttach an image to the next prompt: a file path, or the OS clipboard image when no path is given
:clearClear the conversation buffer

plugin commands

Plugins register their own commands via kage.register_command. They appear in the slash palette tagged [plugin] and accept the same argument grammar as built-ins. See plugins / lua api.