npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

omp-model-profile

v0.2.4

Published

Named model-role profiles for omp — switch your whole Architect/Default/Subtask model set with /model-profile

Readme

omp Model Profiles

Named model-role profiles for omp. A profile sets different models for the built-in roles (default, smol, slow, vision, plan, designer, commit, task) and switches them all at once with /model-profile.

Install

Once published to npm, anyone can install it with one command:

omp plugin install omp-model-profile

This downloads the package into ~/.omp/plugins/, where omp discovers its /model-profile command, session_start hook, and bundled skills. Verify with omp plugin list / omp plugin doctor, then reload a running session with /reload-plugins.

Direct from GitHub (no npm publish required)

Because the package lives at the repo root, omp can install it straight from git:

omp plugin install github:tlarevo/omp-model-profile

Via an omp marketplace (in-app discovery)

Marketplace catalogs are now discovered from .omp-plugin/marketplace.json first, with .claude-plugin/marketplace.json still supported as a fallback for older/shared catalogs. A minimal catalog pointing at this repo looks like:

{
  "name": "my-omp-plugins",
  "owner": { "name": "tlarevo" },
  "plugins": [
    {
      "name": "model-profile",
      "description": "Named model-role profiles for omp",
      "source": { "source": "github", "repo": "tlarevo/omp-model-profile" }
    }
  ]
}

From inside a running omp session, add the marketplace and browse/install via the built-in slash commands:

/marketplace add <owner/repo>
/marketplace
/marketplace install model-profile@my-omp-plugins

If you prefer the shell/CLI instead of the in-app browser, the equivalent flow is:

omp plugin marketplace add <owner/repo>
omp plugin install model-profile@my-omp-plugins

You can also browse explicitly with /marketplace discover (or omp plugin discover <marketplace> in the CLI).

Marketplace catalogs still cannot install plugins from typed npm sources. Use a git-based source in the catalog, or install the npm package directly with omp plugin install omp-model-profile.

Local development

Clone this repo, then symlink it so edits go live with /reload-plugins:

omp plugin link path/to/omp-model-profile

Or load it ad-hoc for a single session without installing:

omp -e path/to/omp-model-profile/src/index.ts

Commands

/model-profile                    Open the menu (interactive)
/model-profile switch <name|none> Activate a project or global profile, or clear the project override
/model-profile use <name|none>    Compatibility alias for switch
/model-profile show <name>        Inspect a profile
/model-profile create <name>      Build a profile with model pickers
/model-profile generate [name] <prompt>   Generate a profile with AI
/model-profile save <name>        Snapshot current role settings
/model-profile edit <name>        Change one role's model
/model-profile delete <name>      Remove a profile
/model-profile list               List all profiles

Writes default to the project file. Add --scope global, --global, or --project to target a storage scope (--user remains accepted as a compatibility alias for --global).

Generate with AI

/model-profile generate [name] <prompt> turns a description ("a fast, cheap profile preferring OpenAI models") into a profile. The name is optional — skip it and the model proposes one along with the profile. It asks an LLM — using your current session model — to assign a model to each role, then validates every pick against your available models before saving and showing a preview you can refine or activate. The request is a one-shot completion that never touches the chat transcript. Requires an authenticated model; needs @oh-my-pi/pi-ai (installed alongside @oh-my-pi/pi-coding-agent).

The model picker used by create/edit/generate supports provider tabs (←/→) and type-to-filter, so you can jump to a provider and narrow quickly — useful when the same model id is served by several providers.

Storage

Project profiles live at:

<cwd>/.omp/model-profiles.json

Global profiles live at:

~/.omp/agent/model-profiles.json

Effective profiles are merged as { ...global.profiles, ...project.profiles }, so project profiles win by bare name. Activation is scope-aware: the project file can explicitly point at either a project profile or a global profile, so project-local defaults still win unless you switch to a global profile on purpose.

JSON format

{
  "active": { "name": "deep-review", "scope": "project" },
  "profiles": {
    "deep-review": {
      "description": "High-quality planning/review",
      "modelRoles": {
        "default": "anthropic/claude-sonnet-4-5:high",
        "plan": "anthropic/claude-opus-4-5:high",
        "task": "openai-codex/gpt-5-codex:medium",
        "commit": "anthropic/claude-haiku-4-5:minimal"
      },
      "cycleOrder": ["smol", "default", "slow"],
      "taskAgentModelOverrides": {
        "reviewer": "pi/slow"
      }
    }
  }
}

Legacy "active": "name" strings are still read and are interpreted as “this scope's own profile”; subsequent writes upgrade them to the object form above.

Thinking suffixes (:minimal, :low, :medium, :high, :xhigh, :off, :auto) are preserved in role settings. On activation, the default role's suffix is applied to the live session — including :auto, which keeps per-prompt adaptive thinking (low–xhigh). A default with no suffix leaves the current thinking selector untouched. Other roles keep their concrete suffixes for subagents/pickers via omp's resolver; auto is offered only for the default role since it is a session-level selector.

Compatibility

Requires omp host @oh-my-pi/pi-coding-agent >= 15.10.11 (for the config/model-roles subpath export) and @oh-my-pi/pi-ai >= 15.

Last verified against omp v16.3.4 (2026-07-03) via bun run check:omp-head, which typechecks this plugin against the current omp source.

Releasing

CI (.github/workflows/ci.yml) runs bun run check + bun test on every push to main and every PR. Releases are tag-driven:

  1. Move the [Unreleased] entries in CHANGELOG.md under a new ## [x.y.z] heading and commit.
  2. Refresh the "Last verified against" line in the Compatibility section (run bun run check:omp-head first).
  3. npm version <patch|minor|major> — bumps package.json and creates the vX.Y.Z commit + tag.
  4. git push --follow-tags.

Pushing a v* tag triggers .github/workflows/release.yml, which re-runs check/tests, verifies the tag matches package.json, and publishes to npm. Publishing uses npm Trusted Publishing (OIDC) — no NPM_TOKEN secret required. The package must have a Trusted Publisher configured on npmjs.com (package Settings → Trusted publishing) naming this repository, release.yml, and the npm publish action; npm auto-generates provenance for trusted-publisher releases.