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

@jameslovespancakes/pi-plus

v1.0.25

Published

pi and more

Readme

Remote control, shared subscriptions, and multi-agent tools for pi.

npm CI license

Changelog · Releases

Install

Requires pi 0.87.1+.

pi install npm:@jameslovespancakes/pi-plus

Run /pi-plus to see your setup and configure each feature.


Remote Control

Keep working from your phone. Message your local pi session from the Claude app or claude.ai/code. Prompts queue while pi is busy; the app's Stop button stops the agent. Your selected model still runs through pi.

──────────────────────────────────────
 Remote Control
› ● Remote Control              On
──────────────────────────────────────

/claude-remote toggles On/Off for this session only. Startup, new sessions, resumes, forks, and reloads always start Off; old auto-start preferences are ignored. Off disconnects immediately. The footer dot is green when connected and red otherwise.

Off by default. Requires your primary Anthropic OAuth login via /login. Experimental: text input and completed-message mirroring, not token streaming. Remote model changes and permission approvals are not supported.

Privacy: enabling uploads new messages, thinking, images, and tool arguments/results to Anthropic and lets that Claude account control your local agent. Past history and system prompts are not mirrored. Turning it off does not delete uploaded content. Set PI_CLAUDE_REMOTE_ALLOW_INBOUND=0 for read-only; accounts requiring device verification can supply CLAUDE_TRUSTED_DEVICE_TOKEN.

Messaging Board

Keep agents coordinated across sessions and machines. Shared project rooms, direct messages, live presence, and coordinator assignments let agents exchange progress without duplicating work.

 Messaging Board · Active
 repo:project │ reviewer │ builder

 reviewer   Tests pass. Ready for review.
 builder    Picking up the next task.

 Message >

/board setup configures a local or SSH-hosted board server. /board opens the chat. Presence stays out of model context; only requested board data and actual messages are delivered.

Subscriptions

Use your available capacity instead of managing accounts by hand. Pool multiple subscriptions, route by account order or remaining quota, and see usage in the footer. Supports Anthropic, OpenAI Codex, Gemini, Kimi Code, and xAI.

 Claude Σ2 · 2/2 ready
 5h      █████████████░░░░░░░   65%
 weekly  ███████████░░░░░░░░░   58%
 Work 72% · Personal 58%

/accounts adds, reauthorizes, and toggles accounts. /routing quota-aware uses reported capacity; /routing sequential follows account order. /usage refreshes the bars.

Claude usage comes from response headers first, with a shared cached status fetch when needed. Cooldowns survive restarts and are respected by /usage; usage checks never generate model responses or consume inference tokens. After limit failures, Claude, Codex, and Gemini can recheck the serving account's non-inference usage endpoint. Checks are shared and throttled, honor available cache data and server cooldowns, and never prevent failover if status is unavailable. Model-specific allowances remain separate.

Gemini login and reauthorization confirm account access before reporting success. If Google requires verification, its verification page opens through pi's auth UI; complete it, then choose check again. Credentials are saved only after the server confirms access. Background quota checks never open a browser; they point you to /login gemini or /accounts reauth gemini <name> when verification is needed.

Quota visibility depends on the provider. Where no usage endpoint exists, pi-plus shows the last observed rate-limit reading rather than inventing one.

Model Information

Choose on evidence, not guesswork. Compare Artificial Analysis benchmarks, price, speed, and remaining subscription quota in one catalog.

 Benchmarks + price + speed + quota
                  ↓
        Better-informed selection

/model-info setup connects your benchmark key. /models opens the ranked catalog; the list_models tool gives agents the same information.

Provider Controls

Decide which providers may spend. Gate metered providers at the request boundary, including workflow subagents—not just through prompt instructions.

──────────────────────────────────────
 Providers
› ● Anthropic              Allowed
  ● OpenRouter             Off
──────────────────────────────────────

/provider opens the picker. Enter or Space toggles access in place. OpenRouter cycles Off → On → On (ZDR) → Off. Grants are session-local; explicit policy denials stay locked. Other providers keep their existing toggles.

On (ZDR) restricts OpenRouter inference to Zero Data Retention endpoints, including workflow agents and compaction. No eligible endpoint means an error, never a non-ZDR retry; fallback among ZDR endpoints is allowed. Native Chat Completions and Anthropic Messages routes are supported; unsupported APIs or custom endpoints fail closed. Ordinary On does not remove account-level privacy rules. ZDR does not cover separately enabled search plugins or local session logs.

Commands: /provider approve openrouter, /provider zdr openrouter, and /provider remove openrouter.

If upgrading from v1.0.23, restart pi once rather than using /reload so its old provider guard is removed. Not every model has a ZDR endpoint; an unavailable ZDR route is different from OpenRouter being Off.

Workflows

Turn repeatable tasks into coordinated agent runs. Built-in reviews, diagnostics, research, and refactoring workflows support parallel agents, worktree isolation, replay, and usage accounting. Every run returns immediately; results arrive when it finishes. There is no separate foreground/background mode.

Live and finished runs share readable titles (for example, Trace Launch 3), with recorded cost beside the title when available. Completion appears immediately as a compact inline result; expand it for the run ID and usage breakdown. The parent receives a bounded result at its next safe turn boundary, or wakes if idle. Cancellation is respected. Live widgets clear on completion, failure, pause, or stop, and late progress updates cannot bring them back.

Pooled subscription requests automatically try other eligible accounts on the same model, then make three further eligibility checks after waits of 10, 25, and 60 seconds. Server cooldowns and exhausted quota windows are respected; without a reset hint, a temporary limit becomes eligible at the first fallback. Recovery retries the pending request, not the agent or its completed tools. There is no agentRetries setting. Once streamed output has been exposed, automatic retries and workflow auto-resume stop rather than replaying it.

 Task → parallel agents → findings → result
/workflow code-review HEAD~3
/workflow research "Compare the available approaches"

/workflow opens the running agent board. Enter inspects, Esc goes back, and X stops the selected agent from the list. Inspection needs at least 80×24. PgUp/PgDn scroll agent chat; Ctrl+Home/Ctrl+End jump to the start/end. Mouse-wheel scrolling works where pi supplies mouse events (fullscreen mode). New output keeps your reading position until you return to the bottom. The board no longer shows a latest-output preview. The inspector uses pi's native message/tool rendering and editor. Enter steers; Alt+Enter queues a follow-up. /model provider/model and /thinking level affect only that agent. Other parent-session commands are not forwarded.

Every api.agent() call requires label, model, and thinkingLevel. Built-ins resolve explicit routes with api.modelProfile("small" | "medium"); configure both routes in .pi/workflow-models.json (or the agent-directory workflow-models.json), each with model: "provider/model-id" and thinkingLevel. Missing routes now fail rather than inheriting the host model. The file shape is { "profiles": { "small": { "model": "provider/model-id", "thinkingLevel": "low" }, "medium": { "model": "provider/model-id", "thinkingLevel": "high" } } }.

The main agent can use workflow({ action: "list" }), or inspect/stop with runId and optionally agentId. Status checks show only running/stopping agents; inspection includes at most the last 10 visible transcript entries across the shown agents, including actual tool output but excluding private thinking. Lists are capped at 10 active runs and 20 agents total; inspection shows at most 20 agents, with bounded log text. Activity is fetched on demand, not injected into every turn. Limits on concurrency, agents, time, and output tokens remain optional.

Remote Workers

Run tests and builds on the machine suited to them. Snapshot your working tree to an SSH worker after checking CPU, memory, disk, and GPU capacity.

 Remote Workers
› ● build-box    READY
  ● gpu-node     READY
  ● laptop       UNREACHABLE

/remote setup selects or adds workers. Agents use remote_status and remote_test to inspect capacity and execute commands. Uploaded source is removed after the run by default; logs and results are retained.


Configuration

Feature preferences live in ~/.pi/agent/pi-plus.json. Environment variables win over saved values. Credentials, account pools, and caches use separate stores; pi remains responsible for its own authentication and session state.

For local development:

pi install /path/to/pi-plus
npm install && npm run verify

Source Architecture

  • src/core/: shared configuration, storage, OAuth and process/SSH primitives.
  • src/providers/: provider-specific auth, transport, quota and policy, plus shared account serving/recovery.
  • src/domains/: seven thin pi extensions; workflows are grouped by execution, agents, runs, replay, workspace and UI.
  • src/ui/: terminal components that render prepared data without provider rules.

Architecture and ownership are guarded by dependency and runtime-cycle tests. Existing credential and run storage formats are preserved.

Sources & Credits

| Project | Contribution | | --- | --- | | pi | Host agent, extension API, session and authentication lifecycle | | claude-remote-lib | Remote Control protocol (provenance & license) | | pi-claude-remote | Behavior reference for the independently implemented remote adapter | | pi-workflow-engine | Embedded workflow runtime (MIT) | | pi-antigravity | Gemini provider reference (MIT) | | pi-anthropic-auth | Original subscription integration, since reimplemented (MIT) | | xxhash-wasm | Vendored billing checksum (MIT) | | Artificial Analysis | Model benchmark data |

Disclaimer

pi-plus is an unofficial, independent project—not affiliated with or endorsed by pi, Anthropic, OpenAI, or other providers. Remote Control uses an unofficial protocol that may change without notice.

You are responsible for complying with each provider's terms, including subscription pooling and remote access. Review those terms before connecting accounts. Features that mirror sessions or run remote jobs send data to those services or machines.

Provided as is, without warranty. MIT License.