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

@jerryan/pi-pyvenv

v0.1.2

Published

Automatically activate a Python virtual environment for pi coding agents

Readme

@jerryan/pi-pyvenv

A pi extension that transparently ensures every python, python3, pip, and pip3 invocation resolves to a virtual environment — never to the system Python.

Why

Coding agents love running pip install against the system Python. This breaks or pollutes the user's system packages. pi-pyvenv makes this impossible by automatically activating a venv at the process level before the agent starts working.

What it does

On every session start, pi-pyvenv picks a venv in this order:

  1. Respect existing activation — If VIRTUAL_ENV is already set (e.g. the user activated a venv in their shell before launching pi), do nothing.
  2. Discover project venv — If .venv/ or venv/ exists in the current working directory, activate that.
  3. Shared fallback venv — Otherwise, activate (or create) a shared user-level venv at ~/.pi/agent/pyvenv/.

The activation mutates process.env.PATH and process.env.VIRTUAL_ENV once at the Node.js process level. All subsequently spawned child processes inherit it automatically — no command rewriting, no spawnHook, no tool interception.

Installation

pi install npm:@jerryan/pi-pyvenv

Or install from git:

pi install git:https://github.com/JerryAZR/pi-pyvenv.git

Then restart pi or run /reload.

Commands

| Command | Description | |---|---| | /pyvenv status | Show the currently active venv | | /pyvenv recreate | Delete and rebuild the shared fallback venv |

What it is NOT

This extension is not a project-level venv manager. It does not:

  • Create .venv/ in your project directory
  • Switch venvs when you change directories
  • Handle requirements.txt, pyproject.toml, or lockfiles
  • Wrap Conda, Poetry, uv, or pipenv

If you are working on a real Python project, create your own .venv/ and pi-pyvenv will discover and use it automatically.

Design decisions

  • No system prompt injection — The agent does not need to know a venv is active. This is pure infrastructure.
  • No command rewriting — We trust PATH precedence. Absolute paths like /usr/bin/pip are rare and not worth the fragility of interception.
  • No spawnHook — Process-level env mutation covers bash tool, ! commands, pi.exec(), and other extensions.
  • MS Store shim detection — On Windows, broken python3 shims (exit code 49) are automatically skipped during Python discovery.
  • Dead venv recovery — If the shared venv's underlying Python was removed or upgraded, it is detected and recreated on the next session start.

License

MIT