# Handy Settings Template Handy (Tauri v2) keeps its store at `~/.local/share/com.pais.handy/settings_store.json`, shaped `{"settings": {...}}`, and **rewrites the live file on every change** — so the repo carries a merge patch (`settings_store.template.json`), not a full store. ## Apply the fleet wiring Quit Handy first (it caches settings in memory and overwrites external edits): ```bash pkill -f /usr/bin/handy jq --slurpfile p /dotfiles/zz-blankpad/.local/share/com.pais.handy/settings_store.template.json ' .settings |= ( $p[0].settings | .post_process_models = ((.post_process_models // {}) + $p[0].settings.post_process_models) | .post_process_providers = (.post_process_providers | map(if .id == "custom" then .base_url = $p[0].custom_provider_base_url else . end)) )' settings_store.json > store.tmp && mv store.tmp settings_store.json setsid nohup handy --start-hidden >/dev/null 2>&1 < /dev/null & ``` Niri also spawns Handy at startup (`cfg/autostart.kdl`: `spawn-at-startup "handy" "--start-hidden"`), hence `autostart_enabled: false` — the compositor owns autostart. ## Known breaker (2026-10-09) `frank-secondary` (`http://192.168.0.143:7771/v1`) is a thinking model: default requests return `content: ""` with the answer locked in `reasoning_content`. Handy reads `content`, so post-processed transcripts come back empty. The per-request cure is `chat_template_kwargs: {"enable_thinking": false}` (verified), which Handy cannot send. Endpoint-side fix required — see `omp-docs/tools/handy.md` → Known issues.