# Pi User-Level Runtime Configuration Authoritative copy of the **user-global** Pi configuration that lives at `~/.pi/agent/` on the host. Scenario-specific configuration lives in `../scenarios/`. Deploy with: ```bash ../scripts/deploy-runtime.sh # dry run ../scripts/deploy-runtime.sh --apply ``` ## Contents | Path | Live target | Notes | |---|---|---| | `agent/settings.json` | `~/.pi/agent/settings.json` | No credentials. | | `agent/models.json.template` | `~/.pi/agent/models.json` | Rendered; `${ZENMUX_API_KEY}` comes from `../secrets/zenmux.env`. Mode `0600`. | | `agent/extensions/pi-memo-trust.ts` | `~/.pi/agent/extensions/` | Grants project trust to the memo-inbox workspace only. | | `agent/prompts/*.md` | `~/.pi/agent/prompts/` | Interactive prompt templates. Gateways pass `--no-prompt-templates`, so these are for human use only. | ## Deliberately not tracked | Path | Why | |---|---| | `~/.pi/agent/auth.json` | OAuth/API credential store. Empty on this host but still excluded on principle. | | `~/.pi/agent/trust.json` | Host-local trust decisions; machine state, not configuration. | | `~/.pi/agent/models-store.json` | Downloaded model catalogue cache; regenerated by `pi update --models`. | | `~/.pi/agent/sessions/` | Conversation history. | | `~/.pi/agent/extensions/herdr-agent-state.ts` | Installed and overwritten by herdr (`HERDR_INTEGRATION_ID=pi`). Managing it here would fight the installer. It is inert unless `HERDR_ENV=1`, but it is still **loaded and parsed on every pi start**, which is one reason every scenario must pass `--no-extensions`. | | `~/.agents/skills/{find-skills,modsearch,summarize}` | Third-party skills installed by other tooling. Not authored here. They leak into any scenario that omits `--no-skills` — see `../docs/isolation-baseline.md`. | ## Observations recorded during migration (2026-08-27) 1. **The fallback model is not declared.** `models.json` contains only `openai/gpt-5.6-luna`, while the Curator service is configured with `CURATOR_PI_FALLBACK_MODEL=zenmux/x-ai/grok-4.6`. Pi therefore emits `Model not found … Using custom model id` on every fallback, and the fallback runs without a declared context window, cost table or `thinkingLevelMap`. Cost and token accounting for fallback turns is consequently unavailable. Adding the model is a behaviour change and is therefore **not** part of the zero-change migration; it is tracked as a follow-up. 2. `settings.json` sets `defaultProvider: zenmux`, `defaultModel: openai/gpt-5.6-luna`, `defaultThinkingLevel: high`. Gateways override all three on the command line, so these only affect interactive use. 3. `settings.json` carries no `compaction` block, so the defaults apply (`enabled: true`, `reserveTokens: 16384`, `keepRecentTokens: 20000`). With a 1,050,000-token context window auto-compaction effectively never fires; each gateway must rotate sessions itself. 4. `trust.json` trusts only `/home/claw/pi-workspaces/memo-inbox`. The Curator workspace is not trusted and relies on `--approve` per run.