diff options
| author | Igor Soarez <igor@soarez.org> | 2026-09-25 11:30:38 +0300 |
|---|---|---|
| committer | Igor Soarez <igor@soarez.org> | 2026-09-25 11:30:38 +0300 |
| commit | 57e49ddde1dffb17043cd4b065c2907fbe5a863d (patch) | |
| tree | 5376c1a312d403aa453906b6a6a8e4edb9fdb675 /CLAUDE.md | |
| parent | 96c42e431c8252f02556aba9d9f7373dcdf92e41 (diff) | |
pi: providers can come from ~/.config/pi/models.d, like settings already do
models.json was a plain symlink to the tracked file, which left a machine whose
models are served from somewhere other than a vendor's own API with nowhere to
say so. pi reads providers from exactly one path -- join(getAgentDir(),
"models.json") -- and a `providers` block in a settings fragment is inert,
because the settings schema has no such key. So on such a machine pi cannot be
used at all, and the endpoint is not something this repo may name.
link/pi.sh now generates models.json the way it already generates settings.json:
the repo's file, then every ~/.config/pi/models.d/*.json. No three-way merge
here -- pi never writes this file, keeping runtime state in the sibling
models-store.json -- so a hand-edit of ~/.pi/agent/models.json no longer
survives a relink. Put it in a fragment.
It reports which provider came from which fragment, added or replaced, so a
local file shadowing a provider the repo ships cannot do it quietly.
Proposed as a change request from the machine that needs it; verified here
against pi 0.84.2 before applying.
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -50,6 +50,7 @@ what it needs through these, each of them optional and absent by default: | `~/.config/claude/mcp-servers.d/*.json` | MCP servers, registered by `link/claude.sh` | | `~/.claude/rules/*.md` | extra Claude Code user memory, loaded next to `config/claude/CLAUDE.md` | | `~/.config/pi/settings.d/*.json` | pi settings merged into the generated `~/.pi/agent/settings.json` by `link/pi.sh` | +| `~/.config/pi/models.d/*.json` | pi providers merged into the generated `~/.pi/agent/models.json` by `link/pi.sh` | | `~/.config/agent-skills.d/*` | agent skills, linked into every installed agent by `link/skills.sh` | | `~/.local/share/szecret/{store,id.pub}` | the szecret store; the tool is here, its secrets are not | | `~/.config/shell/dir-hashes.zsh` | more zsh named directories, sourced by `config/zshrc` | @@ -135,6 +136,7 @@ tracked config says so, and in no repo: | `~/.local/share/alacritty/local.toml` | Alacritty | imported by `config/alacritty/alacritty.toml` | | `~/.config/dot/skip` | which `link/` parts this machine does not want, one name per line | `link/lib.sh`, as each part starts | | `~/.config/dot/inbox-key` | the key this machine signs change requests with | `bin/dot-request` | +| `~/.config/pi/models.d/*.json` | pi providers only this machine has -- a model served somewhere other than a vendor's own API | `link/pi.sh`, merged over `config/pi/models.json` | Not covered today: nvim, tmux, bat, lsd, and `~/.claude/settings.json` -- which a machine can only leave alone entirely, by naming `claude` in the skip file. |
