Skip to content

Config

Cogno reads a plain text config file. Every line is a key = value pair. Dot notation groups related settings. Arrays use bracket syntax.

font.size = 16
color.background = 1a1a2e
shell.default = zsh
keybind = Command+T=new_tab

Only the values you want to override need to appear in your file. Cogno merges your overrides with the built-in defaults, so an empty file is perfectly valid.

BuildPath
Release~/.cogno/cogno.config
Development~/.cogno-dev/cogno.config
SettingTypeDefaultDescription
enable_watch_configbooleantrueReload the config file automatically when it changes on disk

SettingTypeDefaultDescription
font.familystringmonospaceTerminal font family name
font.sizeint (≥ 1)14Terminal font size in pixels
font.weightstring or numbernormalNormal-weight font variant. Accepts normal, bold, 100900, or a numeric weight
font.weight_boldstring or numberboldBold-weight font variant
font.enable_ligaturesbooleanfalseEnable font ligatures
font.custom_glyphsbooleantrueRender Nerd Font / custom glyphs
font.draw_bold_text_in_bright_colorsbooleanfalseRender bold text using the bright color palette
font.rescale_overlapping_glyphsbooleanfalseShrink glyphs that would overflow their cell
font.app.familystringsans-serifFont family for the application UI (tabs, menus)
font.app.sizeint (≥ 1)14Font size for the application UI
font.family = "JetBrains Mono"
font.size = 15
font.enable_ligatures = true
font.custom_glyphs = true

All color values are hex strings without a leading #. 6-digit hex sets an opaque color; 8-digit hex adds an alpha channel in the last two digits (ff = fully opaque, 00 = fully transparent).

SettingDefaultDescription
color.foregroundffffffDefault text color
color.background0e1925Terminal background color
color.highlight34bbfeAccent / highlight color
color.black32465cANSI black
color.redfd1155ANSI red
color.green11d894ANSI green
color.yellowfede55ANSI yellow
color.blue34bbfeANSI blue
color.magentae465d9ANSI magenta
color.cyan32d8c1ANSI cyan
color.whiteeeeeeeANSI white
color.bright_black32465cBright ANSI black
color.bright_redfd1155Bright ANSI red
color.bright_green11d894Bright ANSI green
color.bright_yellowfede55Bright ANSI yellow
color.bright_blue34bbfeBright ANSI blue
color.bright_magentae465d9Bright ANSI magenta
color.bright_cyan32d8c1Bright ANSI cyan
color.bright_whiteeeeeeeBright ANSI white
color.background = 1e1e2e
color.foreground = cdd6f4
color.blue = 89b4fa
color.green = a6e3a1

SettingTypeDefaultDescription
cursor.style"bar" "underline" "block"barCursor shape when the terminal is focused
cursor.inactive_style"outline" "block" "bar" "underline" "none"Cursor shape when the terminal is not focused
cursor.widthint (0–10)4Cursor width in pixels (applies to bar and underline styles)
cursor.blinkbooleantrueEnable cursor blinking
cursor.colorhex34bbfeccCursor fill color
cursor.accent_colorhex34bbfe66Secondary cursor color used during selection
cursor.alt_click_moves_cursorbooleantrueMove the cursor to the click position when Alt-clicking

Values are in em units (floating point).

SettingTypeDefaultDescription
padding.leftnumber (≥ 0)0.5Left padding
padding.rightnumber (≥ 0)0.5Right padding
padding.topnumber (≥ 0)0Top padding
padding.bottomnumber (≥ 0)0.5Bottom padding
padding.remove_on_full_screen_appbooleanfalseRemove padding when a full-screen application (e.g. vim) is detected

SettingTypeDefaultDescription
background_image.pathstring""Absolute path to an image file. Leave empty to disable
background_image.opacityint (0–100)80Image opacity (0 = transparent, 100 = opaque)
background_image.blurint (0–10)0Blur radius applied to the image
background_image.path = /Users/me/wallpaper.png
background_image.opacity = 40
background_image.blur = 3

SettingTypeDefaultDescription
menu.opacityint (0–100)80Opacity of pop-up menus

SettingTypeDefaultDescription
scrollbar.widthint (≥ 0)6Scrollbar width in pixels. 0 hides the scrollbar
scrollbar.sensitivityint (≥ 0)1Scroll speed multiplier
scrollbar.scroll_on_user_inputbooleantrueJump to the bottom when keyboard input is detected while scrolled up
scrollbar.smooth_scroll_durationint (≥ 0)0Smooth scroll animation duration in milliseconds. 0 disables smooth scrolling
scrollbar.fast_scroll_sensitivityint (≥ 0)2Scroll speed multiplier when Alt/Option is held
scrollbar.scrollback_linesint (≥ 100)100000Number of lines kept in the scrollback buffer
scrollbar.overview_ruler_border_colorhex0e192500Color of the overview ruler border (fully transparent by default)
scrollbar.slider_colorhex32465c66Scrollbar slider color
scrollbar.slider_hover_colorhex32465cScrollbar slider color on hover
scrollbar.slider_active_colorhex32465cScrollbar slider color while dragging

SettingTypeDefaultDescription
selection.clear_on_copybooleanfalseDeselect text after copying
selection.background_colorhex34bbfeccSelection highlight color when terminal is focused
selection.inactive_background_colorhex34bbfe66Selection highlight color when terminal is not focused
selection.right_click_selects_wordbooleanfalseRight-click selects the word under the cursor

SettingTypeDefaultDescription
clipboard.read"allow" "deny"allowWhether applications can read from the clipboard via OSC 52
clipboard.write"allow" "deny"allowWhether applications can write to the clipboard via OSC 52
clipboard.trim_trailing_spacesbooleantrueRemove trailing whitespace when copying text
clipboard.image_paste_ttl_secondsint (> 0)60How long a pasted image URL remains valid

Cogno supports multiple named shell profiles. Set shell.default to the name of the profile to open when no profile is specified. At most 9 profiles may be defined.

SettingTypeDefaultDescription
shell.defaultstringName of the default shell profile (required)
shell.orderarray of stringsOrder in which profiles appear in the UI

Each profile lives under shell.profiles.<name>:

SettingTypeDefaultDescription
shell_type"Bash" "ZSH" "PowerShell"Shell type (required)
pathstringPath to the shell executable. Uses the system default when omitted
argsarray of stringsExtra arguments passed to the shell on launch
envkey-value mapEnvironment variables added to the shell’s environment
working_dirstringStarting directory. Uses $HOME when omitted
inject_cogno_clibooleantrueMake the cogno CLI available inside this shell
enable_shell_integrationbooleantrueEnable shell integration (prompt hooks, command tracking)
load_user_rcbooleantrueSource the user’s shell config (.bashrc, .zshrc, etc.)
use_conptybooleanUse ConPTY on Windows. Has no effect on other platforms
shell.default = zsh
shell.order = [zsh, bash]
shell.profiles.zsh.shell_type = ZSH
shell.profiles.zsh.inject_cogno_cli = true
shell.profiles.zsh.enable_shell_integration = true
shell.profiles.bash.shell_type = Bash
shell.profiles.bash.path = /usr/local/bin/bash
shell.profiles.bash.working_dir = /Users/me/projects

Cogno can render a custom prompt built from named segments. Each segment is a colored block that shows a dynamic value (field) or static text. Segments are assembled into profiles that control display order.

SettingTypeDescription
prompt.activestringName of the active prompt profile
prompt.profile.<name>.orderarray of stringsSegment names to display, in order
prompt.profile.<name>.default_separatorstringDefault separator inserted between segments

Every segment is defined under prompt.segment.<name>. A segment must have either field or text, not both.

SettingTypeDescription
fieldstringDynamic data field: directory, user, machine, duration
textstringStatic text content
foregroundhex or named colorText color
backgroundhex or named colorBackground color
boldbooleanBold text
italicbooleanItalic text
underlinebooleanUnderline text
sizeint (≥ 1)Font size override for this segment
padding_leftintInner left padding in pixels
padding_rightintInner right padding in pixels
margin_leftintOuter left margin in pixels
margin_rightintOuter right margin in pixels
radius_leftint (≥ 0)Left corner radius
radius_rightint (≥ 0)Right corner radius
whenstringCondition expression: returnCode==0 or returnCode!=0
format"string" "number" "json" "upper" "lower" "timespan"How to format the field value
fallbackstringValue to show when the field has no data

Named colors for foreground and background: black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite.

prompt.active = default
prompt.profile.default.order = [dir, error, ok]
prompt.segment.dir.field = directory
prompt.segment.dir.foreground = black
prompt.segment.dir.background = blue
prompt.segment.dir.padding_left = 5
prompt.segment.dir.padding_right = 5
prompt.segment.dir.radius_right = 5
prompt.segment.error.text = !
prompt.segment.error.margin_left = 5
prompt.segment.error.radius_left = 5
prompt.segment.error.radius_right = 5
prompt.segment.error.when = returnCode!=0
prompt.segment.ok.text = ✓
prompt.segment.ok.margin_left = 5
prompt.segment.ok.radius_left = 5
prompt.segment.ok.radius_right = 5
prompt.segment.ok.when = returnCode==0

Each keybinding is one line:

keybind = [scope:][performable:]combo[>combo...]=action[:arg...]

Multiple keybind = lines are additive — later lines do not remove earlier ones.

Scopes:

  • always — fires even when a UI element (e.g. search box) has keyboard focus

Modifiers:

  • performable — only fires if the action is currently available

Combo format: modifier keys joined with +, then the key name. Command+T, Control+Shift+W, Option+Right.

Chord sequences: two combos separated by >. Example: Control+X>Control+S=save.

CategoryAction
Clipboardcopy, cut, paste
Bufferclear_buffer, clear_line, clear_line_to_end, clear_line_to_start
Cursor movementgo_to_start_of_line, go_to_end_of_line, go_to_next_word, go_to_previous_word
Word editingdelete_previous_word, delete_next_word
Text selectionselect_all, select_text_left, select_text_right, select_word_left, select_word_right, select_text_to_start_of_line, select_text_to_end_of_line
Tabsnew_tab, close_tab, close_terminal, close_other_tabs, close_all_tabs, select_next_tab, select_previous_tab, select_tab_1select_tab_9
Panessplit_right, split_left, split_down, split_up, maximize_pane, minimize_pane, select_next_pane, select_previous_pane
Shell profilesopen_shell_1open_shell_9
Windownew_window, close_window, quit
Workspacesopen_workspace, select_workspace_default, select_workspace_1select_workspace_9
Autocompletetrigger_autocomplete, cycle_completion_mode
Featuresopen_ai_chat, open_command_palette, open_terminal_search, open_notification, open_config
# Override the default split shortcut
keybind = Command+Shift+D=split_down
# Fire copy even inside the search box
keybind = always:performable:Command+C=copy
# Chord: Ctrl+X then Ctrl+C
keybind = Control+X>Control+C=copy

SettingTypeDefaultDescription
terminal.webglbooleantrueUse the WebGL renderer for better GPU-accelerated performance
terminal.inactive_overlay_opacityint (0–100)30Dimming percentage applied to inactive terminal panes
terminal.allow_transparencybooleantrueAllow transparent terminal backgrounds
terminal.tab_stop_widthnumber8Width of a tab character in columns
terminal.minimum_contrast_rationumber4Minimum contrast ratio between text and background colors
terminal.screen_reader_modebooleanfalseEnable accessibility / screen reader mode
terminal.word_separatorstring"()[]{}'\"\\,;:/&<>*+=$^!~\ “`Characters treated as word boundaries for double-click selection and word movement
terminal.progress_bar.enabledbooleantrueShow a progress bar in the terminal tab header (uses OSC 9;4 escape sequences)

SettingTypeDefaultDescription
autocomplete.provider.timeout_msint (≥ 1)160Maximum time in milliseconds allowed for a single dynamic autocomplete provider to respond

SettingTypeDefaultDescription
search.mode"off" "hidden" "visible"visibleInitial visibility of the search panel
search.match.background_colorhex2f8fda55Background color of non-active search matches
search.match.border_colorhex2f8fdaBorder color of non-active search matches
search.match.overview_ruler_colorhex2f8fdaMatch indicator color in the overview ruler
search.active_match.background_colorhexf5e66399Background color of the currently selected match
search.active_match.border_colorhexf5e663Border color of the currently selected match
search.active_match.overview_ruler_colorhexf5e663Active match indicator color in the overview ruler

SettingTypeDefaultDescription
workspace.mode"off" "hidden" "visible"visibleInitial visibility of the workspace panel

Cogno has two separate setting groups for notifications: notification.* controls behavior, notifications.* controls delivery channels.

SettingTypeDefaultDescription
notification.mode"off" "hidden" "visible"visibleInitial visibility of the notification panel
notification.highlight_terminal_on_activitybooleantrueHighlight the terminal tab when a notification fires
notification.long_running_commands.enabledbooleanfalseShow a notification when a long-running command finishes
notification.long_running_commands.minimum_duration_secondsint (≥ 0)10Only notify for commands that ran at least this many seconds
notification.exceptions.handled.enabledbooleanfalseShow a notification for handled application exceptions
notification.exceptions.unhandled.enabledbooleanfalseShow a notification for unhandled renderer exceptions
notification.overview.max_itemsint (≥ 0)30Maximum number of notifications shown in the overview
SettingTypeDefaultDescription
notifications.app.availablebooleantrueWhether in-app notifications are available on this system
notifications.app.enabledbooleantrueShow in-app notifications
notifications.app.duration_secondsint (≥ 0)5Seconds before an in-app notification auto-dismisses
notifications.os.availablebooleantrueWhether OS-level notifications are available on this system
notifications.os.enabledbooleanfalseSend OS notifications (requires system permission)

SettingTypeDefaultDescription
command_palette.mode"off" "hidden" "visible"visibleInitial visibility of the command palette

Cogno can connect to local or remote AI models for in-terminal assistance.

SettingTypeDefaultDescription
ai.mode"off" "hidden" "visible" "auto"autoauto enables AI automatically when at least one usable provider is configured
ai.active_providerstringID of the provider to use. Defaults to the first usable provider found

A provider is usable when: enabled is not false, type is set, base_url is non-empty, and model is non-empty.

Define one or more providers under ai.providers.<name> where <name> is any identifier you choose.

SettingTypeRequiredDescription
type"openai_compatible" "ollama_native"YesProtocol used to talk to the provider
base_urlstringYesBase URL of the API endpoint
modelstringYesModel name or ID to use
api_keystringNoAPI key (for OpenAI-compatible endpoints that require authentication)
headerskey-value mapNoAdditional HTTP headers sent with every request
enabledbooleanNoSet to false to disable the provider without removing it
auto_detectedbooleanSet automatically by Cogno. Do not set this manually

On startup, Cogno probes two local endpoints:

ProviderDefault URLType
Ollamahttp://localhost:11434ollama_native
LM Studiohttp://localhost:1234openai_compatible

When a provider is detected, Cogno adds it with auto_detected = true and sets it as the active provider if none is configured. To prevent a provider from being auto-detected, add it manually with enabled = false.

SettingTypeDefaultDescription
ai.request.include_process_treebooleanfalseInclude the current process tree in the context sent to the AI
ai.request.max_commandsint (≥ 0)8Maximum number of recent commands sent as context
ai.request.max_output_charsint (≥ 0)4000Maximum terminal output characters sent as context
# Ollama running locally
ai.mode = auto
ai.providers.ollama.type = ollama_native
ai.providers.ollama.base_url = http://localhost:11434
ai.providers.ollama.model = llama3.2
ai.active_provider = ollama
# LM Studio
ai.providers.lmstudio.type = openai_compatible
ai.providers.lmstudio.base_url = http://localhost:1234
ai.providers.lmstudio.model = meta-llama-3-8b-instruct
ai.active_provider = lmstudio
# OpenAI
ai.providers.openai.type = openai_compatible
ai.providers.openai.base_url = https://api.openai.com
ai.providers.openai.model = gpt-4o
ai.providers.openai.api_key = sk-...
ai.active_provider = openai
# Disable auto-detection of LM Studio
ai.providers.lmstudio.enabled = false