Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Settings reference

Every setting the schema declares: the ones /settings shows, grouped as that screen groups them, then the ones that exist only in a configuration file.

Generated by scripts/gen-settings-reference.ts. Edit the ui block on the setting in packages/coding-agent/src/config/settings-domains/, then run bun scripts/gen-settings-reference.ts --write. Never edit this file by hand: a test compares it against the generator and fails when the two disagree.

Read Settings first for where settings live, how precedence and merging work, and how to read and write them. The tables below are grouped as the /settings tabs are.

Set any of these keys in config.yml with the dotted path shown in the first column, or from the command line:

veyyon config set tui.tight true
veyyon config get compaction.threshold

Appearance

Theme

KeySettingTypeDefaultWhat it does
theme.darkDark ThemestringtitaniumTheme used when the terminal has a dark background.
theme.lightLight ThemestringlightTheme used when the terminal has a light background.
symbolPresetSymbol PresetenumunicodeGlyph set for icons and symbols (Unicode, Nerd Font, or ASCII). Values: unicode, nerd, ascii.
colorBlindModeColor-Blind ModebooleanfalseUse blue instead of green for diff additions.

Status Line

KeySettingTypeDefaultWhat it does
statusLine.enabledComposer FootlinebooleantrueShow the quiet metadata line under the composer (model, mode, path, git, context). Off leaves the composer carrying nothing; the agent-focus exit hint still shows while a view is proxied.
statusLine.presetStatus Line PresetenumdefaultPre-built status line configurations. Values: default, minimal, compact, full, nerd, ascii, custom.
statusLine.sessionAccentSession AccentbooleantrueUse the session name color for the editor border. Shown under the tab’s Advanced fold.
statusLine.compactThinkingLevelCompact Thinking LevelbooleanfalseShow the thinking level as a single icon on the model name instead of a separate · \<level> suffix. Shown under the tab’s Advanced fold.
statusLine.showHookStatusShow Hook StatusbooleantrueDisplay hook status messages below the status line. Shown under the tab’s Advanced fold.
statusLine.showAccountShow Serving AccountbooleanfalseName the account serving the next request on the composer footline, when the active provider stores more than one. Off: /account answers it on demand. Shown under the tab’s Advanced fold.

Display

KeySettingTypeDefaultWhat it does
terminal.showImagesShow Inline ImagesbooleantrueRender images inline in the terminal.
images.autoResizeAuto-Resize ImagesbooleantrueResize large images to 2000x2000 max for better model compatibility. Shown under the tab’s Advanced fold.
terminal.showProgressNative Terminal ProgressbooleanfalseEmit OSC 9;4 indeterminate progress while the agent or context maintenance is running. Shown under the tab’s Advanced fold.
tui.textSizingLarge Headings (Kitty)booleanfalseRender Markdown H1 headings at twice the text size with Kitty’s OSC 66 text-sizing protocol. Terminals other than Kitty ignore it. Shown under the tab’s Advanced fold.
tui.renderMermaidRender Mermaid DiagramsbooleantrueRender Mermaid fenced code blocks as ASCII diagrams. Shown under the tab’s Advanced fold.
tui.hyperlinksTerminal HyperlinksenumautoWrap paths and URLs in OSC 8 hyperlinks for terminal-native click-to-open (auto: detect support; off: never; always: unconditional). Values: off, auto, always.
tui.paintGroundPaint Theme GroundenumautoSet the terminal background (OSC 11) to the theme’s ground color while Veyyon runs, restoring it on exit (auto: only when the terminal background already matches the theme so no seam appears; always: unconditional; never: inherit the terminal background). Values: auto, always, never.
tui.tightTight LayoutbooleanfalseRemove the 1-character horizontal padding from the left and right of the terminal output. Shown under the tab’s Advanced fold.
tui.scrollbackRebuildRewrite ScrollbackbooleantrueErase and redraw terminal scrollback when a block’s final form replaces its live preview. Off: the preview stays in scrollback and the final content is appended below it. Inside a terminal multiplexer the final content is always appended below. Shown under the tab’s Advanced fold.
tui.scrollIsolationScroll IsolationbooleanfalseTake over the mouse wheel so the transcript scrolls with the prompt pinned at the bottom and a position marker on the right edge. On: veyyon holds the mouse, so selecting text needs shift+drag or /copy. Off: the terminal keeps the wheel and the mouse, and native scrollback, drag-select and copy work as in any other program. Shown under the tab’s Advanced fold.
display.transitionsTransitionsenumonStructural motion: overlay open transitions and the moving rail beside a running tool. Values: on, off.
display.shimmerShimmerenumdisabledAnimation style for working/loading messages. Values: classic, kitt, living, disabled.
display.smoothStreamingSmooth StreamingbooleantrueReveal assistant text and streamed tool input smoothly while chunks arrive.
display.showTokenUsageShow Token UsagebooleanfalseShow what each turn spent under the assistant message: tokens, how long it took, and its rate.
display.cacheMissMarkerCache Miss MarkerbooleanfalseShow a divider above an assistant turn whose request lost (missed) the prompt cache. Shown under the tab’s Advanced fold.
display.toolOutputExpandedExpand Tool OutputbooleanfalseStart tool calls expanded, showing full input and output instead of a preview; the in-session toggle updates this. Shown under the tab’s Advanced fold.
showHardwareCursorShow Hardware CursorbooleantrueShow terminal cursor for IME support. Shown under the tab’s Advanced fold.

Model

Compaction

KeySettingTypeDefaultWhat it does
display.collapseCompactedCollapse Compacted HistorybooleantrueCollapse pre-compaction history behind the summary divider on the live transcript; disable to keep the full transcript inline with dividers at each compaction point.
compaction.remoteRemote CompactionbooleantrueCompact on the provider instead of locally when the session model is an OpenAI Responses model (including Azure OpenAI Responses deployments and ChatGPT Codex). On: the provider compacts the span, its reasoning state is kept across the cut, no summary text is stored and Compaction Model is not used. Off: compaction runs locally and stores a readable summary. Other models always compact locally.
compaction.strategyCompaction TypeenumsummarySummary condenses history in place and continues the same session. Values: summary.
compaction.thresholdAuto-Compaction ThresholdstringautoWhen auto-compaction triggers. Auto uses the model’s window minus the reserve; a percent scales with each model’s window; a token amount is the same trigger on every model that can reach it, and a smaller model compacts at its own maximum.
compaction.modelCompaction ModelmodelChain(unset)Models used to write the compaction summary, tried in order. Inherit: the main model. A later entry is used when an earlier one is unauthenticated or its context window is too small.
compaction.modelFallbackStrategyCompaction FallbackenumautoWhat to try after the compaction models you configured. Auto stays on models you named: the main model, its same-provider compaction sibling, and your model roles. Any authenticated model also reaches the largest window available, on any provider you have credentials for. Configured only stops at the chain and fails loudly. Values: auto, any-model, configured-only.
compaction.modelContextWindowCompaction Model Contextnumber(unset)Context window in tokens to assume for the compaction model. Unset uses the compaction model’s own reported window. Candidates whose window cannot fit the summarization payload are skipped loudly.

Roles

KeySettingTypeDefaultWhat it does
modelRolesRole Modelsrecord{}Assign a model to each role (Fast, Thinking, Vision, Architect, Designer, Commit, Tiny). Opens a searchable picker with auth status. The advisor’s model is set in the Advisor group and a spawned agent’s in Agents → Roster. Stored in the active profile.

Thinking

KeySettingTypeDefaultWhat it does
defaultEffortDefault Effortrecord{}Effort per model, applied when a run does not ask for one. Add a model and pick its effort; the “any model” row covers every model without its own. Per profile.
hideThinkingBlockHide Thinking BlocksbooleanfalseHide thinking blocks in assistant responses.
proseOnlyThinkingProse Only ThinkingbooleantrueOmit code blocks from thinking summaries and replace them with an ellipsis.
omitThinkingOmit Thinking summariesbooleanfalseInstruct upstream providers to completely omit thinking summaries from responses (where supported).
model.loopGuard.enabledLoop GuardbooleantrueEnable automatic stream loop detection for model reasoning and prose.
model.loopGuard.checkAssistantContentLoop Guard Scan ProsebooleantrueApply loop guard to assistant prose messages in addition to thinking logs.
model.loopGuard.toolCallReminderLoop Guard Tool-Call ReminderbooleantrueWhen a Gemini reasoning stream emits many consecutive planning headers without calling a tool, interrupt it and inject a reminder to issue a tool call (requires Loop Guard).
model.toolCallLoopGuard.enabledTool-Call Loop GuardbooleantrueDetect consecutive identical tool calls across turns and inject a corrective steer.
model.toolCallLoopGuard.thresholdTool-Call Loop Thresholdnumber5Consecutive identical tool calls required before the corrective steer is injected.
model.toolCallLoopGuard.readSubsumptionThresholdRead Subsumption Loop Thresholdnumber3Consecutive fully-subsumed or redundant read calls on unchanged files before the corrective steer is injected.
model.toolCallLoopGuard.exemptToolsTool-Call Loop Exempt Toolsarray["job","irc"]Tool names that may repeat consecutively without triggering the cross-turn loop guard.
providers.autoThinkingModelAuto Thinking ModelenumonlineModel that rates task difficulty for the auto thinking level. Online: the Tiny role from /models, else @smol. Local: an on-device model. Values: online, qwen3-1.7b, llama3.2:3b, gemma-3-1b, qwen2.5-1.5b, lfm2-1.2b.

Sampling

KeySettingTypeDefaultWhat it does
temperatureTemperaturenumber(unset)Sampling temperature. 0 is deterministic, 1 is creative. Unset lets the provider choose.
topPTop Pnumber(unset)Nucleus sampling cutoff, 0 to 1. Unset lets the provider choose.
topKTop Knumber(unset)Sample from the top K tokens. Unset lets the provider choose.
minPMin Pnumber(unset)Minimum probability threshold, 0 to 1. Unset lets the provider choose.
presencePenaltyPresence Penaltynumber(unset)Penalty for introducing tokens already present. Negative values encourage repetition; unset lets the provider choose.
repetitionPenaltyRepetition Penaltynumber(unset)Penalty for repeated tokens. Values below 1 encourage repetition; unset lets the provider choose.
textVerbosityText VerbosityenummediumOpenAI Responses and Codex response verbosity (low, medium, or high). Values: low, medium, high.
tier.openaiService Tier — OpenAIenumnoneHow your OpenAI / OpenAI-Codex requests are queued and served, including OpenAI-family models routed via OpenRouter (none = omit the field). Sent as service_tier. This is serving speed and cost, not reasoning depth; depth is Default Effort. Values: none, auto, default, flex, scale, priority.
tier.anthropicService Tier — AnthropicenumnoneHow your Claude requests are queued and served. priority realizes fast mode (speed: "fast") on supported direct Anthropic models, and is ignored on Bedrock/Vertex Claude and via OpenRouter. This is serving speed and cost, not reasoning depth; depth is Default Effort. Values: none, priority.
tier.googleService Tier — GoogleenumnoneHow your Gemini (Google AI Studio + Vertex) requests are queued and served, including Google-family models routed via OpenRouter (none = omit the field). Sent as the top-level serviceTier field. This is serving speed and cost, not reasoning depth; depth is Default Effort. Values: none, flex, priority.
tier.agentService Tier — Spawned AgentsenuminheritHow spawned task/eval agent requests are queued and served. Inherit matches the main agent’s live per-family tiers (tracks /fast); pick a value to apply it to whichever family the spawned agent’s model belongs to. Values: inherit, none, auto, default, flex, scale, priority.
tier.advisorService Tier — AdvisorenumnoneHow advisor-model requests are queued and served. None is standard processing, Inherit matches the main agent’s live per-family tiers, and picking a value applies it to the advisor model’s family. Values: inherit, none, auto, default, flex, scale, priority.

Prompt

KeySettingTypeDefaultWhat it does
inlineToolDescriptorsInline Tool DescriptorsenumautoRender full tool descriptors in the system prompt and strip top-level/nested descriptions from provider tool schemas so descriptor text is sent once. Auto follows the active model, enabling this for Gemini and disabling it otherwise. Values: auto, on, off.
includeModelInPromptInclude Model in PromptbooleanfalseSurface the active model identifier in the system prompt so the active model identifier is available to the agent. Costs a full prompt-cache invalidation on every model switch.
includeWorkspaceTreeInclude Workspace TreebooleanfalseRender the workspace directory tree in the system prompt. WARNING: This can bust prompt caching across sessions when files are modified.
personalityPersonalitystringdefaultCommunication style rendered into the system prompt’s personality block. Extend via ~/.veyyon/personalities/<name>.md or project .veyyon/personalities/<name>.md.

Retry & Fallback

KeySettingTypeDefaultWhat it does
retry.maxRetriesRetry Attemptsnumber10Maximum retry attempts on API errors.
retry.maxDelayMsMax Retry Delaynumber300000Maximum wait between retries, in ms. When the provider response requires a wait longer than this and no credential or model fallback succeeds, the request fails fast instead of sleeping (e.g. 3-hour Anthropic rate-limit windows).
retry.modelFallbackRetry Model FallbackbooleantrueAllow retry recovery to switch to configured fallback models.
retry.fallbackChainsRetry Fallback Chainsrecord{}JSON object mapping model roles, model selectors (“provider/model-id”), or provider wildcards (“provider/”) to ordered fallback selectors, e.g. {“default”:[“openai/gpt-4o-mini”],“google-antigravity/”:[“google/”,“google-vertex/”]}. Model-oriented keys apply whenever that model/provider is active, regardless of role; a “provider/*” entry keeps the failing model’s id and swaps the provider.
retry.perProviderPer-Provider Retryrecord{}JSON object overriding retry limits for specific backends, keyed like Retry Fallback Chains: a model selector (“provider/model-id”), a provider wildcard (“provider/*”), or a bare provider name. Each value may set maxRetries, baseDelayMs, and maxDelayMs; anything omitted falls back to the global retry settings. Example: {“cursor”:{“maxRetries”:3,“baseDelayMs”:2000}}. Backends whose retries are intrinsically expensive (cursor, devin) already ship with sensible limits; an entry here overrides those.
retry.fallbackRevertPolicyFallback Revert Policyenumcooldown-expiryWhen to return to the primary model after a fallback. Values: cooldown-expiry, never.
providers.anthropic.serverSideFallbackAnthropic Server-Side Fallback (Fable 5)booleanfalseRetry a Claude Fable 5 or Mythos 5 request that Anthropic’s safety classifier blocks on Claude Opus 4.8, on the provider side (the server-side-fallback-2026-06-01 beta). Off: the request fails.

Advisor

KeySettingTypeDefaultWhat it does
advisor.enabledEnable AdvisorbooleanfalsePair a second model that passively reviews each turn and injects notes. Which model it runs is Advisor Model, directly below.
advisor.agentsAdvisor for Spawned AgentsbooleanfalseAlso enable the advisor on spawned task/eval agents.
advisor.syncBacklogAdvisor Sync BacklogenumoffPause the main agent for up to 30 seconds if the advisor falls behind by this many turns. Off disables catch-up delays. Values: off, 1, 3, 5.
advisor.immuneTurnsAdvisor Immune Turnsnumber3After an advisor concern or blocker interrupts, route further concerns/blockers non-interruptingly for this many primary turns.

Prewalk

KeySettingTypeDefaultWhat it does
prewalk.enabledEnable PrewalkbooleanfalseStart a session on Prewalk Strong Model and switch to Prewalk Cheap Model at the first edit or write after the todo list exists. –prewalk and –no-prewalk override it for one session.
prewalk.cheapModelPrewalk Cheap ModelmodelChain(unset)Model prewalk hands off to at the first edit/write. Required once prewalk is on: /prewalk and –prewalk fail with a message naming this setting when it is unset. –prewalk-into overrides it per session; only the first entry is used.
prewalk.strongModelPrewalk Strong ModelmodelChain(unset)Model a prewalk session starts on. Unset: the normal start model (–model or the remembered default). Only the first entry is used.

Vision

KeySettingTypeDefaultWhat it does
images.describeForTextModelsDescribe Images for Text ModelsbooleantrueWhen an image is attached to a model without vision support, save it under local:// and inject a description from a vision-capable model instead of dropping it.

Interaction

Input

KeySettingTypeDefaultWhat it does
steeringModeSteering Modeenumone-at-a-timeHow to process queued messages while agent is working. Values: all, one-at-a-time.
followUpModeFollow-Up Modeenumone-at-a-timeHow to drain follow-up messages after a turn completes. Values: all, one-at-a-time.
interruptModeInterrupt ModeenumimmediateWhen steering messages interrupt tool execution. Values: immediate, wait.
loop.modeLoop ModeenumpromptWhat happens between /loop iterations before re-submitting the prompt. Values: prompt, compact, reset.
doubleEscapeActionDouble-Escape ActionenumtreeAction when pressing Escape twice with empty editor. Values: branch, tree, none.
treeFilterModeSession Tree FilterenumdefaultDefault filter mode when opening the session tree. Values: default, no-tools, user-only, labeled-only, all.
autocompleteMaxVisibleAutocomplete Itemsnumber5Max visible items in autocomplete dropdown (3-20).
emojiAutocompleteEmoji AutocompletebooleantrueSuggest emojis from :name: shortcodes and expand text emoticons like :D or :-).
paste.largeMenuThresholdLarge Paste Menunumber100When a paste reaches this many lines, offer a menu to wrap it in a code block, wrap it in XML tags, or save it to a file. 0 disables the menu (large pastes still collapse to a [Paste] marker).

Session

KeySettingTypeDefaultWhat it does
session.newKeepsBackground/new Keeps The Old SessionbooleanfalseWhat /new does while a response is still streaming. On: the old conversation keeps running in the background and the screen attaches to a new one; the status line counts background conversations. Off: the old turn is stopped and its provider stream closed before the new session starts. Takes effect at the next start.

Approvals

KeySettingTypeDefaultWhat it does
tools.approvalTool Approval Policiesrecord{}Per-tool approval policies. Set to ‘allow’ to auto-approve, ‘prompt’ to require confirmation, or ‘deny’ to block. Overrides are honored in every approval mode. Any other value denies that tool and is reported at startup.
tools.protectedPathsExtra Protected Pathsarray[]Additional absolute paths (a leading ~ is expanded) that a recursive delete must never target without approval. Adds to the built-in set; it cannot remove from it.
tools.approvalModeTool ApprovalenumautoHow much the agent may do without asking. Defaults to Auto: every tier runs, with the per-tool policies, working-directory boundary, credential and critical-call guards still asking. This is the persisted default; override it for one session with /permissions. Values: plan, ask, ask-command, auto, yolo, always-ask, write, auto-edit.

Notifications

KeySettingTypeDefaultWhat it does
completion.notifyCompletion NotificationenumoffNotify when the agent finishes a turn. Values: on, off.
ask.timeoutAsk Timeoutnumber0Auto-select the recommended ask option after this many seconds (0 disables).
ask.notifyAsk NotificationenumonNotify when the agent is blocked on a question you have not answered. Values: on, off.
recap.enabledIdle RecapbooleantrueGenerate a brief LLM recap of where things stand after the terminal has been idle.
recap.idleSecondsIdle Recap Delaynumber240Seconds to wait while idle before showing the recap.

Speech

KeySettingTypeDefaultWhat it does
stt.enabledSpeech-to-TextbooleanfalseEnable speech-to-text input via microphone.
stt.modelNameSpeech ModelenumparakeetLocal on-device speech model. Parakeet TDT v3 (sherpa-onnx) is the SoTA default; Whisper base/small/large-v3-turbo tiers (transformers.js) trade size for multilingual coverage. Downloaded on first use. Values: fast, balanced, turbo, parakeet.
stt.submitTriggerSpeech-to-Text Submit TriggerenumneverChoose when speech dictation automatically submits: Never, Release (2+ words), Release with complete sentence, or When I Say Submit. Values: never, release, release-complete, say-submit.

Collab

KeySettingTypeDefaultWhat it does
collab.relayUrlRelay URLstringwss://share.veyyon.devRelay used by /collab (wss://host[:port]).
collab.webUrlWeb UI URLstring(empty)Browser UI used by /collab links; empty derives from collab.relayUrl; explicit http:// is localhost-only.
collab.displayNameDisplay Namestring(empty)Name shown to other collab participants (default: OS username).
share.serverUrlShare Serverstringhttps://share.veyyon.dev/sShare viewer/upload base used by /share (encrypted blob upload + viewer; links are <base>/<id>#<key>).
share.storeShare StoreenumblobWhere /share uploads the encrypted session blob. Values: blob, gist.
share.redactSecretsShare Secret RedactionbooleantrueRun the secret obfuscator over /share snapshots before upload (uses the secrets.* config).

Magic Keywords

KeySettingTypeDefaultWhat it does
magicKeywords.enabledEnable Magic KeywordsbooleantrueEnable hidden notices for standalone ultrathink, orchestratez, and workflowz keywords.
magicKeywords.ultrathinkUltrathink KeywordbooleantrueLet standalone ultrathink request maximum automatic thinking and append its hidden notice.
magicKeywords.orchestrateOrchestrate KeywordbooleantrueLet standalone orchestratez append its hidden multi-agent orchestration notice.
magicKeywords.workflowWorkflow KeywordbooleantrueLet standalone workflowz append its hidden eval workflow notice.
magicKeywords.turnBudgetTurn Budget DirectivebooleanfalseLet a standalone +500k or +2m set this turn’s output-token budget; when off, +Nk in a message is treated as ordinary text.

Startup & Updates

KeySettingTypeDefaultWhat it does
autoResumeAuto ResumebooleanfalseAutomatically resume the most recent session in the current directory.
startup.quietQuiet StartupbooleanfalseSkip welcome screen and startup status messages.
startup.showSplashShow Startup SplashbooleanfalseShow the full animated setup splash on normal interactive startup without rerunning setup. Quiet Startup still suppresses it.
startup.clearScrollbackClear Scrollback on StartupbooleanfalseErase the terminal’s saved scrollback when veyyon starts, so the session begins on an empty terminal. This also erases what was on screen before you launched, such as your shell history and any command output, and it cannot be undone. Off still starts you on a clear screen; it just leaves your history reachable by scrolling up.
startup.setupWizardSetup WizardbooleantrueRun onboarding on first install only (updates never re-run it).
startup.checkUpdateCheck for UpdatesbooleantrueCheck for Veyyon updates on startup.
marketplace.autoUpdateMarketplace Auto-UpdateenumnotifyCheck for plugin updates on startup. Values: off, notify, auto.
startup.autoUpdateAutomatic UpdatesbooleantrueInstall a newer version in the background; off means updates only when you run veyyon update.
startup.updateNoticeUpdate NoticebooleantrueShow a one-line notice on the first launch after an update.

Profile

KeySettingTypeDefaultWhat it does
profile.displayNameProfile Namestring(empty)Display name for the active profile, shown in /profile list and resolvable by /profile <name>. Stored per profile; empty falls back to the profile’s directory name (“default” for the base profile).
session.workdirDefault Working Directorystring(unset)Working directory a session starts in when –cwd is not given. –cwd takes precedence, then this setting, then the directory the command was run from. Absolute or ~-relative; a relative path or a missing directory fails the launch. set_cwd and /cwd change the directory for one session without writing this.

Power (macOS)

KeySettingTypeDefaultWhat it does
power.sleepPreventionSleep PreventionenumidlePrevent macOS sleep while a session is active. Each level includes the levels below it. Values: off, idle, display, system.

Agent

KeySettingTypeDefaultWhat it does
features.unexpectedStopDetectionDetect unexpected stopsbooleanfalseUse a small model to detect when the assistant says it will continue but stops without tool calls; automatically prompt it to continue.

Git

KeySettingTypeDefaultWhat it does
git.enabledEnable Git IntegrationbooleantrueShow git branch, status, and PR information in the TUI and watch repository metadata.

Resources

CPU

KeySettingTypeDefaultWhat it does
session.cpuLimitCoresSession CPU Limitnumber0Maximum CPU processes spawned by this session and its agents may use, in cores. Off: no limit. Stored in the active profile.
session.cpuLimitKillKill Over-Budget CommandsbooleanfalseControls whether processes running over the session CPU limit are terminated. Off: running processes continue and new commands are refused while over budget. On: processes running over budget receive SIGTERM.

Memory

KeySettingTypeDefaultWhat it does
session.memoryLimitGbSession Memory Limitnumber0Maximum resident memory processes spawned by this session and its agents may use, in gigabytes. Off: no limit. Stored in the active profile.

Disk

KeySettingTypeDefaultWhat it does
session.writeBudgetGbSession Write Budgetnumber0Cumulative disk writes permitted for this session and its agents, in gigabytes. Off: no limit. Once reached, subsequent commands and tool writes are refused.
session.writeBudgetKillKill Over-Budget WritersbooleanfalseControls whether processes are terminated when the session write budget is exceeded. Off: running processes continue and new commands are refused. On: running processes receive SIGTERM.

Processes

KeySettingTypeDefaultWhat it does
session.maxProcessesSession Max Processesnumber0Maximum concurrent processes that this session and its agents may run. Off: no limit. Stored in the active profile.

Context

General

KeySettingTypeDefaultWhat it does
contextPromotion.enabledAuto-Promote ContextbooleanfalsePromote to a larger-context model on context overflow instead of compacting.
branchSummary.enabledBranch SummariesbooleanfalsePrompt to summarize when leaving a branch.
context.thinkingRetentionThinking Retentionnumber-1How many of the most recent assistant turns keep their unsigned thinking text when the conversation is resent to Gemini. Signed thinking is always kept. Keep All: every turn keeps it. Other providers ignore this. Shown under the tab’s Advanced fold.
context.thoughtSignatureRetentionThought Signature Retentionnumber-1How many of the most recent assistant turns keep their Gemini thought signature when the conversation is resent. A signature lets the model replay its reasoning for that turn and is large. Keep All: every turn keeps it. Other providers ignore this. Shown under the tab’s Advanced fold.
context.thoughtSignatureMaxLengthThought Signature Size Limitnumber-1Longest Gemini thought signature that is resent, in characters. A longer signature is replaced by the skip marker whatever its age. With Thought Signature Retention also set, a signature is resent only if it is both recent enough and short enough. Other providers ignore this. Shown under the tab’s Advanced fold.

Prompt Cache

KeySettingTypeDefaultWhat it does
cache.reportRejectionReport Cache RejectionsbooleantrueWarn when a turn asked the provider to cache a prefix and the provider cached nothing. Anthropic only; other providers do not report cache rejection.
cache.blockOnRejectionBlock On Cache RejectionbooleanfalseAnthropic only. Fail the next request after the provider rejects the prompt cache, instead of continuing at the full input rate. Off: continue.

Session Instrumentation

KeySettingTypeDefaultWhat it does
session.instrumentationInstrumentation LevelenumoffRecord structured, redacted study data in the session file. Higher levels add lifecycle, task-state, tool, model-turn, context, and agent-communication detail for veyyon session stats. Off still stores the normal resumable conversation and tool history, but adds no study fields. Values: off, basic, rich, ultra.

Rules

Rules

KeySettingTypeDefaultWhat it does
ttsr.builtinRulesBuilt-in RulesbooleantrueLoad the default rules shipped with the agent. Turn individual rules off under All Rules.
ttsr.disabledRulesAll Rulesarray[]Every rule this project loads, each on or off. Stores only the ones you turn off, so a rule added in a later release arrives on.

Stream Interrupts (TTSR)

KeySettingTypeDefaultWhat it does
ttsr.enabledTTSRbooleantrueInterrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules).
ttsr.contextModeContext ModeenumdiscardWhat to do with partial output when TTSR triggers. Values: discard, keep.
ttsr.interruptModeRule Interrupt ModeenumalwaysWhen to interrupt mid-stream vs inject warning after completion. Values: never, prose-only, tool-only, always.
ttsr.repeatModeRepeat ModeenumonceHow rules can repeat: once per session or after a message gap. A rule may override this in its frontmatter. Values: once, after-gap.
ttsr.repeatGapRepeat Gapnumber10Messages before a rule can trigger again. A rule may override this in its frontmatter.

Memory

General

KeySettingTypeDefaultWhat it does
memory.backendMemory BackendenumoffOff, local summary pipeline, Mnemopi SQLite, or Hindsight remote memory. Values: off, local, hindsight, mnemopi.
providers.memoryModelMemory ModelenumonlineModel Mnemopi uses to extract and consolidate facts. Online: the Tiny role from /models, else @smol. Local: an on-device model. Values: online, qwen3-1.7b, llama3.2:3b, gemma-3-1b, qwen2.5-1.5b, lfm2-1.2b.

Mnemopi

KeySettingTypeDefaultWhat it does
mnemopi.dbPathMnemopi DB Pathstring(unset)Optional SQLite DB path. Defaults to the agent memories directory.
mnemopi.bankMnemopi Bankstring(unset)Optional shared bank base name. Per-project modes derive project-local banks from it.
mnemopi.scopingMnemopi Scopingenumper-projectglobal = one shared bank; per-project = isolated bank per cwd; per-project-tagged = project-local writes plus global recall visibility. Values: global, per-project, per-project-tagged.
mnemopi.embeddingVariantEmbedding variantenumenLocal embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start. Values: en, multilingual.
mnemopi.autoRecallMnemopi Auto RecallbooleantrueRecall local memories into the first turn of each session.
mnemopi.autoRetainMnemopi Auto RetainbooleantrueRetain completed conversation turns into local Mnemopi memory.
mnemopi.polyphonicRecallMnemopi Polyphonic RecallbooleanfalseEnable 4-voice recall (vector, graph, fact, temporal) fused with reciprocal rank fusion.
mnemopi.enhancedRecallMnemopi Enhanced RecallbooleanfalseEnable the tiered query result cache for repeated and similar recall queries.
mnemopi.proactiveLinkingMnemopi Proactive LinkingbooleanfalseIngest new memories into the episodic graph as they are stored, linking them to related entities and memories.
mnemopi.noEmbeddingsMnemopi Disable EmbeddingsbooleanfalseForce deterministic FTS-only recall instead of vector embeddings.
mnemopi.embeddingModelMnemopi Embedding Modelstring(unset)Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.
mnemopi.embeddingApiUrlMnemopi Embedding API URLstring(unset)Optional OpenAI-compatible embedding endpoint passed to Mnemopi.
mnemopi.embeddingApiKeyMnemopi Embedding API Keystring(unset)Optional embedding API key passed to Mnemopi.
mnemopi.llmModeMnemopi LLM ModeenumsmolUse no LLM, the online tiny model (the TINY role from /models, else @smol), or a remote OpenAI-compatible endpoint. Values: none, smol, remote.
mnemopi.llmBaseUrlMnemopi LLM Base URLstring(unset)Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode.
mnemopi.llmApiKeyMnemopi LLM API Keystring(unset)Optional LLM API key for Mnemopi remote mode.
mnemopi.llmModelMnemopi LLM Modelstring(unset)Optional LLM model name for Mnemopi remote mode.

Hindsight

KeySettingTypeDefaultWhat it does
hindsight.apiUrlHindsight API URLstringhttp://localhost:8888Hindsight server URL (Cloud or self-hosted).
hindsight.bankIdHindsight Bank IDstring(unset)Base memory bank name. Unset uses veyyon. Hindsight Bank Prefix is prepended when set, and Hindsight Scoping sets whether the project name is appended (per-project) or carried as a project: tag instead (per-project-tagged).
hindsight.scopingHindsight Scopingenumper-project-taggedglobal = one shared bank; per-project = isolated bank per cwd; per-project-tagged = shared bank with project tags so global + project memories merge on recall. Values: global, per-project, per-project-tagged.
hindsight.autoRecallHindsight Auto RecallbooleantrueRecall memories on the first turn of each session.
hindsight.autoRetainHindsight Auto RetainbooleantrueRetain transcript every N turns and at session boundaries.
hindsight.retainModeHindsight Retain Modeenumfull-sessionfull-session = upsert one document per session, last-turn = chunked. Values: full-session, last-turn.
hindsight.mentalModelsEnabledHindsight Mental ModelsbooleantrueRead the memory bank’s mental models into the developer instructions at start. This reads existing models and writes none; Hindsight Mental Model Auto-Seed creates the built-in set.
hindsight.mentalModelAutoSeedHindsight Mental Model Auto-SeedbooleantrueAt session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank.

Files

Editing

KeySettingTypeDefaultWhat it does
edit.modeEdit ModeenumhashlineSelect the edit tool variant (replace, patch, hashline, or apply_patch). Values: apply_patch, hashline, patch, replace.
edit.fuzzyMatchFuzzy MatchbooleantrueAccept high-confidence fuzzy matches for whitespace differences.
edit.fuzzyThresholdFuzzy Match Thresholdnumber0.95Similarity threshold (0-1) for accepting fuzzy matches.
edit.streamingAbortAbort on Failed PreviewbooleanfalseAbort streaming edit tool calls when patch preview fails.
edit.blockAutoGeneratedBlock Auto-Generated FilesbooleantruePrevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.).
edit.afterEditAfter an EditenumverifyWhat happens when a turn ends having changed files: verify runs one check when none followed the last edit, review reads back every file the turn changed and judges correctness, maintainability and cross-file contracts, off ends the turn where the model ends it. Values: verify, review, off.

Reading

KeySettingTypeDefaultWhat it does
readLineNumbersLine NumbersbooleanfalsePrepend line numbers to read tool output by default.
read.defaultLimitDefault Read Limitnumber300Line count returned when read is called without one. The window also stops at the tool output budget, so a file of long lines returns fewer lines than this.
read.toolResultPreviewInline Read PreviewsbooleanfalseRender read tool results inline in the transcript instead of summary rows.

Read Summaries

KeySettingTypeDefaultWhat it does
read.summarize.enabledEnable Read SummariesbooleantrueReturn structural code summaries when read is called without an explicit selector.
read.summarize.proseProse SummariesbooleanfalseReturn structural summaries for Markdown and plain text reads.
read.summarize.minBodyLinesRead Summary Body Linesnumber4Minimum multiline body or literal length before read summaries collapse it.
read.summarize.minCommentLinesRead Summary Comment Linesnumber6Minimum multiline block comment length before read summaries collapse it.
read.summarize.minTotalLinesRead Summary Minimum File Lengthnumber100Files with fewer total lines are read verbatim instead of structurally summarized.
read.summarize.unfoldUntilRead Summary Unfold Targetnumber50BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions.
read.summarize.unfoldLimitRead Summary Unfold Ceilingnumber100Maximum number of lines a structural summary may grow to while folded spans are revealed. A span whose lines would exceed it stays folded and the next span is tried.

LSP

KeySettingTypeDefaultWhat it does
lsp.enabledLanguage ServersbooleanfalseStart language servers. Files → LSP is the row you enter; this switch and the others on that page (agent tool, diagnostics after write, diagnostics after edit, format after write) are independent once servers are running.
lsp.toolAgent ToolbooleantrueGive the agent the lsp tool (definitions, references, rename, query diagnostics). Off keeps servers for format and injected diagnostics only.
lsp.lazyLazy StartupbooleantrueStart language servers on first use (lsp tool or editing a matching file type) instead of at session startup.
lsp.formatOnWriteFormat after WritebooleanfalseFormat the file with the language server after the write tool saves it. Independent of the agent tool and of diagnostics.
lsp.diagnosticsOnWriteDiagnostics after WritebooleantrueAfter the write tool saves a file, inject language-server diagnostics into the session. Independent of the agent tool.
lsp.diagnosticsOnEditDiagnostics after EditbooleanfalseAfter the edit tool saves a file, inject language-server diagnostics into the session. Independent of the agent tool.
lsp.diagnosticsDeduplicateDeduplicate DiagnosticsbooleantrueSuppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones.

Shell

Bash

KeySettingTypeDefaultWhat it does
bash.enabledEnable BashbooleantrueEnable the bash tool for shell command execution.
bash.stallDetection.enabledBash Stall DetectionbooleanfalseWatch for a bash command that stops producing output; background it and tell the model it may be stuck so it can cancel a truly hung command. Recommends, never force-kills.
bashInterceptor.enabledBash InterceptorbooleanfalseBlock shell commands that have dedicated tools.
shellMinimizer.enabledShell MinimizerbooleantrueCompress verbose shell output (git, npm, cargo, etc.) before returning it to the agent.
shellMinimizer.sourceOutlineLevelShell Minimizer Source OutlineenumdefaultSource outline mode for cat/read of source files: default or aggressive. Values: default, aggressive.
bash.autoBackground.enabledBash Auto-BackgroundbooleantrueMove a long-running bash command to a background job on its own and deliver the result when it lands, instead of holding the turn open. Off, a command holds the foreground until it finishes or times out. Either way you can background the running command yourself with the composer’s background key.
bash.autoBackground.thresholdMsAuto-Background Afternumber300000How long a bash call runs in the foreground before it is moved to a background job whose result is delivered later. Counted on elapsed time, including while output is streaming. 0: every call is backgrounded at once.
bash.stallDetection.stallMsStall Afternumber30000How long a bash call may produce no output before it is moved to a background job and flagged as possibly stuck. Counted from the last output, not from the start of the call.

Eval & Runtimes

KeySettingTypeDefaultWhat it does
eval.pyPython Eval BackendbooleantrueAllow the eval tool to dispatch Python cells to the IPython kernel.
eval.jsJavaScript Eval BackendbooleantrueAllow the eval tool to dispatch JavaScript cells to the in-process runtime.
eval.rbRuby Eval BackendbooleanfalseAllow the eval tool to dispatch Ruby cells to the persistent Ruby kernel.
eval.jlJulia Eval BackendbooleanfalseAllow the eval tool to dispatch Julia cells to the persistent Julia kernel.
ruby.kernelModeRuby Kernel ModeenumsessionKeep the Ruby kernel alive across eval calls or start fresh each time. Values: session, per-call.
julia.kernelModeJulia Kernel ModeenumsessionKeep the Julia kernel alive across eval calls or start fresh each time. Values: session, per-call.
python.kernelModePython Kernel ModeenumsessionKeep the IPython kernel alive across eval calls or start fresh each time. Values: session, per-call.
python.interpreterPython Interpreterstring(empty)Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.
ruby.interpreterRuby Interpreterstring(empty)Optional path to an exact Ruby executable. When set, automatic Ruby runtime discovery is skipped.
julia.interpreterJulia Interpreterstring(empty)Optional path to an exact Julia executable. When set, automatic Julia runtime discovery is skipped.

Tools

Available Tools

KeySettingTypeDefaultWhat it does
todo.enabledTodosbooleantrueEnable the todo tool for task tracking.
astEdit.enabledAST EditbooleantrueEnable the ast_edit tool for structural AST rewrites.
debug.enabledDebugbooleantrueEnable the debug tool for DAP-based debugging. The tool loads only where a configured adapter command resolves.
launch.enabledLaunchbooleantrueEnable the launch tool for supervising shared long-running project processes.
speechgen.enabledSpeech GenerationbooleanfalseEnable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis.
generate_image.enabledGenerate ImagebooleanfalseEnable the generate_image tool for text-to-image generation and editing.
inspect_image.enabledInspect ImagebooleanfalseEnable the inspect_image tool, delegating image understanding to a vision-capable model.
checkpoint.enabledCheckpoint/RewindbooleanfalseEnable the checkpoint and rewind tools for context checkpointing.
fetch.enabledRead URLsbooleantrueAllow the read tool to fetch and process URLs.
vault.enabledObsidian VaultbooleanfalseEnable the vault:// internal URL for reading and editing Obsidian vault content via the Obsidian CLI. When disabled, vault:// resolution is refused and the vault:// entry is omitted from the system prompt.
github.enabledGitHub CLIbooleanfalseEnable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows).
web_search.enabledWeb SearchbooleantrueEnable the web_search tool for live web results.
ask.enabledAskbooleantrueEnable the ask tool for interactive user questions.
browser.enabledBrowserbooleanfalseEnable the browser tool for scripted Chromium automation (puppeteer).

Todos

KeySettingTypeDefaultWhat it does
todo.remindersTodo RemindersbooleantruePrompt continued execution when unfinished todos remain.
todo.reminders.maxTodo Reminder Limitnumber3Maximum distinct todo-state reminders before reminders stay silent.
todo.eagerCreate Todos AutomaticallyenumdefaultHow strongly to push automatic todo-list creation after the first message. Values: default, preferred, always.
tasks.todoClearDelayTodo Auto-Clear Delaynumber-1Delay before completed or abandoned todos are removed from the todo widget.

Launch

KeySettingTypeDefaultWhat it does
launch.cleanupWaitMsLaunch Cleanup Waitnumber900000How long an exited process record is retained before being purged from memory and disk (0 = never clean up).

Search Context

KeySettingTypeDefaultWhat it does
search.contextBeforeText Context Beforenumber1Lines of context before each text search match.
search.contextAfterText Context Afternumber1Lines of context after each text search match.

Browser

KeySettingTypeDefaultWhat it does
browser.headlessHeadless BrowserbooleantrueLaunch browser in headless mode (disable to show browser UI).
browser.cmuxcmux BrowserbooleantrueUse cmux WKWebView surfaces for browser automation when a cmux socket is available. Set VEYYON_BROWSER_CMUX=0 or VEYYON_BROWSER_CMUX=1 to override.
browser.screenshotDirScreenshot Directorystring(unset)Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android).

GitHub

KeySettingTypeDefaultWhat it does
github.cache.enabledGitHub View CachebooleantrueCache rendered issue/PR view output in the active profile’s cache/github-cache.db so repeated reads are free.
github.cache.softTtlSecGitHub Cache Soft TTLnumber300Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes).
github.cache.hardTtlSecGitHub Cache Hard TTLnumber604800Past the soft TTL the cached row is returned and refreshed in the background; past the hard TTL it is dropped (seconds; default 7 days).

Output Limits

KeySettingTypeDefaultWhat it does
tools.artifactSpillThresholdArtifact Thresholdnumber50Tool output above this size is saved as an artifact; the result keeps the start and end of the output up to this size plus the artifact:// id that reads the full text back. Applies to every tool that streams output: bash, eval, ssh, the interactive shell, search and the browser.
tools.artifactTailBytesArtifact Tail Sizenumber20Amount of the tail kept inline when a tool’s output is saved as an artifact, bounded by the Artifact Threshold.
tools.artifactHeadBytesArtifact Head Sizenumber20How much of the start of the output is kept inline when the rest is saved as an artifact. The start and the end together stay within the Artifact Threshold. 0: keep only the end.
tools.outputMaxColumnsOutput Column Capnumber768Per-line byte cap for streaming tool outputs (bash, ssh, python, js eval) and read. Lines wider than this are ellipsis-truncated; remaining bytes up to the next newline are dropped. 0 disables.
tools.artifactTailLinesArtifact Tail Linesnumber500Maximum lines of the tail kept inline when a tool’s output is saved as an artifact.
tools.inlineOutputFloorInline Output Floornumber0.25Smallest share of the inline output budget a tool result early in the conversation may use before the rest is saved as an artifact. A lower value saves output to an artifact sooner and costs fewer context tokens. 1: every result gets the full budget. Applies to every tool that streams output: bash, eval, ssh, the interactive shell, search and the browser. Shown under the tab’s Advanced fold.

Execution

KeySettingTypeDefaultWhat it does
tools.intentTracingIntent TracingbooleantruePrompt the model to state the intent of each tool call before it runs.
tools.abortOnFabricatedResultAbort On Fabricated Tool ResultbooleantrueWith in-band tool calls, stop the model immediately when it starts hallucinating a tool result mid-turn. Disable to let the model finish generating and discard the fabricated continuation instead.
tools.maxTimeoutMax Tool Timeoutnumber0Maximum timeout in seconds the agent can set for any tool (0 = no limit).
async.enabledAsync ExecutionbooleantrueEnable async bash commands and background task execution.
async.pollWaitDurationMax Poll TimeenumsmartHow long the poll tool waits for background job updates before returning the current state. A fixed value waits that exact duration every time. smart adapts: it starts at 30s and climbs to 4m on a back-to-back poll, then resets to 30s after about a minute without polling. The 4m ceiling stays below the 5-minute prompt-cache boundary. Values: 5s, 10s, 30s, 1m, 5m, smart.

Discovery & MCP

KeySettingTypeDefaultWhat it does
tools.discoveryModeTool DiscoveryenumautoHide tools behind a search tool to save tokens. ‘auto’ hides MCP tools once the tool set has more than 40 tools; ‘mcp-only’ always hides MCP tools; ‘all’ also hides non-essential built-ins and first-party heavyweight tools such as generate_image. Values: auto, off, mcp-only, all.
tools.essentialOverrideEssential Tools Overridearray[]Override the always-loaded built-in tools (default: read, bash, launch, edit, write, search, eval). Leave empty to use defaults.
mcp.discoveryModeMCP Tool DiscoverybooleanfalseHide MCP tools from the tool list and expose them through a tool discovery tool.
mcp.discoveryDefaultServersMCP Discovery Default Serversarray[]Keep MCP tools from these servers visible while discovery mode hides other MCP tools.
mcp.notificationsMCP Update InjectionbooleanfalseInject MCP resource updates into the agent conversation.
mcp.notificationDebounceMsMCP Notification Delaynumber500Milliseconds of quiet after an MCP resource update before one notification for that resource is added to the conversation; further updates to the same resource inside the window restart it.

Developer

KeySettingTypeDefaultWhat it does
dev.autoqaAuto QAbooleanfalseRecord unexpected built-in tool behavior in this profile’s local grievance database.
dev.autoqaPush.enabledAuto-upload GrievancesbooleanfalseSend new and queued grievances to veyyon.dev after recording them. Off keeps reports local until you run veyyon grievances push.
dev.autoqaPush.endpointGrievance Upload Endpointstringhttps://veyyon.dev/api/grievancesDestination for automatic and manual grievance uploads.

Tasks

Modes

KeySettingTypeDefaultWhat it does
plan.enabledPlan ModebooleantrueEnable plan mode for read-only exploration and planning before execution.
plan.defaultOnStartupStart in Plan ModebooleanfalseAutomatically enter plan mode at the start of every new session.
goal.enabledGoal ModebooleantrueEnable per-session goal mode and the hidden goal tool.
goal.modelBudgetsEnabledModel Goal BudgetsbooleanfalseExpose and enforce persisted per-goal token budgets for the model. This control is available only in Settings.
goal.statusInFooterGoal Progress Bar in FooterbooleantrueAdd a compact progress bar next to the goal token count in the status line. The token count is always shown; this controls the extra bar.
goal.continuationModesGoal Continuation Modesarray["interactive"]Run modes where active goals may auto-continue between turns.
title.refreshOnReplanRefresh Title on ReplanbooleantrueRefresh generated session titles after todo init replans unless the title was set by the user.

Commands & Skills

KeySettingTypeDefaultWhat it does
skills.enableSkillCommandsSkill CommandsbooleantrueRegister skills as /skill:name commands.
commands.enableClaudeUserClaude User CommandsbooleantrueLoad commands from ~/.claude/commands/.
commands.enableOpencodeUserOpenCode User CommandsbooleantrueLoad commands from ~/.config/opencode/commands/.

Agents

Delegation

KeySettingTypeDefaultWhat it does
agent.enabledAgentsbooleantrueAllow this session to spawn agents. Off removes the task tool and the delegation instructions from the system prompt. Agent Delegation and the Roster keep their values and apply again when this is on.
agent.delegationAgent DelegationenumpreferredHow strongly the system prompt calls for work to be delegated to enabled agents. Allowed: the task tool is available and the prompt does not call for delegation. Preferred: the prompt calls for substantial eligible work to be delegated. Required: Preferred plus a reminder on the first turn. Work no enabled agent covers stays with the main agent. Values: allowed, preferred, required.
agent.batchBatch Task CallsbooleantrueUse the batch schema for the task tool: one call carries a shared context and a list of tasks, one agent per task. With async agents on, each task runs as a background agent; otherwise the call blocks until every task returns. Off uses the single-task schema. Shown under the tab’s Advanced fold.

Agents

KeySettingTypeDefaultWhat it does
agent.agentsRosterrecord{}Which agent types the model may spawn and what each one runs. Enabled: the model may pick that agent. Disabled: it may not. With no rows, only the deep agent is enabled. Each agent’s page sets its Model, its Effort and which agents it may spawn in turn; an unset value follows the level above, then the default model role.
agent.maxNestedSpawnDepthMax Nested Spawn Depthnumber0How many levels deep spawned agents may spawn further agents, where an agent’s own page does not set it. Parent only: agents this session spawns do not receive the task tool.
agent.sharedModelSame Model for All AgentsbooleanfalseRun every spawned agent on one Model and one Effort. Off: each agent’s page sets its own. On: Shared Model and Shared Effort below apply to every agent and the per-agent rows are hidden; their values are kept for when this is off again.
agent.modelShared ModelmodelChain(unset)The model chain every spawned agent runs while Same Model for All Agents is on. Unset: the default model role.
agent.thinkingLevelShared Effortstring(unset)The effort every spawned agent runs at while Same Model for All Agents is on. Limited to the levels the shared model supports; a :level suffix on the model chain takes precedence. Inherit: the model’s default.
agent.showResolvedModelBadgeShow Resolved Model BadgebooleantrueShow each spawned agent’s resolved model, and the setting that selected it, in the task widget status line and on the agent surfaces. Shown under the tab’s Advanced fold.

Limits

KeySettingTypeDefaultWhat it does
agent.maxConcurrencyMax Concurrent Agentsnumber32Maximum number of spawned agents running at once. Unlimited: no cap.
agent.maxRuntimeMsMax Agent Runtimenumber0Maximum wall-clock time a spawned agent may run. An agent that reaches it is aborted with a ‘timed out’ reason. Unlimited: no limit.
agent.softRequestBudgetSoft Request Budgetnumber200Number of model requests a spawned agent may make per run before it is asked to wrap up. At 1.5 times this number the run is stopped and the agent returns what it has. Disabled: no limit. The bundled scout and sonic agents have a lower built-in budget.
agent.softRequestBudgetNoticeSoft Request Budget NoticebooleantrueSend an agent one steering notice when it crosses its Soft Request Budget, asking it to wrap up before the forced stop.
agent.enableLspLSP in AgentsbooleanfalseAllow spawned agents to use the lsp tool. Off keeps agents cheaper.

Idle Agents

KeySettingTypeDefaultWhat it does
agent.idleTtlMsPark Idle Agents Afternumber300000How long a spawned agent that has finished its turn stays live before it is parked. A parked agent releases its process, MCP clients and memory; it stays in the roster and is rebuilt from its transcript when messaged or opened. Counted from the agent’s last activity. Until exit: idle agents stay live for the whole session.
agent.prune.enabledPrune Parked AgentsbooleantrueRemove parked agents from the roster after Prune After. A pruned agent cannot be messaged or opened again; its transcript stays on disk and readable at history://<agent>. Off: parked agents stay in the roster until the session exits.
agent.prune.afterMsPrune Afternumber3600000How long a parked agent stays in the roster before it is pruned, counted from when it was parked.
agent.prune.waitingAfterMsPrune After While Waitingnumber7200000Prune After for a parked agent whose last message was that it is waiting on another agent. A value below Prune After is raised to it.

Isolation

KeySettingTypeDefaultWhat it does
agent.isolation.modeIsolation ModeenumnoneFilesystem isolation for spawned agents. Auto picks the best backend available on this host: a copy-on-write filesystem, then overlayfs or ProjFS, then a git worktree or a recursive copy. A named backend the host cannot provide falls back the same way; the agent’s result then opens with the backend it ran on and why, and the fallback is logged. Values: none, auto, apfs, btrfs, zfs, reflink, overlayfs, projfs, block-clone, rcopy.
agent.isolation.mergeIsolation Merge StrategyenumpatchHow an isolated agent’s changes are brought back: as one applied patch, or as a merged branch. Values: patch, branch.
agent.isolation.commitsIsolation Commit StyleenumgenericCommit message style for changes made inside nested repositories. Values: generic, ai.
worktree.baseWorktree Base Directorystring(unset)Base directory for the worktrees this program manages: agent isolation copies, github PR checkouts and veyyon worktree cleanup. Unset: the active profile’s wt/ directory (~/.veyyon/profiles/<name>/wt, or its XDG data equivalent). Absolute or ~-relative; a relative path is ignored. The VEYYON_WORKTREE_DIR environment variable overrides this.

Coordination

KeySettingTypeDefaultWhat it does
irc.timeoutMsIRC Timeoutnumber120000How long an irc wait, or an irc send with await, waits for a reply before it returns without one. Disabled: waits until a reply arrives.

Providers

Accounts

KeySettingTypeDefaultWhat it does
accounts.loadBalancingAccount Load BalancingbooleanfalseOff: only the account you chose is used, and a session waits out its quota window. On: when that account hits its quota or rate limit, continue on another account of the same provider and say so. A revoked account always fails over regardless, with a notice.

Services

KeySettingTypeDefaultWhat it does
providers.maxInFlightRequestsMax In-Flight Requestsrecord{}Maximum concurrent LLM requests per provider id (for example “openai” or “anthropic”), shared across local veyyon processes with this config root. Omitted providers are unlimited.
providers.ollama-cloud.maxConcurrencyOllama Cloud Max Concurrencynumber3Maximum concurrent Ollama Cloud agent runs per process; 0 disables the provider-specific limit.
providers.webSearchWeb Search ProviderenumautoThe provider web_search uses; auto tries each in turn. Values: auto, perplexity, gemini, anthropic, codex, xai, zai, exa, tinyfish, jina, kagi, tavily, firecrawl, brave, kimi, parallel, synthetic, searxng, startpage, duckduckgo, google, mojeek, public.
providers.webSearchExcludeExcluded Web Search Providersarray[]Providers that web_search should never use, even as fallbacks.
providers.webSearchGeminiModelGemini web_search modelstring(unset)Model ID for Gemini Google Search grounding. Defaults to gemini-2.5-flash.
providers.antigravityEndpointAntigravity Endpoint ModeenumautoEndpoint routing strategy for google-antigravity providers (chat, search, image, discovery). Values: auto, production, sandbox.
providers.imageImage ProviderenumautoPreferred provider for image generation. Values: auto, openai, antigravity, xai, gemini, openrouter.
providers.ttsText-to-Speech ProviderenumautoBackend for the tts tool: local on-device neural TTS (Kokoro-82M) or xAI Grok Voice. Values: auto, local, xai.
tts.localModelLocal TTS ModelenumkokoroOn-device neural TTS model (Kokoro-82M) used by the local TTS backend. Values: kokoro.
tts.localVoiceLocal TTS Voiceenumaf_heartKokoro voice used by the local TTS backend (American/British, female/male). Values: af_heart, af_bella, af_nicole, af_aoede, af_kore, af_sarah, am_michael, am_fenrir, am_puck, bf_emma, bm_george, bm_fable.
speech.enabledSpeech VocalizationbooleanfalseSpeak the assistant’s output aloud through the speakers as it streams.
speech.modeSpeech Vocalization ModeenumassistantWhat to speak: all = assistant messages + thinking; assistant = messages only; yield = only the final message at turn end. Values: all, assistant, yield.
speech.enhancedEnhanced Speech RewritingbooleanfalseRewrite assistant output into natural spoken prose with the tiny/smol model before synthesis (describes code, drops links and markdown). Falls back to mechanical cleanup on failure.
speech.voiceSpeech Vocalization Voiceenumaf_heartKokoro voice used when speaking the assistant’s output aloud. Values: af_heart, af_bella, af_nicole, af_aoede, af_kore, af_sarah, am_michael, am_fenrir, am_puck, bf_emma, bm_george, bm_fable.
providers.fetchFetch ProviderenumautoReader backend priority for the fetch/read URL tool. Values: auto, native, trafilatura, lynx, parallel, jina.
codexResets.autoRedeemCodex Auto-Redeem Saved ResetsenumunsetWhen a turn is blocked by the Codex weekly limit on the active account and no other account is available, run the saved-reset check. Unset: prompt before spending the first eligible reset. Yes: spend eligible resets without prompting. No: skip the check. Requires retries enabled. Values: unset, yes, no.
codexResets.minBlockedMinutesCodex Auto-Redeem Min Blocknumber60Only auto-redeem when the natural weekly reset is at least this many minutes away (don’t spend a ~30-day credit to save a short wait).
codexResets.keepCreditsCodex Auto-Redeem Reservenumber0Never auto-spend below this many saved resets (0 = the last credit may be spent automatically).
exa.enabledExabooleantrueMaster toggle for all Exa search tools.
exa.enableSearchExa SearchbooleantrueEnable Exa basic search, deep search, code search, and crawl tools.
exa.searchDelayMsExa Search Delaynumber1000Minimum delay between Exa web search requests in milliseconds; set 0 to disable pacing.
exa.enableResearcherExa ResearcherbooleanfalseEnable the Exa researcher tool for AI-powered deep research.
exa.enableWebsetsExa WebsetsbooleanfalseEnable Exa webset management and enrichment tools.
searxng.endpointSearXNG Endpointstring(unset)Base URL of a self-hosted SearXNG instance used for web search.

Discovery

KeySettingTypeDefaultWhat it does
discovery.importForeignConfigImport Other Tools’ ConfigbooleanfalseImport skills, context files, rules and MCP servers that other AI tools (Claude, Codex, Gemini, Cursor, opencode and others) keep on disk, as a base layer under veyyon’s own. Off: only the system prompt, ~/.veyyon/AGENTS.md, the profile’s AGENTS.md and the project’s AGENTS.md or CLAUDE.md files from the repository root down to the working directory are read.

Fireworks

KeySettingTypeDefaultWhat it does
providers.fireworksTierFireworks TierenumstandardServing path for Fireworks requests. Priority sends service_tier: "priority" for higher reliability during peak traffic at a higher price; Standard omits it. Fast (-fast) models ignore this — Fast is its own serving path. Values: standard, priority.

Tiny Model

KeySettingTypeDefaultWhat it does
providers.tinyModelSession Title ModelenumonlineModel that writes session titles. Online: the Tiny role from /models, else @smol. Local: an on-device model. Values: online, lfm2-350m, qwen3-0.6b, gemma-270m, qwen2.5-0.5b, lfm2-700m.
providers.tinyModelDeviceTiny Model DeviceenumdefaultONNX execution provider for local tiny models (titles + memory). Default uses CPU-only inference. The VEYYON_TINY_DEVICE env var overrides this. Values: default, gpu, cpu, metal, webgpu, cuda, dml, coreml, auto, wasm, webnn, webnn-gpu, webnn-cpu, webnn-npu.
providers.tinyModelDtypeTiny Model PrecisionenumdefaultONNX quantization/precision for local tiny models. Default uses each model’s shipped dtype (q4); lower precision is faster, higher is more faithful. The VEYYON_TINY_DTYPE env var overrides this. Values: default, q4, q4f16, q8, fp16, fp32, int8, uint8, bnb4, q2, q2f16, q1, q1f16, auto.
providers.unexpectedStopModelUnexpected Stop ModelenumonlineModel that classifies whether a turn stopped unexpectedly. Online: the Tiny role from /models, else @smol. Local: an on-device model. Values: online, qwen3-1.7b, llama3.2:3b, gemma-3-1b, qwen2.5-1.5b, lfm2-1.2b.

Protocol

KeySettingTypeDefaultWhat it does
providers.kimiApiFormatKimi API FormatenumanthropicAPI format for Kimi Code provider. Values: openai, anthropic.
providers.openaiWebsocketsOpenAI WebSocketsenumautoWebsocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables). Values: auto, off, on.
providers.openrouterVariantOpenRouter RoutingenumdefaultDefault routing-variant suffix appended to OpenRouter model IDs (overridden when the selector already names a variant). Values: default, nitro, floor, online, exacto.
provider.appendOnlyContextAppend-Only ContextenumautoCache system prompt + tool specs and keep an append-only message log so provider prefix caches (DeepSeek, Xiaomi/SGLang, Anthropic) hit at maximum rate. Auto enables for known prefix-cache providers. Values: auto, on, off.

Timeouts

KeySettingTypeDefaultWhat it does
providers.streamFirstEventTimeoutSecondsStream First Event Timeoutnumber-1Seconds to wait for the first model stream event; -1 uses provider/env defaults, 0 disables the watchdog.
providers.streamIdleTimeoutSecondsStream Idle Timeoutnumber-1Seconds a model stream may stay silent between events; -1 uses provider/env defaults, 0 disables the watchdog.

Privacy

KeySettingTypeDefaultWhat it does
images.blockImagesBlock ImagesbooleanfalsePrevent images from being sent to LLM providers.
secrets.enabledHide SecretsbooleanfalseObfuscate secrets before sending to AI providers. Storing a credential with /secret turns this on for you.
secrets.defaultTtlSecret Lifetimestring1dHow long a /secret lasts when the command does not say. Default 1d; also accepts forms like 30m, 12h, 7d, 2w, or “never”.
secrets.auditLogRecord Secret UsebooleantrueAppend which secret was used in which command to the profile’s log. Never records values.
secrets.expiryWarningsWarn Before A Secret ExpiresbooleantrueSay at the start of a session when a stored secret is halfway through its lifetime, and again near the end. Off: /secret list still shows the STATUS column and the status line still shows a deadline in the last hour.

Experimental

Argot

KeySettingTypeDefaultWhat it does
argot.enabledArgot ShorthandbooleanfalseLoad per-project shorthand so the model writes short handles that are expanded to full text before any tool runs or the screen shows them. The launch project is loaded at start; the model loads others with the argot_load tool. Dictionaries are kept in a local cache; nothing is written to the repository.
argot.autoloadArgot Startup LoadbooleantrueLoad the project you started the session in, in the background, so shorthand works without the model spending a turn on it. Off, a session starts with no dictionary until the model calls argot_load itself. Either way a handle already written still expands.
argot.encode.modelsArgot Modelsarray[]Models allowed to write Argot shorthand, by model id. Empty (the default) means no model does, so turning Argot on alone stays inert until you add one here. A model left off this list is never taught the shorthand; handles already in history still expand.
argot.tokenBudgetArgot Dictionary Budgetnumber1000How many tokens the generated Argot dictionary may spend on its handle table. A larger budget teaches more handles (more transcript savings) but adds a longer preamble each turn; a smaller budget teaches only the most central strings. Changing it regenerates the dictionary.
argot.encode.disableAboveTokensArgot Context Cutoffnumber-1Stop teaching Argot shorthand once context passes this many tokens (the model then writes in full). Handles already written still expand losslessly. -1 disables the cutoff.
argot.agentsArgot in Spawned AgentsenumoffHow a spawned agent starts with Argot shorthand. Correctness never depends on this (handles never cross the parent/child wire); it only trades tokens. off: no shorthand in spawned agents. fresh: the spawned agent loads its task’s project itself through argot_load. inherit: the spawned agent starts from a copy of the parent’s loaded shorthand. Values: off, fresh, inherit.

Tool Calling

KeySettingTypeDefaultWhat it does
tools.formatTool Calling ModeenumautoControls how tools are exposed to the model. Auto uses provider-native tool calls unless the selected model is marked as not supporting them, then falls back to the GLM owned dialect. Native forces provider-native tools; the other values force the named owned dialect. Applies on session start. Values: auto, native, glm, hermes, kimi, xml, anthropic, deepseek, harmony, qwen3, gemini, gemma, minimax, pi-native.

Auto-Learn

KeySettingTypeDefaultWhat it does
autolearn.enabledEnable Auto-LearnbooleanfalseAfter the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills.
autolearn.autoContinueAuto-run capture at stopbooleanfalseWhen on, auto-run one capture turn at stop (uses extra tokens). Off = passive reminder on your next turn.

Global

Machine Limits

KeySettingTypeDefaultWhat it does
machine.cpuLimitCoresMachine CPU Limitnumber0Maximum CPU all veyyon sessions on this machine may use together, in cores. Off: no limit. Stored in ~/.veyyon/config.yml and bounds the sum across profiles. Stored machine-wide, not per profile.
machine.memoryLimitGbMachine Memory Limitnumber0Maximum resident memory all veyyon sessions on this machine may use together, in gigabytes. Off: no limit. Stored in ~/.veyyon/config.yml and bounds the sum across profiles. Stored machine-wide, not per profile.
machine.writeBudgetGbMachine Write Budgetnumber0Cumulative disk writes permitted for all veyyon sessions on this machine, in gigabytes. Off: no limit. Stored in ~/.veyyon/config.yml and bounds the sum across profiles. Stored machine-wide, not per profile.
machine.maxProcessesMachine Max Processesnumber0Maximum concurrent processes that all veyyon sessions on this machine may run together. Off: no limit. Stored in ~/.veyyon/config.yml and bounds the sum across profiles. Stored machine-wide, not per profile.

Profiles

KeySettingTypeDefaultWhat it does
defaultProfileDefault ProfilestringdefaultProfile used when no –profile flag or VEYYON_PROFILE environment variable is set. Stored in ~/.veyyon/config.yml. Setting to default clears the override. Stored machine-wide, not per profile.
onboardingVersionOnboarding Versionnumber0Setup version completed on this machine. Stored in ~/.veyyon/config.yml. Stored machine-wide, not per profile.

Credentials

KeySettingTypeDefaultWhat it does
profileSharingShare Credentials Across ProfilesbooleantrueShare provider logins between profiles. On: every profile reads one machine-wide credential store. Off: each profile has its own. Changing it shuts down the active session; restart before the next model request. Stored machine-wide, not per profile.

Auth Broker

KeySettingTypeDefaultWhat it does
authBrokerUrlAuth Broker URLstring(empty)Base URL of the auth broker providing credentials for this machine. Stored in ~/.veyyon/config.yml. Leave empty to disable broker discovery. Stored machine-wide, not per profile.
authBrokerTokenAuth Broker Tokenstring(empty)Bearer token for the auth broker. Write-only: a stored token shows as a mask and is never echoed. Enter a new value to replace it, leave the mask to keep it, or clear the field to delete it. Stored machine-wide, not per profile.

Configuration file only

These keys are not in /settings. Some are state veyyon writes for itself (a schema version, an onboarding marker), some are credentials that belong in a secret store rather than on a settings screen, and the rest are shapes a selector cannot edit, such as a table of patterns. All of them are read by production code, all of them are valid in config.yml, and all of them can be set with veyyon config set.

KeyTypeDefaultNotes
agent.modelByDepthrecord{}Retired: use agent.agents instead.
async.maxJobsnumber100
auth.broker.tokenstring(unset)
auth.broker.urlstring(unset)
autolearn.minToolCallsnumber5
bashInterceptor.patternsarray[{"pattern":"^\\s*(cat|head|tail|less|more)\\s+","tool":"read","message":"Use the readtool instead of cat/head/tail. It provides better context and handles binary files."},{"pattern":"^\\s*(grep|rg|ripgrep|ag|ack)\\s+","tool":"search","message":"Usesearchwithtype: "text"instead of shell grep/rg."},{"pattern":"^\\s*(find|fd|locate)\\s+.*(-name|-iname|-type|--type|-glob)","tool":"search","message":"Usesearchwithtype: "files"instead of shell find/fd."},{"pattern":"^\\s*sed\\s+(-i|--in-place)","tool":"edit","message":"Use theedittool instead of sed -i. It provides diff preview and fuzzy matching."},{"pattern":"^\\s*perl\\s+.*-[pn]?i","tool":"edit","message":"Use theedittool instead of perl -i. It provides diff preview and fuzzy matching."},{"pattern":"^\\s*awk\\s+.*-i\\s+inplace","tool":"edit","message":"Use theedittool instead of awk -i inplace. It provides diff preview and fuzzy matching."},{"pattern":"^\\s*(echo|printf|cat\\s*\<\<)\\s+(?:(?:[^\"'>]|\"[^\"]*\"|'[^']*')|(?\<!\\|)>{1,2}\\|?\\s*(?:\"/dev/(?:null|tty|stdout|stderr)\"|'/dev/(?:null|tty|stdout|stderr)'|/dev/(?:null|tty|stdout|stderr))(?:[\\s;&|]|$))*(?\<!\\|)>{1,2}\\|?\\s*(?!(?:\"/dev/(?:null|tty|stdout|stderr)\"|'/dev/(?:null|tty|stdout|stderr)'|/dev/(?:null|tty|stdout|stderr))(?:[\\s;&|]|$))[$\\w./~\"'-]","tool":"write","message":"Use thewritetool instead of echo/cat redirection. It handles encoding and provides confirmation."},{"pattern":"^\\s*nohup\\s+|(?\<!&)\\&\\s*$","tool":"launch","message":"Use thelaunchtool instead of nohup or background shell syntax so the process stays observable and managed."},{"pattern":"^\\s*(?:(?:bun|npm|pnpm|yarn)\\s+(?:run\\s+)?(?:dev|start)(?:\\s|$)|(?:vite|next\\s+dev|nuxt\\s+dev|nodemon|lldb|gdb|tail\\s+-f)(?:\\s|$)|docker\\s+compose\\s+up(?!.*(?:\\s-d(?:\\s|$)|--detach))(?:\\s|$))","tool":"launch","message":"Use thelaunchtool for services, watchers, and debuggers so other veyyon instances can observe and control them."},{"pattern":"^\\s*(?:(?:bun|npm|pnpm|yarn)\\s+(?:run\\s+)?\\S+|cargo\\s+watch|watchexec|pytest|vitest|jest|tsc)(?:.|\\n)*(?:--watch|-w)(?:\\s|$)","tool":"launch","message":"Use thelaunch tool for watch mode so its output, input, and lifecycle stay managed."}]
branchSummary.reserveTokensnumber16384
commit.changelogMaxDiffCharsnumber120000
commit.mapReduceEnabledbooleantrue
commit.mapReduceMaxConcurrencynumber5
commit.mapReduceMaxFileTokensnumber50000
commit.mapReduceMinFilesnumber4
commit.mapReduceTimeoutMsnumber120000
compaction.autoContinuebooleantrue
compaction.dropUselessbooleantrue
compaction.enabledbooleantrue
compaction.handoffSaveToDiskbooleanfalse
compaction.idleEnabledbooleanfalse
compaction.idleThresholdTokensnumber200000
compaction.idleTimeoutSecondsnumber300
compaction.keepRecentTokensnumber10000
compaction.midTurnEnabledbooleantrue
compaction.remoteEndpointstring(unset)
compaction.reserveTokensnumber(unset)
compaction.supersedeReadsbooleantrue
compaction.thresholdPercentnumber-1Retired: use compaction.threshold instead.
compaction.thresholdTokensnumber-1Retired: use compaction.threshold instead.
cycleOrderarray["smol","slow"]
defaultThinkingLevelenumhighValues: minimal, low, medium, high, xhigh, max, auto. Retired: use defaultEffort instead.
dev.autoqaPush.tokenstring(unset)
disabledExtensionsarray[]
disabledProvidersarray[]
edit.modelVariantsrecord{}
enabledModelsarray[]
eval.pyWorkspacebooleanfalse
extensionsarray[]
gc.archivebooleantrue
gc.blobsbooleantrue
gc.coldArchiveAfterDaysnumber30
gc.retainNewestGlobalnumber20
gc.retainNewestPerCwdnumber10
gc.walbooleantrue
gc.writeGraceMinutesnumber5
harness.profilesrecord{}
hindsight.apiTokenstring(unset)
hindsight.bankIdPrefixstring(unset)
hindsight.bankMissionstring(unset)
hindsight.debugbooleanfalse
hindsight.mentalModelMaxRenderCharsnumber16000
hindsight.mentalModelRefreshIntervalMsnumber300000
hindsight.recallBudgetenummidValues: low, mid, high.
hindsight.recallContextTurnsnumber1
hindsight.recallMaxQueryCharsnumber800
hindsight.recallMaxTokensnumber1024
hindsight.recallTimeoutMsnumber30000
hindsight.recallTypesarray["world","experience"]
hindsight.reflectTimeoutMsnumber120000
hindsight.requestTimeoutMsnumber30000
hindsight.retainContextstringveyyon
hindsight.retainEveryNTurnsnumber3
hindsight.retainMissionstring(unset)
hindsight.retainOverlapTurnsnumber2
hindsight.retainTimeoutMsnumber60000
memories.fallbackTokenLimitnumber16000
memories.maxRawMemoriesForGlobalnumber200
memories.maxRolloutAgeDaysnumber30
memories.maxRolloutsPerStartupnumber64
memories.minRolloutIdleHoursnumber12
memories.phase1InputTokenLimitnumber4000
memories.phase2HeartbeatSecondsnumber30
memories.phase2LeaseSecondsnumber180
memories.phase2RetryDelaySecondsnumber180
memories.rolloutPayloadPercentnumber0.7
memories.stage1Concurrencynumber8
memories.stage1LeaseSecondsnumber120
memories.stage1RetryDelaySecondsnumber120
memories.summaryInjectionTokenLimitnumber5000
memories.threadScanLimitnumber300
mnemopi.debugbooleanfalse
mnemopi.injectionTokenLimitnumber5000
mnemopi.recallContextTurnsnumber3
mnemopi.recallLimitnumber8
mnemopi.recallMaxQueryCharsnumber4000
mnemopi.retainEveryNTurnsnumber4
modelProviderOrderarray[]
modelTagsrecord{}
retry.baseDelayMsnumber500
retry.enabledbooleantrue
searxng.basicPasswordstring(unset)
searxng.basicUsernamestring(unset)
searxng.categoriesstring(unset)
searxng.languagestring(unset)
searxng.tokenstring(unset)
settingsMigrationVersionnumber0
setupVersionnumber0Retired: use onboardingVersion instead.
shellMinimizer.exceptarray[]
shellMinimizer.legacyFiltersboolean(unset)
shellMinimizer.maxCaptureBytesnumber4194304
shellMinimizer.onlyarray[]
shellMinimizer.settingsPathstring(unset)
shellPathstring(unset)
skills.enabledbooleantrue
skills.ignoredSkillsarray[]
skills.includeSkillsarray[]
statusLine.leftSegmentsarray[]
statusLine.rightSegmentsarray[]
statusLine.segmentOptionsrecord{}
statusLine.separatorenumpipeValues: powerline, powerline-thin, slash, pipe, block, none, ascii.
statusLine.transparentbooleantrue
stt.languagestringen
thinkingBudgets.highnumber16384
thinkingBudgets.lownumber2048
thinkingBudgets.maxnumber32768
thinkingBudgets.mediumnumber8192
thinkingBudgets.minimalnumber1024
thinkingBudgets.xhighnumber32768
ttsr.experimentalRulesarray[]
tui.maxInlineImageColumnsnumber100
tui.maxInlineImageRowsnumber20
tui.maxInlineImagesnumber8

353 settings in /settings, 120 configuration-file keys, 473 in all.