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

@steel-dev/pi

v0.1.0

Published

Official Steel cloud browser extension for the Pi coding agent

Readme

@steel-dev/pi

Official Steel cloud-browser tools for the Pi coding agent.

Install

Steel CLI authentication

If the Steel CLI is not already installed, install it first:

curl -fsS https://setup.steel.dev | sh

Then authenticate and install the Pi extension:

steel login
pi install npm:@steel-dev/pi

API key authentication

Create or copy an API key from app.steel.dev, then:

export STEEL_API_KEY="your-steel-api-key"
pi install npm:@steel-dev/pi

Then ask Pi to browse:

Open Hacker News, inspect the page, and tell me the top story.

For a one-off run:

pi -e npm:@steel-dev/pi

Browser tools

  • Navigation: steel_navigate, steel_go_back, steel_get_url, steel_get_title
  • Inspection: steel_snapshot, steel_scrape, steel_find_elements
  • Interaction: steel_click, steel_type, steel_fill_form, steel_wait, steel_scroll
  • Artifacts: steel_screenshot, steel_pdf
  • Structured data: steel_extract
  • Low-level input: steel_computer
  • Lifecycle: steel_pin_session, steel_release_session

Start interactive workflows with steel_snapshot. It returns an ARIA tree that lets Pi target controls by accessible role and name instead of guessing CSS selectors.

Interaction tools accept exactly one target method:

{ "role": "button", "name": "Continue" }
{ "targetText": "Sign in" }
{ "selector": "[data-testid='submit']" }

Role/name targeting is preferred. CSS remains available for pages without useful accessibility metadata.

Sessions

The default mode is session: one Steel browser remains available across Pi prompts until Pi switches sessions, shuts down, or calls steel_release_session.

Set STEEL_SESSION_MODE to:

  • session — persistent across prompts (default)
  • agent — release after each agent run
  • turn — release after each turn

steel_pin_session switches to persistent mode at runtime. steel_release_session closes the current browser and restores the configured default.

All creation failures attempt API cleanup, and every tracked session is released during Pi lifecycle cleanup.

Configuration

Requirements:

  • Node.js 22.19 or newer
  • A current Pi runtime with package extensions
  • STEEL_API_KEY or Steel CLI authentication from steel login

Connection:

  • STEEL_BASE_URL — override the API base URL
  • STEEL_CONFIG_DIR — override Steel CLI configuration directory
  • STEEL_BROWSER_API_URL, STEEL_LOCAL_API_URL, STEEL_API_URL — compatibility aliases

Session:

  • STEEL_SESSION_MODE
  • STEEL_SESSION_TIMEOUT_MS
  • STEEL_SESSION_HEADLESS
  • STEEL_SESSION_REGION
  • STEEL_SESSION_PROFILE_ID
  • STEEL_SESSION_PERSIST_PROFILE
  • STEEL_SESSION_CREDENTIALS
  • STEEL_SESSION_NAMESPACE

Proxy and CAPTCHA:

  • STEEL_USE_PROXY, STEEL_PROXY_URL
  • STEEL_SOLVE_CAPTCHA
  • STEEL_CAPTCHA_MAX_RETRIES, STEEL_CAPTCHA_WAIT_MS, STEEL_CAPTCHA_POLL_INTERVAL_MS

Tools and artifacts:

  • STEEL_TOOL_TIMEOUT_MS
  • STEEL_NAVIGATE_RETRY_COUNT
  • STEEL_SCRAPE_MAX_CHARS
  • STEEL_ARTIFACT_DIR — defaults to ~/.cache/steel/pi

Scrapes are saved in full before inline output is truncated. Screenshot, PDF, computer-action image, and scrape results return absolute artifact paths.

Self-hosted API

Point the SDK at the API root. A trailing /v1 is accepted and normalized:

STEEL_BASE_URL=http://localhost:8080/v1 pi -e .

The extension prefers the session-scoped websocketUrl returned by session creation. It does not append the account API key when that URL already carries a connect token.

Local development

npm install
npm run check
pi --no-extensions -e .

Run the opt-in live test with Steel credentials:

STEEL_API_KEY=... npm run test:live

Package verification:

npm pack --dry-run

Migration and attribution

This package graduates the original @steel-experiments/pi-steel prototype into the official @steel-dev scope. It preserves the prototype’s tool names so existing prompts continue to work, while updating Pi dependencies, CDP authentication, cleanup, semantic targeting, artifacts, and tests.

The initial implementation derives from steel-experiments/pi-steel, with additional packaging and fresh-install lessons informed by the community-maintained @false00/pi-steel. See the repository history and license for attribution.