Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xkahi/pi-model-select
Pi extension that adds /select-model with favourites and provider-filtered model search
Pi extension that adds /select-model: a model picker with favourites plus provider-filtered fuzzy search. By default it renders inline like Pi's built-in /model; it can optionally render as a centered overlay.
Install globally (writes to ~/.pi/agent/settings.json):
pi install npm:@0xkahi/pi-model-select
Or install into the current project only (writes to .pi/settings.json, shareable with your team):
pi install npm:@0xkahi/pi-model-select -l
Pin a specific version:
pi install npm:@0xkahi/pi-model-select@1.0.0
Install directly from GitHub instead of npm:
pi install git:github.com/0xKahi/pi-model-select
pi install git:github.com/0xKahi/pi-model-select@v1.0.0 # pinned
Use -e / --extension to load for a single run without modifying settings:
pi -e . # from inside this repo
pi list # show installed packages
pi update npm:@0xkahi/pi-model-select # update this package
pi remove npm:@0xkahi/pi-model-select # uninstall
The package manifest exposes ./src/index.ts as a Pi extension.
/select-model
Tab switches between Favourites and Search.↑/↓ navigates, Enter selects, Esc cancels./model behavior./select-model provider/modelId.| Scope | Path |
|---|---|
| Global | ~/.pi/agent/extensions/pi-model-select/config.json (respects PI_CODING_AGENT_DIR) |
| Project | <cwd>/.pi/extensions/pi-model-select/config.json |
The extension accepts JSON with comments and trailing commas.
Project config overrides global provider_filter and layout when those keys are present. Favourites are combined from global then project and de-duplicated.
{
"$schema": "https://raw.githubusercontent.com/0xKahi/pi-model-select/main/config.schema.json",
"favourite": [
{
"provider": "openai-codex",
"modelId": "gpt-5.5"
},
{
"provider": "anthropic",
"modelId": "claude-opus-4-7"
},
{
"provider": "opencode-go",
"modelId": "kimi-k2.6"
}
],
// Optional. Defaults to "inline", which replaces the editor at the bottom like Pi's /model.
// Use "overlay" for the previous centered floating card behavior.
"layout": "inline",
// Empty array means no filter: all authorized providers are shown.
"provider_filter": ["openai-codex", "anthropic", "opencode-go", "openrouter"]
}
| Key | Type | Default | Description |
|---|---|---|---|
favourite | { provider: string, modelId: string }[] | [] | Models shown in the Favourites tab. Alias keys favourites, favorite, and favorites are also accepted. |
provider_filter | string[] | [] | Provider names shown in Search. Empty means all authorized providers. Project config overrides global when present. |
layout | "inline" | "overlay" | "inline" | inline replaces the editor at the bottom; overlay shows the centered floating card. |
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
bun-typesEnvironment{
"local_name": "bun-types",
"alias": false,
"peer_metadata": null
} | latest | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^5 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | ^24.0.0 | development |
@biomejs/biomeEnvironment{
"local_name": "@biomejs/biome",
"alias": false,
"peer_metadata": null
} | ^2.4.15 | development |
@changesets/cliEnvironment{
"local_name": "@changesets/cli",
"alias": false,
"peer_metadata": null
} | ^2.31.0 | development |
@earendil-works/pi-aiEnvironment{
"local_name": "@earendil-works/pi-ai",
"alias": false,
"peer_metadata": null
} | ^0.79.0 | development |
@earendil-works/pi-tuiEnvironment{
"local_name": "@earendil-works/pi-tui",
"alias": false,
"peer_metadata": null
} | ^0.79.0 | development |
@earendil-works/pi-coding-agentEnvironment{
"local_name": "@earendil-works/pi-coding-agent",
"alias": false,
"peer_metadata": null
} | ^0.79.0 | development |
@earendil-works/pi-aiEnvironment{
"local_name": "@earendil-works/pi-ai",
"alias": false,
"peer_metadata": null
} | * | peer |
@earendil-works/pi-tuiEnvironment{
"local_name": "@earendil-works/pi-tui",
"alias": false,
"peer_metadata": null
} | * | peer |
@earendil-works/pi-coding-agentEnvironment{
"local_name": "@earendil-works/pi-coding-agent",
"alias": false,
"peer_metadata": null
} | * | peer |
Source distribution
{
"shasum": "cd38c534f8e20e32a84d8a13d116c17912a1f0c7",
"tarball": "https://registry.npmjs.org/@0xkahi/pi-model-select/-/pi-model-select-1.1.0.tgz",
"fileCount": 10,
"integrity": "sha512-LRR7ViQs+FA00yO5+5KPJIr1FtogW5nGDb8i9B+Z4z5rUQXYOZDqTTWZQJv9aUP3MIZwcRMT7Dz1sA32WCMkug==",
"signatures": [
{
"sig": "MEQCIFA0NN40Jbd6vwuCzrScSBPhvrNciYKIHPzkvHZEIC+UAiB+mebrEOg+r+RzxP8rlfQ9X701GTaZjR5thacDmaz6hg==",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 32353
}Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:c7d1345f2f16c5222ef6fece7722e3e6aa32ae25f812ae565e18cc9a4bbfb6ed