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

better-custom

v0.3.2

Published

Pi extension package for adding and deleting custom providers through an interactive wizard.

Readme

better-custom

A better way to add custom providers for the Pi coding agent.

Features

  • Add, edit, or delete custom providers from an interactive wizard
  • Supports:
    • OpenAI-compatible endpoints
    • Anthropic-compatible endpoints
    • Ollama-compatible endpoints
  • API key modes:
    • API key (stored verbatim in ~/.pi/agent/models.json)
    • none (writes a placeholder so the provider still loads)
    • existing $ENV and !command keys are still resolved when re-probing
  • Auto-probe /models for OpenAI-compatible endpoints
  • Multi-select model picker for probed models
  • Unique provider names — the wizard refuses to overwrite an existing provider
  • Image input enabled by default (input: ["text", "image"]) so vision-capable models receive images instead of having them silently dropped
  • Reasoning enabled by default at the xhigh ceiling for newly added models
  • Safe delete flow for whole providers or individual models

Install

From npm:

pi install npm:better-custom

From GitHub:

pi install https://github.com/ratatulieoi/better-custom

Usage

After installing, reload pi if needed, then run:

/better-custom

The wizard can:

  1. Add a provider
  2. Edit a provider
  3. Delete a provider

Add a provider

Guides you through:

  • provider style (OpenAI / Anthropic / Ollama)
  • endpoint
  • provider name (must be unique)
  • API key method (API key or none)
  • model discovery (auto-probe /models) or manual model entry

Newly added models default to input: ["text", "image"] and reasoning: true at the xhigh ceiling. Tune any of this later via Edit provider.

Edit a provider

Pick a provider, then choose:

  • Re-probe for new models — query /models again and add ones not yet configured
  • Set context window (all models) — apply one contextWindow to every model
  • Edit per model — pick a model and edit a single field:
    • Reasoning ceiling (offxhigh)
    • Vision (text+image vs text-only)
    • Context window
    • Max output tokens
    • Headers / endpoint override (per-model baseUrl and JSON headers)
    • Delete this model
  • Add models manually
  • Rename provider — change the provider name (key) in models.json

Per-model edits change one field in place, so untouched fields (cost, headers, overrides) are preserved.

Delete a provider

Lists configured providers and removes the selected one after confirmation.

How reasoning maps to pi

pi exposes six thinking levels: off, minimal, low, medium, high, xhigh. When a model has reasoning: true, pi treats minimal through high as available. xhigh is opt-in and only unlocked when explicitly mapped, and any level set to null is removed. The wizard writes a thinkingLevelMap to unlock xhigh or to cap reasoning below high.

Files

  • index.ts — extension entry point
  • package.json — pi package manifest

License

MIT