omp packages

pipellm-pi-provider0.3.8

PipeLLM provider for Pi with Anthropic Messages, macOS Keychain login, and a management CLI.

zzwz Published 14 days ago MIT ~766 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

PipeLLM Code Pi

pipellm-pi-provider for Pi

Connect Pi to PipeLLM with Anthropic Messages streaming, macOS Keychain login, and gateway management from the TUI or CLI.

npm OpenAI Codex Security SDK 0.1.31

Install · Configure · CLI · Security

This extension uses Pi's custom provider API, extension API, and package format. Pi provides native streaming, tools, usage reporting, and thinking behavior.

The package on the npm registry includes compiled JavaScript, source and tests in source/, and dependency notices in THIRD_PARTY_LICENSES/. The source and package use the MIT license.

Install

Pi extension

Register the extension with Pi:

pi install npm:pipellm-pi-provider

Restart Pi or use /reload.

Standalone CLI

Install the CLI:

npm install -g pipellm-pi-provider
pipellm-pi-provider --help

Or run it with npx:

npx --yes pipellm-pi-provider --help

pi install registers the extension. npm install installs the independent CLI. Both require Node.js 22 or later. Pi host packages are optional peers. The package does not bundle them.

Default commands install npm latest. To select a fixed version, use pi install npm:pipellm-pi-provider@0.3.8. The pi-package keyword enables discovery in the Pi package gallery.

Install from GitHub Releases or a compatible Pi fork

Download and run the stable installer:

curl -fL https://github.com/lwyBZss8924d/pipellm-pi-provider/releases/latest/download/pipellm-pi-provider-install.sh -o pipellm-pi-provider-install.sh
sh pipellm-pi-provider-install.sh

The script verifies the embedded archive's SHA-256, then calls pi install. GitHub Releases also provides versioned assets and SHA256SUMS.

Extraction requires POSIX sh, tar, base64, and sha256sum or shasum. The default installation directory is ${XDG_DATA_HOME:-$HOME/.local/share}/pi-packages/pipellm-pi-provider. Keep this directory because Pi loads the extension from it. Reinstallation uses the same registration path.

Option Purpose
--client pi-fork Select a compatible client
--package-command Use CLIENT package install
--prefix DIR Select the installation directory
--extract-only DIR Extract without client registration

Run the installed CLI with node /absolute/installed/directory/dist/cli.js.

Configure and sign in

Run these commands in Pi's terminal interface (TUI):

  1. Run /pipellm-config to select the HTTPS gateway, model, token limits, and thinking policy.
  2. Run /pipellm-login to enter the key through hidden input.
  3. Run /pipellm-status to check models and credential metadata.
  4. Select /model pipellm/claude-sonnet-5-5 or your configured model.

Login shows the destination and model for approval. It sends one small request to check the key before saving it to macOS Keychain. RPC clients use the CLI for login. Cancellation or failed validation saves no key.

Configuration preserves other providers and models. It backs up existing bytes and writes private configuration files atomically. Backups can contain older user-supplied secrets. Keep them private.

Credential sources

The extension selects the first available credential source:

Priority Source Persistence
1 Validated session key Current Pi session
2 PIPELLM_API_KEY in the process environment Managed by the injecting process
3 macOS Keychain item with account PIPELLM_API_KEY macOS Keychain

Keychain updates preserve existing service labels. Writes pass the key to security through stdin. The extension checks each Keychain write. Metadata commands never resolve Keychain passwords.

models.json stores a credential reference. This extension never reads or writes Pi's auth.json and ignores its legacy credential. Native /login pipellm directs you to /pipellm-login.

On macOS, configuration uses an environment-first Keychain command so models also work with extensions disabled. Pi resolves this command before extension authentication. Keychain-only requests can read the key twice, and model availability can show a command as configured without checking its result. Use /pipellm-status for credential metadata. Rerun gateway configuration to replace an older Keychain-only command.

Configuration updates preserve non-authentication headers and file symlinks. Backups use private permissions and remain until you remove them.

Do not save or inject PIPELLM_API_KEY through .env files. Use Keychain on macOS. On other platforms, use an authorized secret manager to inject the key into the child process. The extension never loads dotenv credentials. It checks for dotenv use and shows fixed warnings without changing files.

Dotenv checks and their limits

PipeLLM activation, configuration, and status inspect project and Pi agent directories for key assignments and loader indicators. Inspection covers up to 32 regular .env or .env.* files and 64 KiB per file. It skips symlinks and special files, and reports incomplete checks. Checks return fixed warnings and flags. They never include values or paths. The extension cannot prove environment provenance and reports it as unverified. Authentication dry runs read no keys or dotenv contents and send no request.

Model behavior

For gateways that require adaptive thinking, select minimal or higher. Pi's off setting sends disabled, which those gateways reject. New custom models show zero estimated cost until you supply pricing in models.json. Keychain persistence requires macOS. Other platforms use the process environment.

Management CLI

Inspect configuration and credential metadata:

pipellm-pi-provider status --json
pipellm-pi-provider config show --json
pipellm-pi-provider auth discover --json
pipellm-pi-provider auth policy --json
pipellm-pi-provider doctor --json

Preview configuration and login, then validate a key:

pipellm-pi-provider config set --base-url https://cc-api.pipellm.ai/anthropic --model claude-sonnet-5-5 --dry-run --json
pipellm-pi-provider auth login --model claude-sonnet-5-5 --dry-run --json
pipellm-pi-provider auth login --model claude-sonnet-5-5 --yes
pipellm-pi-provider auth check --model claude-sonnet-5-5 --yes --json

Remove --dry-run from config set to save configuration. Login accepts hidden terminal input, --from-env, or --stdin. It never accepts a key argument. --yes authorizes validation. Login saves only validated keys. auth check validates without saving.

Authorized agents can inject the key into the child process. They can use auth login --from-env --yes --json. Authentication dry runs read no credentials or dotenv contents. They send no request. The metadata commands above include dotenv-policy flags. Interactive login and check show the policy reminder.

Use --agent-dir DIR or PI_CODING_AGENT_DIR for isolated settings. The Incur CLI supports schemas, field filters, JSON/JSONL, token limits, completions, and optional MCP/skill integration. Use --schema --json or --llms --json to discover commands. The CLI does not start an HTTP listener. Explicit --mcp uses stdin and stdout. Non-TTY output defaults to { ok, data/error, meta } JSON envelopes.

Compatibility and removal

Tests cover Pi 1.0.2 and 1.0.3. Compatible forks must provide the JavaScript extension loader, native custom-provider API, commands, and TUI contracts. Package metadata alone does not establish compatibility. Prime Agent 0.9.8 cannot load this extension because it removed the TS/JS runtime. Prime can use its own model settings.

The installer rejects clients without advertised extension loading before changing settings or files. The default observer preserves requests and tools. It warns once per session when a returned tool is absent from the request. The warning never blocks handling or logs payloads, headers, arguments, or tool names.

Legacy fallback requires an explicit choice and Pi host helpers:

PIPELLM_COMPAT_MODELS=claude-opus-5-5 pi
Installation Removal command
npm Pi package pi remove npm:pipellm-pi-provider
Extracted Pi package pi remove /absolute/installed/directory
Global CLI npm uninstall -g pipellm-pi-provider

Remove credentials separately in macOS Keychain Access.

Develop

Directory Contents
src/ Extension, CLI, and shared code
assets/ Theme variant and brand provenance
scripts/ Build and release tools
tests/ Contracts and fixtures
distribution/ Canonical README, CLI guide, and workflow templates

Root documents and workflows match their distribution/ templates. The development manifest has private: true and points pi.extensions to TypeScript. Packing creates a publishable manifest with compiled JavaScript, bin, exports, and optional peers.

From the repository or the archive's source/ directory:

bun install --frozen-lockfile --ignore-scripts
bun test tests
bun run typecheck
bun run format:check
bun run pack

Build output includes the .tgz, stable and versioned installers, and SHA256SUMS. Use isolated Pi settings and an isolated destination when testing the installer. Release workflows publish the tested archive to npm latest and GitHub Releases. npm publication uses the repository's NPM_TOKEN secret.

Release security

The release workflow uses the pinned OpenAI Codex Security SDK from its official OSS repository. Publication requires these checks:

Stage Required result
Source Package version matches its tag and verified commit
Verification Linux/macOS tests, types, formatting, and installation checks pass
Security scan Scan completes with complete coverage, no deferred review, and no high or critical findings
Publication Checksums match the tested archive published to npm and GitHub Releases

Scan errors and incomplete coverage block publication. Medium and low findings still require review. View the release checks and security policy.

The v0.3.6 scan completed in 567 seconds with complete coverage, zero deferred review, and zero findings. This result applies to that release.

Maintainer scan setup

Use a dedicated maintainer-controlled self-hosted runner labelled codex-security-chatgpt. It requires Node 24, Bun, Python 3.10 or later, and a private CODEX_HOME outside the checkout. Detailed reports stay under $CODEX_HOME/pipellm-release-scans/. Keep them private. Pull requests use hosted runners without ChatGPT login state.

Authenticate with codex login --device-auth. Check authentication with codex login status. The SDK uses auth: "chatgpt". The SDK and native Codex CLI have separate pins. The scanner uses the project's CLI instead of the SDK's older bundled runtime.

Set CODEX_SECURITY_MODEL to a model that the account supports. The fallback is gpt-6.1-sol with high reasoning. Device login does not guarantee model access. Set CODEX_SECURITY_SERVICE_TIER=fast to enable Fast mode for a supported model and account. Omit this variable to use Standard (default). Reasoning remains high.

Fast mode uses about 2.5 times the included subscription allowance or 2 times purchased credits. It accelerates model generation. Tool calls and validation still take time. CI logs only elapsed time and aggregate scan progress.

Run bun scripts/security-scan.ts . --preflight to check local inputs only. Omit --preflight to run a scan.

Roadmap

Future iterations will support 1Password op storage, loading, and automatic discovery with explicit vault and item selection. Current credential sources are the validated session, process environment, and macOS Keychain.

Links and support

Resource Link
PipeLLM pipellm.ai
PipeLLM Code code.pipellm.ai
PipeLLM documentation docs.pipellm.ai
Gateway, account, and billing support support@pipellm.ai
Extension bugs and requests GitHub Issues
Extension security reports Private security advisories
PipeLLM Code policies Terms · Privacy

PipeLLM lists its public support contact in its service terms. Pi references: upstream repository, package documentation, slash commands, and package gallery.

Brand references: Pi press kit, PipeLLM Code, and Codex Security icon. The marks identify the host and scan tooling. This package is independently maintained. See OpenAI's security administration documentation for its service controls.

npm is a registered trademark of npm, Inc. See the npm logo and usage policy.