@floez-werk/piagent-private-ai

Pi extension: use private-ai (privatemode.ai) models as a provider

Packages

Package details

extension

Install @floez-werk/piagent-private-ai from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@floez-werk/piagent-private-ai
Package
@floez-werk/piagent-private-ai
Version
0.1.2
Published
Oct 13, 2026
Downloads
340/mo · 340/wk
Author
floezwerk
License
MIT
Types
extension
Size
21 KB
Dependencies
0 dependencies · 3 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

piagent-private-ai

npm license CI changelog

Pi extension: use private-ai (Privatemode) models as a provider

Table of contents

Behavior

Registers private-ai as a Pi model provider backed by Privatemode - an OpenAI-compatible chat endpoint operated inside confidential computing environments by Edgeless Systems. No Pi service is involved.

Connection modes

The connection is configured via the privateAi settings key (user settings ~/.pi/agent/settings.json or project settings .pi/settings.json):

Setting Default Description
privateAi.mode "proxyless" "proxyless" uses the hosted proxyless API (memory encryption, no client-side attestation). "proxy" calls a locally running Privatemode proxy, which verifies the backend attestation and encrypts prompts client-side.
privateAi.proxyBaseUrl http://localhost:8080/v1 Base URL of the proxy in "proxy" mode (e.g. a remote proxy at http://raspberrypi:3003/v1).
privateAi.proxyApiKey $PRIVATEMODE_API_KEY API key sent to the proxy in "proxy" mode. Supports $ENV interpolation, a literal value, or !command (like models.json).

Example:

{
  "privateAi": {
    "mode": "proxy",
    "proxyBaseUrl": "http://raspberrypi:3003/v1"
  }
}

Settings changes require a pi restart or /reload.

Models

The following chat models appear under the private-ai provider (see the Privatemode model overview):

Model ID Alias Context Input Reasoning effort
glm-5.3 glm-latest 1M text low / high / max
glm-5.3-flash glm-flash-latest 1M text, image low / high / max
gpt-oss-120b - 128k text low / medium / high
  • All models stream, support tool calling and always perform reasoning; the pi thinking level is forwarded as reasoning_effort and the reasoning field of the response is shown as thinking.
  • Embedding, speech-to-text and the DeepSeek-OCR-2 models are not exposed (they are not chat models / need a special prompt format).
  • Privatemode prices are EUR per million tokens (pricing); the EUR values are used as-is for the cost display.

Authentication

Create an API key in the Privatemode portal and store it exactly like any other provider credential:

/login private-ai

Pi prompts Enter API key and saves the credential in auth.json; the models then appear in /models (and /logout private-ai removes it again).

Alternatives, in precedence order:

  1. auth.json via /login private-ai (stored credential wins over everything below)
  2. PRIVATEMODE_API_KEY environment variable: export PRIVATEMODE_API_KEY="<your-api-key>"
  3. privateAi.proxyApiKey from settings (proxy mode only; supports $ENV interpolation, literals, or !command)

Without any credential the models are registered but hidden from the picker, like every other provider - Pi suggests /login in that case.

Project-level .pi/settings.json values apply at session start (after project trust); the extension reads privateAi from the user-level settings.json directly at load so the models are known without a session (pi --list-models, startup model selection).

Installation

Local (development):

pi -e ./extensions/piagent-private-ai.ts

As a pi package (GitHub or npm):

pi install git:https://github.com/FloezWerk/piagent-private-ai.git
# or
pi install npm:@floez-werk/piagent-private-ai

The npm package is listed in the pi package catalog automatically (keyword pi-package).

Commands

Command Effect
/private-ai Show provider status: connection mode, base URL, the resolved auth source, the current model (if it is a private-ai model) and the available models.
/private-ai <model-id> Switch the current session to a private-ai model, e.g. /private-ai glm-latest.

After changes in a running session: /reload.

Dependencies

@earendil-works/pi-ai, @earendil-works/pi-coding-agent and @earendil-works/pi-tui are bundled by pi and are therefore only declared as peerDependencies.

Changelog

Notable changes per version are documented in CHANGELOG.md. Every tagged release (vX.Y.Z) is published to npm and appears as a GitHub release with the package tarball.

0.1.2 - 2026-10-13

Changed

  • Published to npm via trusted publishing instead of a stored npm token.

Full history and all versions: CHANGELOG.md