- Full Obsidian vault content - Host configs (ice, grizzley, ubuntu, proxmox, truenas, panda, hyte) - Media stack documentation - Traefik HA setup - Automation scripts - Bachelor party planning
5.9 KiB
type, agent, source, scraped, content_hash
| type | agent | source | scraped | content_hash |
|---|---|---|---|---|
| agent-doc | OpenCode | https://opencode.ai/docs/tui/ | 2026-04-28T21:02:07.042364+00:00 | 8275383c |
TUI
Using the OpenCode terminal user interface.
OpenCode provides an interactive terminal interface or TUI for working on your projects with an LLM.
Running OpenCode starts the TUI for the current directory.
opencode
Or you can start it for a specific working directory.
opencode /path/to/project
Once youâre in the TUI, you can prompt it with a message.
Give me a quick summary of the codebase.
File references
You can reference files in your messages using @. This does a fuzzy file search in the current working directory.
How is auth handled in @packages/functions/src/api/index.ts?
The content of the file is added to the conversation automatically.
Bash commands
Start a message with ! to run a shell command.
!ls -la
The output of the command is added to the conversation as a tool result.
Commands
When using the OpenCode TUI, you can type / followed by a command name to quickly execute actions. For example:
/help
Most commands also have keybind using ctrl+x as the leader key, where ctrl+x is the default leader key. Learn more.
Here are all available slash commands:
connect
Add a provider to OpenCode. Allows you to select from available providers and add their API keys.
/connect
compact
Compact the current session. Alias: /summarize
/compact
Keybind: ctrl+x c
details
Toggle tool execution details.
/details
Keybind: ctrl+x d
editor
Open external editor for composing messages. Uses the editor set in your EDITOR environment variable. Learn more.
/editor
Keybind: ctrl+x e
exit
Exit OpenCode. Aliases: /quit, /q
/exit
Keybind: ctrl+x q
export
Export current conversation to Markdown and open in your default editor. Uses the editor set in your EDITOR environment variable. Learn more.
/export
Keybind: ctrl+x x
help
Show the help dialog.
/help
Keybind: ctrl+x h
init
Guided setup for creating or updating AGENTS.md. Learn more.
/init
Keybind: ctrl+x i
models
List available models.
/models
Keybind: ctrl+x m
new
Start a new session. Alias: /clear
/new
Keybind: ctrl+x n
redo
Redo a previously undone message. Only available after using /undo.
Internally, this uses Git to manage the file changes. So your project needs to be a Git repository.
/redo
Keybind: ctrl+x r
sessions
List and switch between sessions. Aliases: /resume, /continue
/sessions
Keybind: ctrl+x l
share
Share current session. Learn more.
/share
Keybind: ctrl+x s
themes
List available themes.
/themes
Keybind: ctrl+x t
thinking
Toggle the visibility of thinking/reasoning blocks in the conversation. When enabled, you can see the modelâs reasoning process for models that support extended thinking.
/thinking
undo
Undo last message in the conversation. Removes the most recent user message, all subsequent responses, and any file changes.
Internally, this uses Git to manage the file changes. So your project needs to be a Git repository.
/undo
Keybind: ctrl+x u
unshare
Unshare current session. Learn more.
/unshare
Editor setup
Both the /editor and /export commands use the editor specified in your EDITOR environment variable.
- Linux/macOS
- Windows (CMD)
- Windows (PowerShell)
# Example for nano or vimexport EDITOR=nanoexport EDITOR=vim
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.# include --waitexport EDITOR="code --wait"
To make it permanent, add this to your shell profile; ~/.bashrc, ~/.zshrc, etc.
Popular editor options include:
- code - Visual Studio Code
- cursor - Cursor
- windsurf - Windsurf
- nvim - Neovim editor
- vim - Vim editor
- nano - Nano editor
- notepad - Windows Notepad
- subl - Sublime Text
Some editors need command-line arguments to run in blocking mode. The --wait flag makes the editor process block until closed.
Configure
You can customize TUI behavior through tui.json (or tui.jsonc).
{ "$schema": "https://opencode.ai/tui.json", "theme": "opencode", "keybinds": { "leader": "ctrl+x" }, "scroll_speed": 3, "scroll_acceleration": { "enabled": true }, "diff_style": "auto", "mouse": true}
This is separate from opencode.json, which configures server/runtime behavior.
Options
- theme - Sets your UI theme. Learn more.
- keybinds - Customizes keyboard shortcuts. Learn more.
- scroll_acceleration.enabled - Enable macOS-style scroll acceleration for smooth, natural scrolling. When enabled, scroll speed increases with rapid scrolling gestures and stays precise for slower movements. This setting takes precedence over scroll_speed and overrides it when enabled.
- scroll_speed - Controls how fast the TUI scrolls when using scroll commands (minimum: 0.001, supports decimal values). Defaults to 3. Note: This is ignored if scroll_acceleration.enabled is set to true.
- diff_style - Controls diff rendering. "auto" adapts to terminal width, "stacked" always shows a single-column layout.
- mouse - Enable or disable mouse capture in the TUI (default: true). When disabled, the terminalâs native mouse selection/scrolling behavior is preserved.
Use OPENCODE_TUI_CONFIG to load a custom TUI config path.
Customization
You can customize various aspects of the TUI view using the command palette (ctrl+x h or /help). These settings persist across restarts.
Username display
Toggle whether your username appears in chat messages. Access this through:
- Command palette: Search for âusernameâ or âhide usernameâ
- The setting persists automatically and will be remembered across TUI sessions