Commands are registered in a single declarative table, so the REPL, the Textual
TUI, and
chat_once all recognize the same names and aliases.
Control
/stop is the only command that is meaningful during a turn. The REPL
intercepts it in the input producer (the consumer only drains between turns); the
TUI cancels the graph-loop future. Both paths then reset the Langfuse handler,
because a cancelled turn skips LangChain’s error callbacks and would otherwise
leave unended spans that corrupt every later turn’s tracing.
Session
/thread with no argument opens a picker scoped to the active flavour, so a
research-flavour thread is invisible while you are chatting in chat. The
picker offers a + New thread row; pressing Esc there cancels and keeps your
current thread rather than starting one.
Deleting a thread removes its index entry and its checkpointed conversation
permanently. It never touches long-term memory. Deleting the thread you are
currently in starts a fresh one.
/new, Ctrl+N, /thread new, and the picker’s + New thread row all funnel
through the same code path and print the same confirmation line, so they are
interchangeable.Thread titles
After a thread’s first interactive turn, a background model call generates a short name for it. If that call fails or the turn was headless, the title falls back to a truncated first message. Titles are what the thread picker shows.Config
/settings only rebinds the part of the session you actually changed. Opening
the panel and closing it without edits triggers no rebuild.
A /model or /settings provider switch made inside a thread overrides the
agent’s pinned model, persists to the thread index, and is restored when you
resume that thread later. /model always lists the active provider’s
catalog, not a global list.
/think warns rather than blocks when the current model does not advertise
reasoning support: the setting is applied and simply has no effect. The TUI
header shows the current effort, and Ctrl+T cycles it.
Tools
Skill and memory listings
/skills tags each entry with where it came from: bundled (shipped),
workspace (this project’s ./skills/), or plugin (surfaced by an installed
plugin).
/memory lists each project-memory fact with its name, its description, and the
layer it lives on. Only
layer 0 is writable, so forget deletes from the current project or worktree and
never from an inherited parent repo.
Plugins
/plugins install <src> [ref] uses a staged-then-confirm flow rather than a
blocking prompt: the install is staged, a consent manifest is rendered, and you
run /plugins confirm (or /plugins confirm safe to install with the dangerous
parts inert) or /plugins cancel.
Transcript
Keyboard equivalents in the TUI
Commands that work mid-turn
Most commands dispatch between turns. A small set is safe to open while a turn is still running, so a popup appears instantly over the chat instead of queueing behind the model:This split is deliberate: reading state mid-turn is always safe, mutating the
session under a live graph invocation is not.
Retired commands
Typing one of these prints a one-line redirect instead of doing anything:/flavour is the notable one. A flavour scopes which agents are visible, which
threads exist, and which shared memory is in play, and it is fixed for the life of
the process. To move to a different flavour, relaunch with --flavour or use the
launch-time picker. Within a flavour, use /agent, /thread, and /user to move
around.
Where commands are recognized
Commands marked interactive-only (
/new, /voice, /img, /mcp, /skills,
/memory, /scratch, /sidebar) are not available in a headless run, because
there is no session to mutate.
Next steps
Terminal UI
The transcript, side pane, status footer, and modals these commands drive.
Headless runs
What changes when there is no interactive session.
CLI reference
Launch flags, entry points, and the dispatch rule.