--- title: "Config" --- Most settings can also be changed from the OpenCode TUI. Press `Ctrl+P`, then select **Open settings**. OpenCode TUI settings dialog The default CLI config location is: ```text ~/.config/opencode/cli.json ``` Set `$XDG_CONFIG_HOME` to use a different config directory: ```text $XDG_CONFIG_HOME/opencode/cli.json ``` ## Theme Set the theme and color mode: ```json title="cli.json" { "theme": { "name": "tokyonight", "mode": "system" } } ``` | Field | Values | Description | | ------ | ---------------------------- | ----------------------------------------------------------------- | | `name` | string | Selects the theme. | | `mode` | `system`, `dark`, or `light` | Selects the color mode. `system` follows the terminal appearance. | See [Theme](/cli/theme) for theme configuration. ## Keybinds Override bindings with the top-level `keybinds` object: ```json title="cli.json" { "keybinds": { "leader": "ctrl+x", "app.exit": "ctrl+c,ctrl+d,q", "app.debug": "none", "help.show": false }, "leader": { "timeout": 2000 } } ``` See [Keybinds](/cli/keybinds) for every available binding. ## Plugins Load terminal plugins in order: ```json title="cli.json" { "plugins": [ "-opencode.notifications", { "package": "./plugins/status.ts", "options": { "compact": true } } ] } ``` See [Plugins](/cli/plugins) for packages, local files, options, and enablement directives. ## Scroll Set scroll speed and acceleration: ```json title="cli.json" { "scroll": { "speed": 2, "acceleration": true } } ``` | Field | Values | Description | | -------------- | ------------------------ | --------------------------------- | | `speed` | number, at least `0.001` | Sets the distance per input tick. | | `acceleration` | boolean | Speeds up repeated scrolling. | ## Attention Configure notifications and sounds: ```json title="cli.json" { "attention": { "enabled": true, "notifications": true, "sound": true, "volume": 0.4, "sound_pack": "opencode.default", "sounds": { "permission": "/home/me/sounds/permission.wav" } } } ``` | Field | Values | Description | | --------------- | ---------------------- | ---------------------------------------------------------------------------------------------------- | | `enabled` | boolean | Enables attention alerts. | | `notifications` | boolean | Shows system notifications. | | `sound` | boolean | Plays attention sounds. | | `volume` | number from `0` to `1` | Sets sound volume. | | `sound_pack` | string | Selects the active sound pack. | | `sounds` | object | Overrides files for `default`, `question`, `permission`, `error`, `done`, or `subagent_done` events. | ## Diffs Configure diff presentation: ```json title="cli.json" { "diffs": { "wrap": "word", "tree": true, "single": false, "view": "auto" } } ``` | Field | Values | Description | | -------- | ----------------------------- | ------------------------------------------------------------- | | `wrap` | `word` or `none` | Sets line wrapping. | | `tree` | boolean | Shows the diff file tree. | | `single` | boolean | Shows only the selected file patch. | | `view` | `auto`, `split`, or `unified` | Sets the layout. `auto` chooses based on the available width. | ## Terminal Configure terminal integration: ```json title="cli.json" { "terminal": { "title": true, "copy": "select" } } ``` | Field | Values | Description | | ------- | -------------------- | -------------------------------------------------------------------------------------------------------- | | `title` | boolean | Updates the terminal window title. | | `copy` | `manual` or `select` | Sets manual copy or copy on selection. Defaults to `select` on macOS and Linux, and `manual` on Windows. |