Configuration
Settings are read in this order. Later personal files override model, provider, permission mode, and allow-rule settings; shared project files can only tighten security:
~/.config/larik/config.json.larik/settings.json~/.config/larik/projects/<project-id>.json(private settings for this project)
Put provider definitions, model selection, roles, fallbacks, permission mode, and allow rules in ~/.config/larik/config.json or private project settings. Larik ignores those fields in the shared .larik/settings.json. Shared deny rules remain active. Larik never loads .larik/settings.local.json from the repository.
{
"model": "anthropic/claude-opus-5",
"effort": "high",
"mode": "default",
"theme": "auto",
"verbose": false,
"spinner_tips": true,
"auto_compact": true,
"notifications": "off",
"language": "",
"permissions": {
"allow": ["bash(go test*)", "bash(git diff*)", "edit(docs/**)"],
"deny": ["bash(rm -rf*)", "read(.env)"]
},
"providers": {
"work-gateway": {
"type": "openai-compatible",
"base_url": "https://llm.example.com/v1",
"api_key_env": "WORK_LLM_KEY"
}
},
"models": {
"gpt-5.5": {
"provider": "openai",
"context_window": 400000,
"max_output": 128000,
"input_price": 0,
"output_price": 0
}
}
}
Personal settings, all editable from /config (which changes only the key you edit):
theme:auto(follow the terminal's background, the default),darkorlight. Both themes use a teal accent and leave the background transparent, so your terminal's own background shows through; only diff lines keep a faint green or red tint.verbose: show tool output (up to 40 lines) and thinking in full.ctrl+ostill toggles thinking.spinner_tips: a one-line tip under the spinner during a turn.debuganddebug_retention_days(not in/config): see Debug mode and traces. Honored only from personal settings.editor_mode:normalorvim. See Vim mode.keybindingsandstatus_line(not in/config): see Rebinding keys and Status line.mouse: wheel scrolling in the TUI (default on). Off leaves the mouse to the terminal, so text can be selected without a modifier.auto_compact: summarize the conversation when the context is 80% full./compactworks either way.token_saver: opt-in command-output filtering (/config token_saver=true). Recognized Git, search/listing, Go, Cargo, Node package-manager, and pytest output is shortened before entering model context. Unrecognized output and failures pass through. Abashcall can setraw_output: true;raw_outputretrieves the exact captured stdout/stderr by tool-call ID without rerunning the command. Raw output stays in private session files. The displayed byte savings are estimates for command output; use/costto inspect actual session token usage and cost.notifications:off,bell, ordesktop(OSC 9: iTerm2, Ghostty, kitty, WezTerm; other terminals get the bell). Sent only while the terminal is unfocused, when larik asks for permission or a turn of 10s or more ends. Notification hooks are separate.language: what the model replies in, e.g."Indonesian". A change applies after/clearor in a new session, so the cached prompt stays valid.roles,fallbacks,budget("Model routing" and "Session budget" in/config): see Mixing cheap and strong models.checkpoint_retention_days("Undo history" in/config): how long/undosnapshots are kept, so/undostill works after resuming a session. Default 7; a negative value (foreverin/config) keeps them forever. Old snapshots are deleted at startup, for every project, so this is honored only from personal settings.
models entries override the built-in catalog. The catalog drives context percentage, compaction, and cost.