pi-better-model-select

Searchable, usage-ranked model picker for Pi with model management, default model and thinking effort selection, and per-role subagent defaults.

Packages

Package details

extension

Install pi-better-model-select from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-better-model-select
Package
pi-better-model-select
Version
0.3.6
Published
Oct 30, 2026
Downloads
1,278/mo · 924/wk
Author
msenebald
License
MIT
Types
extension
Size
462.7 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "image": "https://cdn.jsdelivr.net/npm/pi-better-model-select@latest/docs/demo/gallery.png",
  "extensions": [
    "./extensions/bms.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-better-model-select

A searchable model picker for Pi. Switch models, edit model definitions, and save default models and thinking effort. Models you pick most often appear first.

Install

pi install npm:pi-better-model-select

Run /bms, type to filter by name, model ID, or provider, then press Enter to switch models for the current session.

Compact TUI

BMS model search, forms, defaults, and result placement

The picker uses aligned model, provider, effort, context, default, and current columns. Model names are color-coded by relative selection frequency using the icon's blue, amber, and orange palette. Unused models stay neutral. Selection totals are hidden by default. Type in the search field in Pi's editor area. Results appear below search by default, matching Pi command completion. Choose Options → Result placement → Above prompt for bottom-up results with the best match nearest the search line.

Add and edit use one form. Review the fields, press Enter to change a value, then choose Save configuration or press Ctrl+S to save. Text and numeric fields currently open a Pi input dialog; choices use the compact table. Esc goes back; unsaved changes require a discard confirmation. Options also stay in a draft until saved. Color-code usage, Show total selections, and Usage palette are independent options. Choose the Icon palette, the default, or Theme to use Pi's active thinking-level colors. Turning display options off does not stop counting or change sorting.

Commands and shortcuts

Command Action
/bms Open the model picker
/bms-add Add a model
/bms-options Open result placement, write mode, and provider options
/bms-defaults Configure Pi and subagent defaults

Inside /bms:

Key Action
↑ / ↓ Move through models
Enter Use the selected model for this session
Ctrl+D Open startup-default form for the highlighted model
Ctrl+E Edit the highlighted model's effort preference
Ctrl+G Open the defaults menu
Ctrl+A / Ctrl+U / Ctrl+X Add / update / delete a model
Ctrl+O Open BMS menu: Models, Add model, Defaults, Options
Ctrl+R Reset usage ranking
Esc Close

The DEFAULT and CURRENT columns use checkmarks to identify the saved startup default and active session model. The row highlight shows the model you are browsing. The EFFORT column shows the effort each model will use when loaded, using its saved preference or the current session level as a fallback. Non-reasoning models show off. Pi may clamp unsupported effort levels. Only Enter selections count toward usage ranking. Returning from a submenu preserves your search and selection. Plain menus always browse top-to-bottom; only searchable result lists reverse in above-prompt mode. Esc goes back one level, including back to the BMS menu when that is where you entered a submenu.

Default models and effort

Save a model and thinking effort for Pi, a subagent fallback, or an individual agent role.

  • Use Ctrl+D in /bms to set the main Pi default and save effort for that model only. Other models' preferences and the global fallback stay unchanged.
  • Configure the user-wide fallback effort in /bms-defaults → Pi fallback effort. Per-model preferences take priority.
  • Use /bms-defaults for all defaults. The menu starts in user scope; select the scope row to switch to a trusted project's settings.
  • Agent model and effort overrides are independent. You can inherit the parent model while choosing a different effort.

Removing an override restores the agent's own definition and fallback rules. Effort off is explicit, not inheritance. The menu shows saved settings and their sources, not running-child state.

BMS applies saved per-model effort preferences when you load a model, without /reload. Run /reload after changing agent defaults or before using updated per-model preferences through Pi's own model picker. Existing children stay unchanged. Test Pi startup defaults in a fresh session, since resumed sessions restore their recorded model and effort.

Optional pi-subagents integration

pi-subagents is a separate extension. Install it only if you want subagents:

pi install npm:pi-subagents

BMS discovers its agent roles and edits their saved model and effort defaults. It does not install pi-subagents automatically. External runner roles are read-only because their model settings belong to the runner.

If discovery fails, Agent discovery details shows the error. Pi defaults work without this integration. See the configuration reference for compatibility details.

Supported effort levels

BMS uses provider-reported effort lists when available and Pi's capability restrictions where supplied. Otherwise it offers Pi's standard levels, marked as provider support unverified:

off · minimal · low · medium · high · xhigh · max

Add/update edits supported effort levels. Ctrl+E edits a per-model preferred effort separately. These hints do not change Pi's provider adapters. If Pi clamps an effort, BMS asks before saving the applied level. No paid model probes are made.

Where changes are saved

Open Ctrl+O → Options to select the model write mode:

Mode Behavior
Overlay, the default Save model edits in models.bms.json; leave models.json unchanged
Direct Write model edits to Pi's models.json

Defaults always go into native Pi settings.json, regardless of write mode. User files normally live in ~/.pi/agent; project defaults use .pi/settings.json. BMS respects PI_CODING_AGENT_DIR and shows the selected settings paths.

Provider filters hide entries only in /bms, not Pi's /model picker. Default-assignment menus also include authenticated Pi registry models.

Further documentation

  • Changelog: changes by version.
  • Configuration reference: file paths, precedence, overlays, metadata, and integration limits. Development and navigation design documents live in docs/internal/ in the source checkout and are not included in the npm package.

Support and contact

By Martin Senebald. For questions, feedback, or bug reports, contact me on:

License

MIT