Configuration
Where yuke keeps its config, and what one file may set.
Location
yuke reads its config from this directory.
| Unix |
$XDG_CONFIG_HOME/yuke
(~/.config/yuke)
|
| Windows | %APPDATA%\yuke |
Set YUKE_APPNAME to change the directory leaf. That keeps a
second profile beside the first.
index.js
One file configures yuke: index.js in the directory above. It
is optional — with no file, yuke runs on its defaults. The same file loads under both
frontends, the TUI and --rpc, so a plugin written once works
in either.
Settings are JavaScript, not JSON. Import from the bare name
yuke and export the result of
defineConfig. An unknown key throws. yuke never ignores one.
// index.js
import { defineConfig } from "yuke";
export default defineConfig({
systemPrompt: "Answer in British English.",
mouse: { scrollLines: 5 },
});
A fault in index.js is a warning, not a stop: yuke reports it
and runs on without your plugins.
Options
Every field is optional. defineConfig({}) keeps the defaults.
| Key | Default | Meaning |
|---|---|---|
| systemPrompt | null | The prompt for sessions that supply none. Null matches the engine. |
| agents.maxConcurrent | 8 | How many agents may run at once. |
| mouse.scrollLines | 3 | Screen lines per wheel step, the same in every widget. |
| mouse.copyOnSelect | true | A drag that ends copies the selection. |
| keymap.chordMs | 1000 | The longest wait in milliseconds for the next stroke of a chord. |
Tools, commands and plugins
The same yuke facade registers a tool the model may call, a
command for the palette, and a plugin. The
Modules
page lists what else a config may import.
// index.js
import { commands, tools } from "yuke";
import "./plugins/vim.js";
commands.define({
name: "reload-catalog",
title: "Reload catalog",
description: "Re-read the provider catalog from disk.",
run: () => {},
});