Typing / opens the command list above the input and narrows it as you go, so these are discoverable without having to remember them.
$ raunen # TUI in the current directory $ raunen -m ollama/qwen3:8b # pick a model for this run $ raunen 'what does main.go do?' # one-shot; clean stdout $ raunen --continue # resume the last session $ raunen --sessions # list saved sessions $ raunen --running # list running instances $ raunen -config # print the config path
/model | choose a model from a list |
/model <provider/model> | switch directly |
/favourite | pin or unpin the current model (/fav) |
/branch | choose a branch from a list (/br) |
/branch <name> | check it out; -b <name> creates it |
/status | model, context, ladder and endpoints on one screen |
/companion | your dragon's level and what fed it |
/prestige | start a new climb once your dragon is fully grown |
/providers | list configured endpoints |
/key <provider> | add an API key |
/mcp | list MCP servers and their tools |
/sessions | list saved sessions |
/resume <id> | pick up a saved session |
/compact [what to keep] | summarise the conversation to win back context |
/clear | start a new session, keeping the old one |
/help | show all of this |
/quit | exit |
enter | send |
shift+enter / alt+enter | newline without sending |
tab | cycle mode, or take the highlighted completion |
@ | mark a file or folder in the prompt |
โ / โ | move through the completions while typing / or @ |
esc | cancel the running turn, or drop a pending reply |
ctrl+c | cancel if working, otherwise quit |
pgup / pgdn | scroll the transcript |
shift+โ / shift+โ | scroll by a line |
y / n | answer an approval prompt |
click a reply | quote it in the input |
The status bar already says which branch you are on. /branch changes it without leaving the conversation, using the same list and the same keys as /model.
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ search โบ 4 branches โ โ โฏ โข main โ โ fix-login โ โ spike/streaming โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Branches are ordered by their last commit rather than alphabetically โ the one you want next is nearly always one you touched recently. Local branches come first, then any that exist only on a remote, under the short name checking one out would create. Typing a name nobody has yet offers to create it, always as the last entry so it is never picked by accident.
The conversation survives the switch. The files under discussion are the same files. The switch is noted into the history the model reads, so it knows not to trust what it read a moment ago โ and nothing is stashed, committed or forced on your behalf. A switch git refuses fails with git's own message.
@ completes the files and folders around you, so a question can point at what it is about โ explain @internal/ui/ui.go โ rather than describing it and hoping the agent looks in the right place. A bare @ lists the top of the tree and tab on a folder steps into it.
The list is what git considers part of the project: tracked files plus anything untracked that is not ignored, so a .gitignored build directory never appears. Outside a repository it is the tree itself, minus the usual heavy directories.
Nothing is inlined. The mention goes to the model as the path it names โ the agent has tools to read what it was pointed at, and choosing what to read out of a folder is exactly the sort of thing it is for.