Settings
Settings is the non-terminal control room. It reads the daemon’s current state, shows where each value came from, and writes durable changes back to Kanade’s local config files.
Capability map
Section titled “Capability map”The first settings panel explains the feature split:
- Claude Code only means the feature works after you connect a Claude Code lane. Agent chat, tools, MCP, skills, shell commands, file edits, sessions, live telemetry, and the local ledger are in this bucket.
- Local LLM optional means the feature uses LM Studio, Ollama, or another OpenAI-compatible endpoint for prose. Yume, Optimize narration, and per-session chronicle paragraphs are in this bucket.
Direct mode is listed separately because it is plain provider chat from Kanade, not Claude Code agent mode.
Voice runtime
Section titled “Voice runtime”Yume and session narration use an OpenAI-compatible local model. LM Studio is the default; Ollama is the backup path.
- LM Studio URL: usually
http://localhost:1234/v1. - LM Studio model: should match a model returned by
GET /v1/models. - Test connection: first probes
/models; iflocalhostfails on Windows, Kanade retries127.0.0.1and reports that fallback.
The test result distinguishes invalid URL, timeout, unreachable server, server reachable but model missing, and model reachable.
Accounts & Providers
Section titled “Accounts & Providers”Use this section for durable lane changes:
- Rename a lane or edit its command.
- Assign a provider such as Claude, DeepSeek, Gemini, Codex, LM Studio, Ollama, or OpenAI-compatible.
- Choose the lane’s chat mode: agent keeps Claude Code’s tools, skills, hooks, MCP, and slash-command behavior; direct calls the provider API from Kanade for fast chat and image input, but has no tools or skills.
- Desktop update channel is a read-only updater diagnostic. It checks the live signed Tauri manifest, the advertised Windows payload, signature presence, and whether the channel version is newer than the running build. The recheck button reports checking / checked / retry state plus the last check time. Installing still happens only from the desktop update banner.
- Set model and base URL.
- See the active source for model, base URL, and key: account override, process env, persisted disk config, or default.
- Retest the provider connection.
- Replace a key without displaying the previous key.
- Set the default lane.
- Reload
accounts.jsonfrom disk. - Remove a Kanade account reference with confirmation.
Secret-like env values are masked everywhere. If a key comes from process env, removing the Kanade account reference does not remove that env var. If you replace a key in Settings, Kanade writes an account override that will shadow the process env for that lane.
Chat completion alerts
Section titled “Chat completion alerts”Chat alerts are local workstation preferences stored in browser/WebView local storage. Sound plays a short two-note tone when the active chat turn finishes. Desktop notification uses the browser notification permission when available and is silent by default, so the sound setting stays the single audio source. Use test sound to verify the current output device and volume.
Permission mode
Section titled “Permission mode”The default Claude Code permission mode writes to
~/.claude/settings.json :: permissions.defaultMode. Bypass mode still requires
confirmation in the UI. Kanade does not use unsafe bypass flags to launch Claude.
Data & paths
Section titled “Data & paths”The data section shows the daemon uptime, data directory, SQLite chronicle path, hook spool path, and database size. Reveal opens the data directory in Explorer. Nothing in this section is uploaded; it is a local diagnostic view.
Reveal is intentionally allowlisted. Kanade always allows its own data,
transcript, skills, and Claude project roots. Add private note vaults with
KANADE_VAULT_ROOTS; there is no hardcoded maintainer vault path.
Diagnostics (v0.2.16+)
Section titled “Diagnostics (v0.2.16+)”Settings → Diagnostics is the doctor’s room. Every claim is read live from the daemon — no last-good-cached values, no mocks.
- Update channel doctor. Reads the live signed Tauri manifest at
https://kanade.jhinx.dev/updates/latest.json, compares the installed version to the channel version, checks that a signature is present, andHEAD-checks the Windows installer payload (bytes, ETag, response time). Read-only — the real updater banner is still the install path. - WebView2 cache reset. When WebView2 goes dark after a major update, hit
the reset button: it records a pending request, asks for an app relaunch,
and the next launch renames
EBWebViewtoEBWebView.backup-<timestamp>/before opening a WebView. Signed-in lanes survive — credentials live outside the WebView profile. - Chronicle DB integrity. Daemon runs
PRAGMA quick_checkon startup; the diagnostics view shows the result, the last-checked timestamp, and any recent rebuild metadata (corrupt files are moved todb-corrupt-backup-<timestamp>/, schema rebuilds fromevents.jsonl). - Structured warning ring. SSE errors, turn timeouts (default 180s), and
lifecycle-hook failures land in a bounded ring buffer surfaced through
/api/diagnostics. Copy the JSON straight into a bug report — secrets are redacted. - Copy diagnostic info. One-click copy of the same JSON the maintainer reads when triaging a bug report.
If KANADE_BUG_REPORT_URL is empty, Settings and About hide issue-tracker
links. The diagnostic-copy button remains available because it does not send
anything automatically.
Skill telemetry retention (v0.2.15+)
Section titled “Skill telemetry retention (v0.2.15+)”Skill SKILL.md frontmatter can set retention_days (default: 30). The daemon
prunes old skill events daily. Settings has per-skill retention visibility
plus a manual purge action; the API equivalent is DELETE /api/skills/{id}/events.
Direct mode controls
Section titled “Direct mode controls”Each account’s mode is editable in Settings → Accounts & Providers — pick
agent for the full Claude Code subprocess path, or direct for native
provider HTTP streaming. See Direct mode · provider limits
for per-provider caveats.