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

qpilot

v0.7.3

Published

Run manual test cases with an AI agent in a real browser

Readme

qpilot

AI agent that runs your manual test cases in a real browser

npm GitHub stars node license

If qpilot saved you time → ⭐ Star it on GitHub. It helps more than you'd think.


How it works

  1. You paste a plain-text test case
  2. The agent opens Chrome and executes each step
  3. You watch results appear live — pass, fail, or warn per step
  4. If it hits a captcha or OTP, it pauses and asks you directly

No code. No Selenium. No config files.

| | Manual testing | Selenium / Playwright scripts | qpilot | |---|---|---|---| | Setup | none | write + maintain a test suite | paste plain text | | Survives UI changes | n/a (a human adapts) | breaks on selector/layout changes | reads the page like a human, via ARIA semantics | | Who can write a test | anyone | someone who codes | anyone who can write a step-by-step description | | OTP / captcha | human handles it | usually blocks the run | pauses and asks you, then continues | | Result | you watched it yourself | pass/fail, no narrative | pass/fail/warn per step, with evidence |


Quick start

Requirements: Node.js 20.12+, Google Chrome, an Anthropic API key — or any OpenAI-compatible model endpoint (Qwen, vLLM, Ollama, corporate gateway)

npx qpilot

That's it. On first run qpilot walks you through a quick provider setup (arrow-key menu), then every launch shows your config and a Start menu.

Browser opens automatically at http://localhost:3847.


Models & providers

On first run qpilot asks which model to use. You can re-run setup anytime:

npx qpilot config

Two options:

  • Anthropic (Claude) — enter your sk-ant-… key. Default model is claude-haiku-4-5. Base URL is optional — set it if you reach Claude through a corporate proxy/gateway.

  • Custom — any OpenAI-compatible endpoint: Qwen, vLLM, Ollama, a corporate gateway, OpenRouter, or OpenAI itself. You provide a base URL, API token and model id, e.g.:

    Base URL: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
    Model id: qwen2.5-72b-instruct

Your choice is saved to ~/.qpilot/config.json (mode 600) and reused on every run.

The custom path speaks the OpenAI /chat/completions protocol with tool calling — so the model must support function/tool calling for the agent to drive the browser.

API key (Anthropic shortcut)

For the Anthropic provider you can skip setup by supplying the key via env:

  1. ANTHROPIC_API_KEY environment variable
  2. .env.local file in the current directory
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env.local

The key is never stored except in ~/.qpilot/config.json when you run setup.


Options

| Command | Description | |------|-------------| | qpilot config | Re-run provider setup (Anthropic or custom model) |

npx qpilot config

Browser visibility is a per-run choice in the UI, not a CLI flag: hit Run to stay headless, or Run with preview to watch Chrome click through the page.


Writing a test case

TC-001 — Login and add item to cart
URL: https://www.saucedemo.com/
Credentials: standard_user / secret_sauce

Steps:
1. Open the home page.
   Expected: login form with Username and Password fields is visible.

2. Enter credentials and click Login.
   Expected: Products page opens with 6 items.

3. Click "Add to cart" on "Sauce Labs Backpack".
   Expected: cart counter shows 1.

4. Click the cart icon.
   Expected: cart contains Sauce Labs Backpack at $29.99.

You can paste multiple test cases at once — the agent runs them in order.


Running a folder of test cases

Click Choose folder to point qpilot at a directory of .md files (or Upload .md for a single file). Check the ones you want, then Run the batch — each file runs one after another with live status and timing, and you can Stop mid-batch. Finished runs (including past batches) show up under Recent runs on the home page.


Notes

  • API key is stored only in ~/.qpilot/config.json (file mode 600) — never sent anywhere except your chosen model provider
  • Runs are in-memory and capped at the last 50 — restarting the server clears all of them
  • Powered by Claude + Playwright