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

@pavlenkoia/pi-custom-provider

v1.0.2

Published

Расширение pi: управление кастомными провайдерами OpenAI-совместимого API (добавление, редактирование, обновление, удаление) и регистрация их моделей в каталоге AI pi.

Readme

@pavlenkoia/pi-custom-provider

Расширение pi, которое даёт возможность pi управлять кастомными провайдерами OpenAI-совместимого API — добавлять, редактировать, обновлять и удалять их, а также регистрировать модели, которые они выдают, в каталоге AI самой pi.

Работает с любым endpoint'ом OpenAI-compat (vLLM, Ollama --api openai, LM Studio, text-generation-webui, прокси together-inference, самописные шлюзы и т. п.).

Что умеет

  • /provider — интерактивное меню: добавить провайдера · отредактировать · обновить · удалить · список
  • /provider-status — показать настроенные провайдеры и их идентификаторы
  • /provider-purge — принудительно удалить все runtime-провайдеры (инструмент восстановления)

При старте расширение читает сохранённую конфигурацию и делает запрос GET {baseUrl}/models для каждого провайдера, затем регистрирует модели в pi и подгружает их в селектор /model.

Для LiteLLM расширение дополнительно читает штатный GET {apiRoot}/model_group/info и объединяет metadata по model ID: vision input, reasoning и контекстные лимиты. Если endpoint отсутствует или отвечает ошибкой, это не ломает generic OpenAI-compatible provider: расширение продолжает работать только по /models.

Где хранится конфигурация

Конфиги живут в глобальном агент-директории, независимо от рабочей директории, куда запущен pi:

  • ~/.pi/agent/custom-provider.json — определения провайдеров (массив providers)
  • ~/.pi/agent/custom-provider-state.json — runtime-бухгалтерия (идентификаторы зарегистрированных провайдеров)

~/.pi/agent определяется пи ядром (getAgentDir()): домашний каталог по умолчанию, либо переопределение через переменные окружения PI_CODING_AGENT_DIR / TAU_CODING_AGENT_DIR. Так состояние загружается из любой папки.

Ключ API записывается с правами 0600 и в репозиторий не попадает. Среда для секретов вы просите при добавлении провайдера, а не из кода репо.

Требования

  • pi ≥ 1.x
  • Node.js (пирингирует пакет pi)

Шаг сборки не требуется — расширения загружаются напрямую через jiti, поэтому TypeScript работает без компиляции.

Установка

Из git

pi install git:github.com/pavlenkoia/pi-custom-provider@main

Из npm

npm login --registry=https://registry.npmjs.org/   # выложить один раз
pi install npm:@pavlenkoia/[email protected]

Попробовать без установки (временно, только для текущего запуска)

pi -e git:github.com/pavlenkoia/pi-custom-provider@main
# или после публикации:
pi -e npm:@pavlenkoia/[email protected]

Обновление

pi update --extension git:github.com/pavlenkoia/pi-custom-provider@main
# или все расширения сразу:
pi update --extensions

Удаление

pi remove git:github.com/pavlenkoia/pi-custom-provider@main
# глобальные пакеты лежат под ~/.pi/agent/git/<host>/<path>
# проектные (с флагом -l) — под .pi/git/<host>/<path>

Установка из локального чек-аута вручную

Кладём index.ts в папку расширений и перезагружаем:

mkdir -p ~/.pi/agent/extensions
cp index.ts ~/.pi/agent/extensions/pi-custom-provider.ts
# затем в pi:  /reload

Или добавляем путь в проект/глобальные настройки под ключом extensions:

{
  "extensions": [ "/home/<ваш_логин>/pi-custom-provider" ]
}

Разработка

Расширение — это одиночный TypeScript-модуль. Чтобы проверить его локально (типы + импорты), можно запустить pi против него:

pi -e ./index.ts

Лицензия

MIT