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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
theme.dark | Dark Theme | string | titanium | Theme used when the terminal has a dark background. |
theme.light | Light Theme | string | light | Theme used when the terminal has a light background. |
symbolPreset | Symbol Preset | enum | unicode | Glyph set for icons and symbols (Unicode, Nerd Font, or ASCII). Values: unicode, nerd, ascii. |
colorBlindMode | Color-Blind Mode | boolean | false | Use blue instead of green for diff additions. |
Status Line
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
statusLine.enabled | Composer Footline | boolean | true | Show 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.preset | Status Line Preset | enum | default | Pre-built status line configurations. Values: default, minimal, compact, full, nerd, ascii, custom. |
statusLine.sessionAccent | Session Accent | boolean | true | Use the session name color for the editor border. Shown under the tab’s Advanced fold. |
statusLine.compactThinkingLevel | Compact Thinking Level | boolean | false | Show 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.showHookStatus | Show Hook Status | boolean | true | Display hook status messages below the status line. Shown under the tab’s Advanced fold. |
statusLine.showAccount | Show Serving Account | boolean | false | Name 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
terminal.showImages | Show Inline Images | boolean | true | Render images inline in the terminal. |
images.autoResize | Auto-Resize Images | boolean | true | Resize large images to 2000x2000 max for better model compatibility. Shown under the tab’s Advanced fold. |
terminal.showProgress | Native Terminal Progress | boolean | false | Emit OSC 9;4 indeterminate progress while the agent or context maintenance is running. Shown under the tab’s Advanced fold. |
tui.textSizing | Large Headings (Kitty) | boolean | false | Render 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.renderMermaid | Render Mermaid Diagrams | boolean | true | Render Mermaid fenced code blocks as ASCII diagrams. Shown under the tab’s Advanced fold. |
tui.hyperlinks | Terminal Hyperlinks | enum | auto | Wrap 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.paintGround | Paint Theme Ground | enum | auto | Set 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.tight | Tight Layout | boolean | false | Remove the 1-character horizontal padding from the left and right of the terminal output. Shown under the tab’s Advanced fold. |
tui.scrollbackRebuild | Rewrite Scrollback | boolean | true | Erase 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.scrollIsolation | Scroll Isolation | boolean | false | Take 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.transitions | Transitions | enum | on | Structural motion: overlay open transitions and the moving rail beside a running tool. Values: on, off. |
display.shimmer | Shimmer | enum | disabled | Animation style for working/loading messages. Values: classic, kitt, living, disabled. |
display.smoothStreaming | Smooth Streaming | boolean | true | Reveal assistant text and streamed tool input smoothly while chunks arrive. |
display.showTokenUsage | Show Token Usage | boolean | false | Show what each turn spent under the assistant message: tokens, how long it took, and its rate. |
display.cacheMissMarker | Cache Miss Marker | boolean | false | Show a divider above an assistant turn whose request lost (missed) the prompt cache. Shown under the tab’s Advanced fold. |
display.toolOutputExpanded | Expand Tool Output | boolean | false | Start 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. |
showHardwareCursor | Show Hardware Cursor | boolean | true | Show terminal cursor for IME support. Shown under the tab’s Advanced fold. |
Model
Compaction
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
display.collapseCompacted | Collapse Compacted History | boolean | true | Collapse 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.remote | Remote Compaction | boolean | true | Compact 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.strategy | Compaction Type | enum | summary | Summary condenses history in place and continues the same session. Values: summary. |
compaction.threshold | Auto-Compaction Threshold | string | auto | When 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.model | Compaction Model | modelChain | (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.modelFallbackStrategy | Compaction Fallback | enum | auto | What 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.modelContextWindow | Compaction Model Context | number | (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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
modelRoles | Role Models | record | {} | 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
defaultEffort | Default Effort | record | {} | 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. |
hideThinkingBlock | Hide Thinking Blocks | boolean | false | Hide thinking blocks in assistant responses. |
proseOnlyThinking | Prose Only Thinking | boolean | true | Omit code blocks from thinking summaries and replace them with an ellipsis. |
omitThinking | Omit Thinking summaries | boolean | false | Instruct upstream providers to completely omit thinking summaries from responses (where supported). |
model.loopGuard.enabled | Loop Guard | boolean | true | Enable automatic stream loop detection for model reasoning and prose. |
model.loopGuard.checkAssistantContent | Loop Guard Scan Prose | boolean | true | Apply loop guard to assistant prose messages in addition to thinking logs. |
model.loopGuard.toolCallReminder | Loop Guard Tool-Call Reminder | boolean | true | When 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.enabled | Tool-Call Loop Guard | boolean | true | Detect consecutive identical tool calls across turns and inject a corrective steer. |
model.toolCallLoopGuard.threshold | Tool-Call Loop Threshold | number | 5 | Consecutive identical tool calls required before the corrective steer is injected. |
model.toolCallLoopGuard.readSubsumptionThreshold | Read Subsumption Loop Threshold | number | 3 | Consecutive fully-subsumed or redundant read calls on unchanged files before the corrective steer is injected. |
model.toolCallLoopGuard.exemptTools | Tool-Call Loop Exempt Tools | array | ["job","irc"] | Tool names that may repeat consecutively without triggering the cross-turn loop guard. |
providers.autoThinkingModel | Auto Thinking Model | enum | online | Model 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
temperature | Temperature | number | (unset) | Sampling temperature. 0 is deterministic, 1 is creative. Unset lets the provider choose. |
topP | Top P | number | (unset) | Nucleus sampling cutoff, 0 to 1. Unset lets the provider choose. |
topK | Top K | number | (unset) | Sample from the top K tokens. Unset lets the provider choose. |
minP | Min P | number | (unset) | Minimum probability threshold, 0 to 1. Unset lets the provider choose. |
presencePenalty | Presence Penalty | number | (unset) | Penalty for introducing tokens already present. Negative values encourage repetition; unset lets the provider choose. |
repetitionPenalty | Repetition Penalty | number | (unset) | Penalty for repeated tokens. Values below 1 encourage repetition; unset lets the provider choose. |
textVerbosity | Text Verbosity | enum | medium | OpenAI Responses and Codex response verbosity (low, medium, or high). Values: low, medium, high. |
tier.openai | Service Tier — OpenAI | enum | none | How 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.anthropic | Service Tier — Anthropic | enum | none | How 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.google | Service Tier — Google | enum | none | How 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.agent | Service Tier — Spawned Agents | enum | inherit | How 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.advisor | Service Tier — Advisor | enum | none | How 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
inlineToolDescriptors | Inline Tool Descriptors | enum | auto | Render 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. |
includeModelInPrompt | Include Model in Prompt | boolean | false | Surface 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. |
includeWorkspaceTree | Include Workspace Tree | boolean | false | Render the workspace directory tree in the system prompt. WARNING: This can bust prompt caching across sessions when files are modified. |
personality | Personality | string | default | Communication style rendered into the system prompt’s personality block. Extend via ~/.veyyon/personalities/<name>.md or project .veyyon/personalities/<name>.md. |
Retry & Fallback
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
retry.maxRetries | Retry Attempts | number | 10 | Maximum retry attempts on API errors. |
retry.maxDelayMs | Max Retry Delay | number | 300000 | Maximum 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.modelFallback | Retry Model Fallback | boolean | true | Allow retry recovery to switch to configured fallback models. |
retry.fallbackChains | Retry Fallback Chains | record | {} | 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.perProvider | Per-Provider Retry | record | {} | 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.fallbackRevertPolicy | Fallback Revert Policy | enum | cooldown-expiry | When to return to the primary model after a fallback. Values: cooldown-expiry, never. |
providers.anthropic.serverSideFallback | Anthropic Server-Side Fallback (Fable 5) | boolean | false | Retry 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
advisor.enabled | Enable Advisor | boolean | false | Pair a second model that passively reviews each turn and injects notes. Which model it runs is Advisor Model, directly below. |
advisor.agents | Advisor for Spawned Agents | boolean | false | Also enable the advisor on spawned task/eval agents. |
advisor.syncBacklog | Advisor Sync Backlog | enum | off | Pause 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.immuneTurns | Advisor Immune Turns | number | 3 | After an advisor concern or blocker interrupts, route further concerns/blockers non-interruptingly for this many primary turns. |
Prewalk
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
prewalk.enabled | Enable Prewalk | boolean | false | Start 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.cheapModel | Prewalk Cheap Model | modelChain | (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.strongModel | Prewalk Strong Model | modelChain | (unset) | Model a prewalk session starts on. Unset: the normal start model (–model or the remembered default). Only the first entry is used. |
Vision
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
images.describeForTextModels | Describe Images for Text Models | boolean | true | When 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
steeringMode | Steering Mode | enum | one-at-a-time | How to process queued messages while agent is working. Values: all, one-at-a-time. |
followUpMode | Follow-Up Mode | enum | one-at-a-time | How to drain follow-up messages after a turn completes. Values: all, one-at-a-time. |
interruptMode | Interrupt Mode | enum | immediate | When steering messages interrupt tool execution. Values: immediate, wait. |
loop.mode | Loop Mode | enum | prompt | What happens between /loop iterations before re-submitting the prompt. Values: prompt, compact, reset. |
doubleEscapeAction | Double-Escape Action | enum | tree | Action when pressing Escape twice with empty editor. Values: branch, tree, none. |
treeFilterMode | Session Tree Filter | enum | default | Default filter mode when opening the session tree. Values: default, no-tools, user-only, labeled-only, all. |
autocompleteMaxVisible | Autocomplete Items | number | 5 | Max visible items in autocomplete dropdown (3-20). |
emojiAutocomplete | Emoji Autocomplete | boolean | true | Suggest emojis from :name: shortcodes and expand text emoticons like :D or :-). |
paste.largeMenuThreshold | Large Paste Menu | number | 100 | When 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
session.newKeepsBackground | /new Keeps The Old Session | boolean | false | What /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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
tools.approval | Tool Approval Policies | record | {} | 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.protectedPaths | Extra Protected Paths | array | [] | 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.approvalMode | Tool Approval | enum | auto | How 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
completion.notify | Completion Notification | enum | off | Notify when the agent finishes a turn. Values: on, off. |
ask.timeout | Ask Timeout | number | 0 | Auto-select the recommended ask option after this many seconds (0 disables). |
ask.notify | Ask Notification | enum | on | Notify when the agent is blocked on a question you have not answered. Values: on, off. |
recap.enabled | Idle Recap | boolean | true | Generate a brief LLM recap of where things stand after the terminal has been idle. |
recap.idleSeconds | Idle Recap Delay | number | 240 | Seconds to wait while idle before showing the recap. |
Speech
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
stt.enabled | Speech-to-Text | boolean | false | Enable speech-to-text input via microphone. |
stt.modelName | Speech Model | enum | parakeet | Local 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.submitTrigger | Speech-to-Text Submit Trigger | enum | never | Choose 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
collab.relayUrl | Relay URL | string | wss://share.veyyon.dev | Relay used by /collab (wss://host[:port]). |
collab.webUrl | Web UI URL | string | (empty) | Browser UI used by /collab links; empty derives from collab.relayUrl; explicit http:// is localhost-only. |
collab.displayName | Display Name | string | (empty) | Name shown to other collab participants (default: OS username). |
share.serverUrl | Share Server | string | https://share.veyyon.dev/s | Share viewer/upload base used by /share (encrypted blob upload + viewer; links are <base>/<id>#<key>). |
share.store | Share Store | enum | blob | Where /share uploads the encrypted session blob. Values: blob, gist. |
share.redactSecrets | Share Secret Redaction | boolean | true | Run the secret obfuscator over /share snapshots before upload (uses the secrets.* config). |
Magic Keywords
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
magicKeywords.enabled | Enable Magic Keywords | boolean | true | Enable hidden notices for standalone ultrathink, orchestratez, and workflowz keywords. |
magicKeywords.ultrathink | Ultrathink Keyword | boolean | true | Let standalone ultrathink request maximum automatic thinking and append its hidden notice. |
magicKeywords.orchestrate | Orchestrate Keyword | boolean | true | Let standalone orchestratez append its hidden multi-agent orchestration notice. |
magicKeywords.workflow | Workflow Keyword | boolean | true | Let standalone workflowz append its hidden eval workflow notice. |
magicKeywords.turnBudget | Turn Budget Directive | boolean | false | Let 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
autoResume | Auto Resume | boolean | false | Automatically resume the most recent session in the current directory. |
startup.quiet | Quiet Startup | boolean | false | Skip welcome screen and startup status messages. |
startup.showSplash | Show Startup Splash | boolean | false | Show the full animated setup splash on normal interactive startup without rerunning setup. Quiet Startup still suppresses it. |
startup.clearScrollback | Clear Scrollback on Startup | boolean | false | Erase 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.setupWizard | Setup Wizard | boolean | true | Run onboarding on first install only (updates never re-run it). |
startup.checkUpdate | Check for Updates | boolean | true | Check for Veyyon updates on startup. |
marketplace.autoUpdate | Marketplace Auto-Update | enum | notify | Check for plugin updates on startup. Values: off, notify, auto. |
startup.autoUpdate | Automatic Updates | boolean | true | Install a newer version in the background; off means updates only when you run veyyon update. |
startup.updateNotice | Update Notice | boolean | true | Show a one-line notice on the first launch after an update. |
Profile
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
profile.displayName | Profile Name | string | (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.workdir | Default Working Directory | string | (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)
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
power.sleepPrevention | Sleep Prevention | enum | idle | Prevent macOS sleep while a session is active. Each level includes the levels below it. Values: off, idle, display, system. |
Agent
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
features.unexpectedStopDetection | Detect unexpected stops | boolean | false | Use a small model to detect when the assistant says it will continue but stops without tool calls; automatically prompt it to continue. |
Git
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
git.enabled | Enable Git Integration | boolean | true | Show git branch, status, and PR information in the TUI and watch repository metadata. |
Resources
CPU
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
session.cpuLimitCores | Session CPU Limit | number | 0 | Maximum CPU processes spawned by this session and its agents may use, in cores. Off: no limit. Stored in the active profile. |
session.cpuLimitKill | Kill Over-Budget Commands | boolean | false | Controls 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
session.memoryLimitGb | Session Memory Limit | number | 0 | Maximum resident memory processes spawned by this session and its agents may use, in gigabytes. Off: no limit. Stored in the active profile. |
Disk
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
session.writeBudgetGb | Session Write Budget | number | 0 | Cumulative disk writes permitted for this session and its agents, in gigabytes. Off: no limit. Once reached, subsequent commands and tool writes are refused. |
session.writeBudgetKill | Kill Over-Budget Writers | boolean | false | Controls 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
session.maxProcesses | Session Max Processes | number | 0 | Maximum concurrent processes that this session and its agents may run. Off: no limit. Stored in the active profile. |
Context
General
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
contextPromotion.enabled | Auto-Promote Context | boolean | false | Promote to a larger-context model on context overflow instead of compacting. |
branchSummary.enabled | Branch Summaries | boolean | false | Prompt to summarize when leaving a branch. |
context.thinkingRetention | Thinking Retention | number | -1 | How 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.thoughtSignatureRetention | Thought Signature Retention | number | -1 | How 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.thoughtSignatureMaxLength | Thought Signature Size Limit | number | -1 | Longest 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
cache.reportRejection | Report Cache Rejections | boolean | true | Warn 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.blockOnRejection | Block On Cache Rejection | boolean | false | Anthropic only. Fail the next request after the provider rejects the prompt cache, instead of continuing at the full input rate. Off: continue. |
Session Instrumentation
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
session.instrumentation | Instrumentation Level | enum | off | Record 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
ttsr.builtinRules | Built-in Rules | boolean | true | Load the default rules shipped with the agent. Turn individual rules off under All Rules. |
ttsr.disabledRules | All Rules | array | [] | 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)
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
ttsr.enabled | TTSR | boolean | true | Interrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules). |
ttsr.contextMode | Context Mode | enum | discard | What to do with partial output when TTSR triggers. Values: discard, keep. |
ttsr.interruptMode | Rule Interrupt Mode | enum | always | When to interrupt mid-stream vs inject warning after completion. Values: never, prose-only, tool-only, always. |
ttsr.repeatMode | Repeat Mode | enum | once | How rules can repeat: once per session or after a message gap. A rule may override this in its frontmatter. Values: once, after-gap. |
ttsr.repeatGap | Repeat Gap | number | 10 | Messages before a rule can trigger again. A rule may override this in its frontmatter. |
Memory
General
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
memory.backend | Memory Backend | enum | off | Off, local summary pipeline, Mnemopi SQLite, or Hindsight remote memory. Values: off, local, hindsight, mnemopi. |
providers.memoryModel | Memory Model | enum | online | Model 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
mnemopi.dbPath | Mnemopi DB Path | string | (unset) | Optional SQLite DB path. Defaults to the agent memories directory. |
mnemopi.bank | Mnemopi Bank | string | (unset) | Optional shared bank base name. Per-project modes derive project-local banks from it. |
mnemopi.scoping | Mnemopi Scoping | enum | per-project | global = 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.embeddingVariant | Embedding variant | enum | en | Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start. Values: en, multilingual. |
mnemopi.autoRecall | Mnemopi Auto Recall | boolean | true | Recall local memories into the first turn of each session. |
mnemopi.autoRetain | Mnemopi Auto Retain | boolean | true | Retain completed conversation turns into local Mnemopi memory. |
mnemopi.polyphonicRecall | Mnemopi Polyphonic Recall | boolean | false | Enable 4-voice recall (vector, graph, fact, temporal) fused with reciprocal rank fusion. |
mnemopi.enhancedRecall | Mnemopi Enhanced Recall | boolean | false | Enable the tiered query result cache for repeated and similar recall queries. |
mnemopi.proactiveLinking | Mnemopi Proactive Linking | boolean | false | Ingest new memories into the episodic graph as they are stored, linking them to related entities and memories. |
mnemopi.noEmbeddings | Mnemopi Disable Embeddings | boolean | false | Force deterministic FTS-only recall instead of vector embeddings. |
mnemopi.embeddingModel | Mnemopi Embedding Model | string | (unset) | Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant. |
mnemopi.embeddingApiUrl | Mnemopi Embedding API URL | string | (unset) | Optional OpenAI-compatible embedding endpoint passed to Mnemopi. |
mnemopi.embeddingApiKey | Mnemopi Embedding API Key | string | (unset) | Optional embedding API key passed to Mnemopi. |
mnemopi.llmMode | Mnemopi LLM Mode | enum | smol | Use no LLM, the online tiny model (the TINY role from /models, else @smol), or a remote OpenAI-compatible endpoint. Values: none, smol, remote. |
mnemopi.llmBaseUrl | Mnemopi LLM Base URL | string | (unset) | Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode. |
mnemopi.llmApiKey | Mnemopi LLM API Key | string | (unset) | Optional LLM API key for Mnemopi remote mode. |
mnemopi.llmModel | Mnemopi LLM Model | string | (unset) | Optional LLM model name for Mnemopi remote mode. |
Hindsight
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
hindsight.apiUrl | Hindsight API URL | string | http://localhost:8888 | Hindsight server URL (Cloud or self-hosted). |
hindsight.bankId | Hindsight Bank ID | string | (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.scoping | Hindsight Scoping | enum | per-project-tagged | global = 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.autoRecall | Hindsight Auto Recall | boolean | true | Recall memories on the first turn of each session. |
hindsight.autoRetain | Hindsight Auto Retain | boolean | true | Retain transcript every N turns and at session boundaries. |
hindsight.retainMode | Hindsight Retain Mode | enum | full-session | full-session = upsert one document per session, last-turn = chunked. Values: full-session, last-turn. |
hindsight.mentalModelsEnabled | Hindsight Mental Models | boolean | true | Read 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.mentalModelAutoSeed | Hindsight Mental Model Auto-Seed | boolean | true | At session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank. |
Files
Editing
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
edit.mode | Edit Mode | enum | hashline | Select the edit tool variant (replace, patch, hashline, or apply_patch). Values: apply_patch, hashline, patch, replace. |
edit.fuzzyMatch | Fuzzy Match | boolean | true | Accept high-confidence fuzzy matches for whitespace differences. |
edit.fuzzyThreshold | Fuzzy Match Threshold | number | 0.95 | Similarity threshold (0-1) for accepting fuzzy matches. |
edit.streamingAbort | Abort on Failed Preview | boolean | false | Abort streaming edit tool calls when patch preview fails. |
edit.blockAutoGenerated | Block Auto-Generated Files | boolean | true | Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.). |
edit.afterEdit | After an Edit | enum | verify | What 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
readLineNumbers | Line Numbers | boolean | false | Prepend line numbers to read tool output by default. |
read.defaultLimit | Default Read Limit | number | 300 | Line 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.toolResultPreview | Inline Read Previews | boolean | false | Render read tool results inline in the transcript instead of summary rows. |
Read Summaries
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
read.summarize.enabled | Enable Read Summaries | boolean | true | Return structural code summaries when read is called without an explicit selector. |
read.summarize.prose | Prose Summaries | boolean | false | Return structural summaries for Markdown and plain text reads. |
read.summarize.minBodyLines | Read Summary Body Lines | number | 4 | Minimum multiline body or literal length before read summaries collapse it. |
read.summarize.minCommentLines | Read Summary Comment Lines | number | 6 | Minimum multiline block comment length before read summaries collapse it. |
read.summarize.minTotalLines | Read Summary Minimum File Length | number | 100 | Files with fewer total lines are read verbatim instead of structurally summarized. |
read.summarize.unfoldUntil | Read Summary Unfold Target | number | 50 | BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions. |
read.summarize.unfoldLimit | Read Summary Unfold Ceiling | number | 100 | Maximum 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
lsp.enabled | Language Servers | boolean | false | Start 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.tool | Agent Tool | boolean | true | Give the agent the lsp tool (definitions, references, rename, query diagnostics). Off keeps servers for format and injected diagnostics only. |
lsp.lazy | Lazy Startup | boolean | true | Start language servers on first use (lsp tool or editing a matching file type) instead of at session startup. |
lsp.formatOnWrite | Format after Write | boolean | false | Format the file with the language server after the write tool saves it. Independent of the agent tool and of diagnostics. |
lsp.diagnosticsOnWrite | Diagnostics after Write | boolean | true | After the write tool saves a file, inject language-server diagnostics into the session. Independent of the agent tool. |
lsp.diagnosticsOnEdit | Diagnostics after Edit | boolean | false | After the edit tool saves a file, inject language-server diagnostics into the session. Independent of the agent tool. |
lsp.diagnosticsDeduplicate | Deduplicate Diagnostics | boolean | true | Suppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones. |
Shell
Bash
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
bash.enabled | Enable Bash | boolean | true | Enable the bash tool for shell command execution. |
bash.stallDetection.enabled | Bash Stall Detection | boolean | false | Watch 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.enabled | Bash Interceptor | boolean | false | Block shell commands that have dedicated tools. |
shellMinimizer.enabled | Shell Minimizer | boolean | true | Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent. |
shellMinimizer.sourceOutlineLevel | Shell Minimizer Source Outline | enum | default | Source outline mode for cat/read of source files: default or aggressive. Values: default, aggressive. |
bash.autoBackground.enabled | Bash Auto-Background | boolean | true | Move 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.thresholdMs | Auto-Background After | number | 300000 | How 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.stallMs | Stall After | number | 30000 | How 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
eval.py | Python Eval Backend | boolean | true | Allow the eval tool to dispatch Python cells to the IPython kernel. |
eval.js | JavaScript Eval Backend | boolean | true | Allow the eval tool to dispatch JavaScript cells to the in-process runtime. |
eval.rb | Ruby Eval Backend | boolean | false | Allow the eval tool to dispatch Ruby cells to the persistent Ruby kernel. |
eval.jl | Julia Eval Backend | boolean | false | Allow the eval tool to dispatch Julia cells to the persistent Julia kernel. |
ruby.kernelMode | Ruby Kernel Mode | enum | session | Keep the Ruby kernel alive across eval calls or start fresh each time. Values: session, per-call. |
julia.kernelMode | Julia Kernel Mode | enum | session | Keep the Julia kernel alive across eval calls or start fresh each time. Values: session, per-call. |
python.kernelMode | Python Kernel Mode | enum | session | Keep the IPython kernel alive across eval calls or start fresh each time. Values: session, per-call. |
python.interpreter | Python Interpreter | string | (empty) | Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped. |
ruby.interpreter | Ruby Interpreter | string | (empty) | Optional path to an exact Ruby executable. When set, automatic Ruby runtime discovery is skipped. |
julia.interpreter | Julia Interpreter | string | (empty) | Optional path to an exact Julia executable. When set, automatic Julia runtime discovery is skipped. |
Tools
Available Tools
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
todo.enabled | Todos | boolean | true | Enable the todo tool for task tracking. |
astEdit.enabled | AST Edit | boolean | true | Enable the ast_edit tool for structural AST rewrites. |
debug.enabled | Debug | boolean | true | Enable the debug tool for DAP-based debugging. The tool loads only where a configured adapter command resolves. |
launch.enabled | Launch | boolean | true | Enable the launch tool for supervising shared long-running project processes. |
speechgen.enabled | Speech Generation | boolean | false | Enable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis. |
generate_image.enabled | Generate Image | boolean | false | Enable the generate_image tool for text-to-image generation and editing. |
inspect_image.enabled | Inspect Image | boolean | false | Enable the inspect_image tool, delegating image understanding to a vision-capable model. |
checkpoint.enabled | Checkpoint/Rewind | boolean | false | Enable the checkpoint and rewind tools for context checkpointing. |
fetch.enabled | Read URLs | boolean | true | Allow the read tool to fetch and process URLs. |
vault.enabled | Obsidian Vault | boolean | false | Enable 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.enabled | GitHub CLI | boolean | false | Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows). |
web_search.enabled | Web Search | boolean | true | Enable the web_search tool for live web results. |
ask.enabled | Ask | boolean | true | Enable the ask tool for interactive user questions. |
browser.enabled | Browser | boolean | false | Enable the browser tool for scripted Chromium automation (puppeteer). |
Todos
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
todo.reminders | Todo Reminders | boolean | true | Prompt continued execution when unfinished todos remain. |
todo.reminders.max | Todo Reminder Limit | number | 3 | Maximum distinct todo-state reminders before reminders stay silent. |
todo.eager | Create Todos Automatically | enum | default | How strongly to push automatic todo-list creation after the first message. Values: default, preferred, always. |
tasks.todoClearDelay | Todo Auto-Clear Delay | number | -1 | Delay before completed or abandoned todos are removed from the todo widget. |
Launch
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
launch.cleanupWaitMs | Launch Cleanup Wait | number | 900000 | How long an exited process record is retained before being purged from memory and disk (0 = never clean up). |
Search Context
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
search.contextBefore | Text Context Before | number | 1 | Lines of context before each text search match. |
search.contextAfter | Text Context After | number | 1 | Lines of context after each text search match. |
Browser
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
browser.headless | Headless Browser | boolean | true | Launch browser in headless mode (disable to show browser UI). |
browser.cmux | cmux Browser | boolean | true | Use 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.screenshotDir | Screenshot Directory | string | (unset) | Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android). |
GitHub
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
github.cache.enabled | GitHub View Cache | boolean | true | Cache rendered issue/PR view output in the active profile’s cache/github-cache.db so repeated reads are free. |
github.cache.softTtlSec | GitHub Cache Soft TTL | number | 300 | Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes). |
github.cache.hardTtlSec | GitHub Cache Hard TTL | number | 604800 | Past 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
tools.artifactSpillThreshold | Artifact Threshold | number | 50 | Tool 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.artifactTailBytes | Artifact Tail Size | number | 20 | Amount of the tail kept inline when a tool’s output is saved as an artifact, bounded by the Artifact Threshold. |
tools.artifactHeadBytes | Artifact Head Size | number | 20 | How 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.outputMaxColumns | Output Column Cap | number | 768 | Per-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.artifactTailLines | Artifact Tail Lines | number | 500 | Maximum lines of the tail kept inline when a tool’s output is saved as an artifact. |
tools.inlineOutputFloor | Inline Output Floor | number | 0.25 | Smallest 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
tools.intentTracing | Intent Tracing | boolean | true | Prompt the model to state the intent of each tool call before it runs. |
tools.abortOnFabricatedResult | Abort On Fabricated Tool Result | boolean | true | With 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.maxTimeout | Max Tool Timeout | number | 0 | Maximum timeout in seconds the agent can set for any tool (0 = no limit). |
async.enabled | Async Execution | boolean | true | Enable async bash commands and background task execution. |
async.pollWaitDuration | Max Poll Time | enum | smart | How 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
tools.discoveryMode | Tool Discovery | enum | auto | Hide 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.essentialOverride | Essential Tools Override | array | [] | Override the always-loaded built-in tools (default: read, bash, launch, edit, write, search, eval). Leave empty to use defaults. |
mcp.discoveryMode | MCP Tool Discovery | boolean | false | Hide MCP tools from the tool list and expose them through a tool discovery tool. |
mcp.discoveryDefaultServers | MCP Discovery Default Servers | array | [] | Keep MCP tools from these servers visible while discovery mode hides other MCP tools. |
mcp.notifications | MCP Update Injection | boolean | false | Inject MCP resource updates into the agent conversation. |
mcp.notificationDebounceMs | MCP Notification Delay | number | 500 | Milliseconds 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
dev.autoqa | Auto QA | boolean | false | Record unexpected built-in tool behavior in this profile’s local grievance database. |
dev.autoqaPush.enabled | Auto-upload Grievances | boolean | false | Send new and queued grievances to veyyon.dev after recording them. Off keeps reports local until you run veyyon grievances push. |
dev.autoqaPush.endpoint | Grievance Upload Endpoint | string | https://veyyon.dev/api/grievances | Destination for automatic and manual grievance uploads. |
Tasks
Modes
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
plan.enabled | Plan Mode | boolean | true | Enable plan mode for read-only exploration and planning before execution. |
plan.defaultOnStartup | Start in Plan Mode | boolean | false | Automatically enter plan mode at the start of every new session. |
goal.enabled | Goal Mode | boolean | true | Enable per-session goal mode and the hidden goal tool. |
goal.modelBudgetsEnabled | Model Goal Budgets | boolean | false | Expose and enforce persisted per-goal token budgets for the model. This control is available only in Settings. |
goal.statusInFooter | Goal Progress Bar in Footer | boolean | true | Add 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.continuationModes | Goal Continuation Modes | array | ["interactive"] | Run modes where active goals may auto-continue between turns. |
title.refreshOnReplan | Refresh Title on Replan | boolean | true | Refresh generated session titles after todo init replans unless the title was set by the user. |
Commands & Skills
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
skills.enableSkillCommands | Skill Commands | boolean | true | Register skills as /skill:name commands. |
commands.enableClaudeUser | Claude User Commands | boolean | true | Load commands from ~/.claude/commands/. |
commands.enableOpencodeUser | OpenCode User Commands | boolean | true | Load commands from ~/.config/opencode/commands/. |
Agents
Delegation
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
agent.enabled | Agents | boolean | true | Allow 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.delegation | Agent Delegation | enum | preferred | How 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.batch | Batch Task Calls | boolean | true | Use 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
agent.agents | Roster | record | {} | 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.maxNestedSpawnDepth | Max Nested Spawn Depth | number | 0 | How 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.sharedModel | Same Model for All Agents | boolean | false | Run 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.model | Shared Model | modelChain | (unset) | The model chain every spawned agent runs while Same Model for All Agents is on. Unset: the default model role. |
agent.thinkingLevel | Shared Effort | string | (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.showResolvedModelBadge | Show Resolved Model Badge | boolean | true | Show 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
agent.maxConcurrency | Max Concurrent Agents | number | 32 | Maximum number of spawned agents running at once. Unlimited: no cap. |
agent.maxRuntimeMs | Max Agent Runtime | number | 0 | Maximum wall-clock time a spawned agent may run. An agent that reaches it is aborted with a ‘timed out’ reason. Unlimited: no limit. |
agent.softRequestBudget | Soft Request Budget | number | 200 | Number 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.softRequestBudgetNotice | Soft Request Budget Notice | boolean | true | Send an agent one steering notice when it crosses its Soft Request Budget, asking it to wrap up before the forced stop. |
agent.enableLsp | LSP in Agents | boolean | false | Allow spawned agents to use the lsp tool. Off keeps agents cheaper. |
Idle Agents
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
agent.idleTtlMs | Park Idle Agents After | number | 300000 | How 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.enabled | Prune Parked Agents | boolean | true | Remove 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.afterMs | Prune After | number | 3600000 | How long a parked agent stays in the roster before it is pruned, counted from when it was parked. |
agent.prune.waitingAfterMs | Prune After While Waiting | number | 7200000 | Prune 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
agent.isolation.mode | Isolation Mode | enum | none | Filesystem 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.merge | Isolation Merge Strategy | enum | patch | How an isolated agent’s changes are brought back: as one applied patch, or as a merged branch. Values: patch, branch. |
agent.isolation.commits | Isolation Commit Style | enum | generic | Commit message style for changes made inside nested repositories. Values: generic, ai. |
worktree.base | Worktree Base Directory | string | (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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
irc.timeoutMs | IRC Timeout | number | 120000 | How 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
accounts.loadBalancing | Account Load Balancing | boolean | false | Off: 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
providers.maxInFlightRequests | Max In-Flight Requests | record | {} | 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.maxConcurrency | Ollama Cloud Max Concurrency | number | 3 | Maximum concurrent Ollama Cloud agent runs per process; 0 disables the provider-specific limit. |
providers.webSearch | Web Search Provider | enum | auto | The 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.webSearchExclude | Excluded Web Search Providers | array | [] | Providers that web_search should never use, even as fallbacks. |
providers.webSearchGeminiModel | Gemini web_search model | string | (unset) | Model ID for Gemini Google Search grounding. Defaults to gemini-2.5-flash. |
providers.antigravityEndpoint | Antigravity Endpoint Mode | enum | auto | Endpoint routing strategy for google-antigravity providers (chat, search, image, discovery). Values: auto, production, sandbox. |
providers.image | Image Provider | enum | auto | Preferred provider for image generation. Values: auto, openai, antigravity, xai, gemini, openrouter. |
providers.tts | Text-to-Speech Provider | enum | auto | Backend for the tts tool: local on-device neural TTS (Kokoro-82M) or xAI Grok Voice. Values: auto, local, xai. |
tts.localModel | Local TTS Model | enum | kokoro | On-device neural TTS model (Kokoro-82M) used by the local TTS backend. Values: kokoro. |
tts.localVoice | Local TTS Voice | enum | af_heart | Kokoro 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.enabled | Speech Vocalization | boolean | false | Speak the assistant’s output aloud through the speakers as it streams. |
speech.mode | Speech Vocalization Mode | enum | assistant | What to speak: all = assistant messages + thinking; assistant = messages only; yield = only the final message at turn end. Values: all, assistant, yield. |
speech.enhanced | Enhanced Speech Rewriting | boolean | false | Rewrite 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.voice | Speech Vocalization Voice | enum | af_heart | Kokoro 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.fetch | Fetch Provider | enum | auto | Reader backend priority for the fetch/read URL tool. Values: auto, native, trafilatura, lynx, parallel, jina. |
codexResets.autoRedeem | Codex Auto-Redeem Saved Resets | enum | unset | When 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.minBlockedMinutes | Codex Auto-Redeem Min Block | number | 60 | Only 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.keepCredits | Codex Auto-Redeem Reserve | number | 0 | Never auto-spend below this many saved resets (0 = the last credit may be spent automatically). |
exa.enabled | Exa | boolean | true | Master toggle for all Exa search tools. |
exa.enableSearch | Exa Search | boolean | true | Enable Exa basic search, deep search, code search, and crawl tools. |
exa.searchDelayMs | Exa Search Delay | number | 1000 | Minimum delay between Exa web search requests in milliseconds; set 0 to disable pacing. |
exa.enableResearcher | Exa Researcher | boolean | false | Enable the Exa researcher tool for AI-powered deep research. |
exa.enableWebsets | Exa Websets | boolean | false | Enable Exa webset management and enrichment tools. |
searxng.endpoint | SearXNG Endpoint | string | (unset) | Base URL of a self-hosted SearXNG instance used for web search. |
Discovery
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
discovery.importForeignConfig | Import Other Tools’ Config | boolean | false | Import 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
providers.fireworksTier | Fireworks Tier | enum | standard | Serving 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
providers.tinyModel | Session Title Model | enum | online | Model 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.tinyModelDevice | Tiny Model Device | enum | default | ONNX 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.tinyModelDtype | Tiny Model Precision | enum | default | ONNX 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.unexpectedStopModel | Unexpected Stop Model | enum | online | Model 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
providers.kimiApiFormat | Kimi API Format | enum | anthropic | API format for Kimi Code provider. Values: openai, anthropic. |
providers.openaiWebsockets | OpenAI WebSockets | enum | auto | Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables). Values: auto, off, on. |
providers.openrouterVariant | OpenRouter Routing | enum | default | Default routing-variant suffix appended to OpenRouter model IDs (overridden when the selector already names a variant). Values: default, nitro, floor, online, exacto. |
provider.appendOnlyContext | Append-Only Context | enum | auto | Cache 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
providers.streamFirstEventTimeoutSeconds | Stream First Event Timeout | number | -1 | Seconds to wait for the first model stream event; -1 uses provider/env defaults, 0 disables the watchdog. |
providers.streamIdleTimeoutSeconds | Stream Idle Timeout | number | -1 | Seconds a model stream may stay silent between events; -1 uses provider/env defaults, 0 disables the watchdog. |
Privacy
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
images.blockImages | Block Images | boolean | false | Prevent images from being sent to LLM providers. |
secrets.enabled | Hide Secrets | boolean | false | Obfuscate secrets before sending to AI providers. Storing a credential with /secret turns this on for you. |
secrets.defaultTtl | Secret Lifetime | string | 1d | How long a /secret lasts when the command does not say. Default 1d; also accepts forms like 30m, 12h, 7d, 2w, or “never”. |
secrets.auditLog | Record Secret Use | boolean | true | Append which secret was used in which command to the profile’s log. Never records values. |
secrets.expiryWarnings | Warn Before A Secret Expires | boolean | true | Say 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
argot.enabled | Argot Shorthand | boolean | false | Load 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.autoload | Argot Startup Load | boolean | true | Load 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.models | Argot Models | array | [] | 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.tokenBudget | Argot Dictionary Budget | number | 1000 | How 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.disableAboveTokens | Argot Context Cutoff | number | -1 | Stop 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.agents | Argot in Spawned Agents | enum | off | How 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
tools.format | Tool Calling Mode | enum | auto | Controls 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
autolearn.enabled | Enable Auto-Learn | boolean | false | After the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills. |
autolearn.autoContinue | Auto-run capture at stop | boolean | false | When on, auto-run one capture turn at stop (uses extra tokens). Off = passive reminder on your next turn. |
Global
Machine Limits
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
machine.cpuLimitCores | Machine CPU Limit | number | 0 | Maximum 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.memoryLimitGb | Machine Memory Limit | number | 0 | Maximum 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.writeBudgetGb | Machine Write Budget | number | 0 | Cumulative 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.maxProcesses | Machine Max Processes | number | 0 | Maximum 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
defaultProfile | Default Profile | string | default | Profile 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. |
onboardingVersion | Onboarding Version | number | 0 | Setup version completed on this machine. Stored in ~/.veyyon/config.yml. Stored machine-wide, not per profile. |
Credentials
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
profileSharing | Share Credentials Across Profiles | boolean | true | Share 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
| Key | Setting | Type | Default | What it does |
|---|---|---|---|---|
authBrokerUrl | Auth Broker URL | string | (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. |
authBrokerToken | Auth Broker Token | string | (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.
| Key | Type | Default | Notes |
|---|---|---|---|
agent.modelByDepth | record | {} | Retired: use agent.agents instead. |
async.maxJobs | number | 100 | |
auth.broker.token | string | (unset) | |
auth.broker.url | string | (unset) | |
autolearn.minToolCalls | number | 5 | |
bashInterceptor.patterns | array | [{"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.reserveTokens | number | 16384 | |
commit.changelogMaxDiffChars | number | 120000 | |
commit.mapReduceEnabled | boolean | true | |
commit.mapReduceMaxConcurrency | number | 5 | |
commit.mapReduceMaxFileTokens | number | 50000 | |
commit.mapReduceMinFiles | number | 4 | |
commit.mapReduceTimeoutMs | number | 120000 | |
compaction.autoContinue | boolean | true | |
compaction.dropUseless | boolean | true | |
compaction.enabled | boolean | true | |
compaction.handoffSaveToDisk | boolean | false | |
compaction.idleEnabled | boolean | false | |
compaction.idleThresholdTokens | number | 200000 | |
compaction.idleTimeoutSeconds | number | 300 | |
compaction.keepRecentTokens | number | 10000 | |
compaction.midTurnEnabled | boolean | true | |
compaction.remoteEndpoint | string | (unset) | |
compaction.reserveTokens | number | (unset) | |
compaction.supersedeReads | boolean | true | |
compaction.thresholdPercent | number | -1 | Retired: use compaction.threshold instead. |
compaction.thresholdTokens | number | -1 | Retired: use compaction.threshold instead. |
cycleOrder | array | ["smol","slow"] | |
defaultThinkingLevel | enum | high | Values: minimal, low, medium, high, xhigh, max, auto. Retired: use defaultEffort instead. |
dev.autoqaPush.token | string | (unset) | |
disabledExtensions | array | [] | |
disabledProviders | array | [] | |
edit.modelVariants | record | {} | |
enabledModels | array | [] | |
eval.pyWorkspace | boolean | false | |
extensions | array | [] | |
gc.archive | boolean | true | |
gc.blobs | boolean | true | |
gc.coldArchiveAfterDays | number | 30 | |
gc.retainNewestGlobal | number | 20 | |
gc.retainNewestPerCwd | number | 10 | |
gc.wal | boolean | true | |
gc.writeGraceMinutes | number | 5 | |
harness.profiles | record | {} | |
hindsight.apiToken | string | (unset) | |
hindsight.bankIdPrefix | string | (unset) | |
hindsight.bankMission | string | (unset) | |
hindsight.debug | boolean | false | |
hindsight.mentalModelMaxRenderChars | number | 16000 | |
hindsight.mentalModelRefreshIntervalMs | number | 300000 | |
hindsight.recallBudget | enum | mid | Values: low, mid, high. |
hindsight.recallContextTurns | number | 1 | |
hindsight.recallMaxQueryChars | number | 800 | |
hindsight.recallMaxTokens | number | 1024 | |
hindsight.recallTimeoutMs | number | 30000 | |
hindsight.recallTypes | array | ["world","experience"] | |
hindsight.reflectTimeoutMs | number | 120000 | |
hindsight.requestTimeoutMs | number | 30000 | |
hindsight.retainContext | string | veyyon | |
hindsight.retainEveryNTurns | number | 3 | |
hindsight.retainMission | string | (unset) | |
hindsight.retainOverlapTurns | number | 2 | |
hindsight.retainTimeoutMs | number | 60000 | |
memories.fallbackTokenLimit | number | 16000 | |
memories.maxRawMemoriesForGlobal | number | 200 | |
memories.maxRolloutAgeDays | number | 30 | |
memories.maxRolloutsPerStartup | number | 64 | |
memories.minRolloutIdleHours | number | 12 | |
memories.phase1InputTokenLimit | number | 4000 | |
memories.phase2HeartbeatSeconds | number | 30 | |
memories.phase2LeaseSeconds | number | 180 | |
memories.phase2RetryDelaySeconds | number | 180 | |
memories.rolloutPayloadPercent | number | 0.7 | |
memories.stage1Concurrency | number | 8 | |
memories.stage1LeaseSeconds | number | 120 | |
memories.stage1RetryDelaySeconds | number | 120 | |
memories.summaryInjectionTokenLimit | number | 5000 | |
memories.threadScanLimit | number | 300 | |
mnemopi.debug | boolean | false | |
mnemopi.injectionTokenLimit | number | 5000 | |
mnemopi.recallContextTurns | number | 3 | |
mnemopi.recallLimit | number | 8 | |
mnemopi.recallMaxQueryChars | number | 4000 | |
mnemopi.retainEveryNTurns | number | 4 | |
modelProviderOrder | array | [] | |
modelTags | record | {} | |
retry.baseDelayMs | number | 500 | |
retry.enabled | boolean | true | |
searxng.basicPassword | string | (unset) | |
searxng.basicUsername | string | (unset) | |
searxng.categories | string | (unset) | |
searxng.language | string | (unset) | |
searxng.token | string | (unset) | |
settingsMigrationVersion | number | 0 | |
setupVersion | number | 0 | Retired: use onboardingVersion instead. |
shellMinimizer.except | array | [] | |
shellMinimizer.legacyFilters | boolean | (unset) | |
shellMinimizer.maxCaptureBytes | number | 4194304 | |
shellMinimizer.only | array | [] | |
shellMinimizer.settingsPath | string | (unset) | |
shellPath | string | (unset) | |
skills.enabled | boolean | true | |
skills.ignoredSkills | array | [] | |
skills.includeSkills | array | [] | |
statusLine.leftSegments | array | [] | |
statusLine.rightSegments | array | [] | |
statusLine.segmentOptions | record | {} | |
statusLine.separator | enum | pipe | Values: powerline, powerline-thin, slash, pipe, block, none, ascii. |
statusLine.transparent | boolean | true | |
stt.language | string | en | |
thinkingBudgets.high | number | 16384 | |
thinkingBudgets.low | number | 2048 | |
thinkingBudgets.max | number | 32768 | |
thinkingBudgets.medium | number | 8192 | |
thinkingBudgets.minimal | number | 1024 | |
thinkingBudgets.xhigh | number | 32768 | |
ttsr.experimentalRules | array | [] | |
tui.maxInlineImageColumns | number | 100 | |
tui.maxInlineImageRows | number | 20 | |
tui.maxInlineImages | number | 8 |
353 settings in /settings, 120 configuration-file keys, 473 in all.