Files
pi-agent-config/runtime/README.md
T
Kai 98635022d0 feat(runtime): track user-level Pi configuration with the provider key templated
Mirrors ~/.pi/agent/ as the authoritative copy. models.json becomes
models.json.template with ${ZENMUX_API_KEY} substituted; the real value stays
in secrets/zenmux.env, which is untracked and enforced by the pre-commit guard.

Excluded with rationale: auth.json, trust.json, models-store.json, sessions/,
herdr-agent-state.ts (installer-managed, overwritten on reinstall) and the
third-party skills under ~/.agents/skills.

Recorded during migration: the configured fallback model zenmux/x-ai/grok-4.6 is
absent from models.json, so pi falls back to an undeclared custom model id with
no context window, cost table or thinkingLevelMap. Fixing that is a behaviour
change and is deferred rather than folded into this zero-change migration.
2026-08-26 22:52:48 -07:00

57 lines
3.0 KiB
Markdown

# 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.