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-connect

v0.2.1

Published

Unified OAuth and API key login for Oh My Pi / OMP.

Readme

omp-connect

Unified OAuth and API-key login for Oh My Pi / OMP.

omp-connect keeps the core pi-connect workflow while using the current OMP APIs:

  • /connect with provider selection
  • API-key paste for Google Gemini, OpenRouter, and other registered providers
  • OMP-native OAuth for providers that expose an OAuth login
  • /disconnect with per-credential removal

Install for development

From this repository:

omp plugin link .
omp plugin list --json
omp plugin doctor --json

The manifest is the omp field in package.json; this is an OMP plugin, not a legacy pi package.

Usage

/connect
/connect google
/connect openrouter
/disconnect

/connect google asks for a Gemini / AI Studio API key. The provider picker shows separate OAuth and API-key rows for providers that support both, including OpenRouter, so an existing OpenRouter key can be pasted without being forced through OAuth.

For a direct command such as /connect openrouter, the extension preserves the pi-connect method chooser. OAuth is delegated to OMP's AuthStorage.login; this extension does not implement an OAuth protocol or token exchange.

Credential storage

Pasted keys are saved with OMP's public AuthStorage.upsertCredential API. They are not written to .env, models.yml, keys.json, or a plugin-owned credential file. Existing provider/model IDs are preserved, including google/... and openrouter/....

OMP v18.2.6 supports multiple credentials per provider. upsertCredential appends a different key and updates an identical key, while /disconnect removes only the selected credential. The extension deliberately does not use AuthStorage.set, whose replace-all behavior could silently discard older keys.

The extension never prints API keys, OAuth tokens, credential objects, or provider error objects to logs or test output.

Development notes

The package targets the OMP v18.2.6 public package names. They are optional peer dependencies, not plugin dependencies; OMP supplies them from the host installation when loading the extension, so installing the plugin does not pull a second OMP runtime into the plugin directory:

  • @oh-my-pi/pi-coding-agent
  • @oh-my-pi/pi-ai
  • @oh-my-pi/pi-tui

ExtensionAPI, ExtensionContext, and OAuthPrompt are type-only imports. Two host-resolved runtime imports remain intentional: getOAuthProviders() is not exposed by the injected modelRegistry/authStorage, and the masked API-key prompt uses OMP's injected TUI surface with Container/Input/Text; the public ctx.ui.input() API has no secret/mask option. Removing either runtime import would change provider discovery or reveal pasted keys in the prompt.

License

MIT