Configuration
Every setting has four possible sources, and later ones win:
built-in defaults → ~/.config/koda/config.toml your settings, every project → <project>/koda.toml this project's settings → environment variables → command-line flagsThe personal file lives at $XDG_CONFIG_HOME/koda/config.toml, falling back to
~/.config/koda/config.toml. A project file may be named koda.toml or .koda.toml.
Two commands do the work for you:
koda config # print the effective configuration, after all four layerskoda config --init # write a fully commented starter fileInside koda, /settings is an interactive page covering everything below, and /setup
handles the four connection fields on their own.
Environment variables
Section titled “Environment variables”| Variable | Also accepted as |
|---|---|
KODA_BASE_URL |
OPENAI_BASE_URL |
KODA_API_KEY |
OPENAI_API_KEY |
KODA_MODEL |
OPENAI_MODEL |
KODA_DEBUG=1 |
— turns on raw request capture |
KODA_TRACE=1 |
— turns on turn tracing without the web UI |
NO_COLOR=1 |
— forces the monochrome palette |
A config file to start from
Section titled “A config file to start from”This is a working file with the interesting knobs turned to their defaults. The full key-by-key table is in the configuration reference.
# --- connection ---------------------------------------------------------base_url = "http://localhost:11434/v1"api_key = "local"model = "qwen2.5-coder:14b"
temperature = 0.2 # low is better for codetop_p = 0.95max_tokens = 0 # 0 = server defaultcontext_tokens = 110000 # requests are curated to fit thisauto_compact_at = 0.85 # summarize at this fraction of budget; 0 disables
# --- behaviour ----------------------------------------------------------mode = "execute" # plan | execute | vibetool_protocol = "auto" # auto | native | textmax_steps = 24 # model<->tool round trips per turnauto_tier = "ask" # ask | write | full — cycle live with /autosandbox = true # confine file tools to the workspace root
# --- capabilities -------------------------------------------------------codegraph = truesessions = true # save conversations for /resume, /search, /forkmemory = truesubagents = trueweb_search = false # DuckDuckGo unless searx_url is setwatch = false # act on AI! / AI? comment triggersweb_ui = false # local trace + control page on 127.0.0.1debug = false # dump raw requests/responses
# --- appearance ---------------------------------------------------------theme = "auto" # auto resolves to the neon paletteicons = "auto" # auto | unicode | asciimotion = truereveal = truemouse_capture = true
# --- limits -------------------------------------------------------------shell = "/bin/sh"command_timeout_ms = 120000max_file_bytes = 262144max_tool_output_bytes = 24576max_retries = 3log_level = "info"
# --- prompt -------------------------------------------------------------system_prompt = "" # override the built-in prompt; edit in /settingsinstructions = "" # extra project rules, appended verbatimProject instructions
Section titled “Project instructions”koda also reads AGENTS.md, CLAUDE.md or .koda.md from the workspace root and appends
it to the system prompt. If you already keep house rules for another agent, koda picks
them up with no extra file.
instructions in the config does the same thing from the config file, and is the right
place for rules that belong to you rather than to the repository.
What is stored where
Section titled “What is stored where”| Path | What lives there |
|---|---|
~/.config/koda/config.toml |
Your settings, all projects. |
~/.config/koda/skills/ |
Your personal skills. |
~/.local/state/koda/koda.log |
The event log behind /logs. |
~/.local/state/koda/debug/ |
Raw request/response captures from /debug. |
<project>/koda.toml |
This project’s settings. |
<project>/.koda/skills/ |
This project’s skills — commit these. |
<project>/.koda/sessions/ |
Saved conversations, as append-only JSONL. |
<project>/.koda/memory.md |
Durable project facts, as plain markdown. |
<project>/.koda/learning/ |
Learned-rule candidates awaiting /learn. |
Everything under .koda/ is plain text you can read, edit, commit or delete. Sessions,
memory and learning candidates are local state rather than source; the skills are the part
worth committing.