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

simman

v0.1.0

Published

SimMan (Simulated Manual) — selectorless vision-cursor testing for web. A vision model is the eyes, a real cursor is the hands.

Readme

SimMan

CI

Simulated Manual — selectorless, vision-grounded, real-cursor testing for web.

Status: alpha (0.x) — APIs and scenario schema may change between minor releases.

Instead of CSS selectors, a multimodal model is the eyes and a real cursor is the hands: screenshot → model grounds pixel coordinates → real click → model judges "did the expected result happen," with DOM/network truth-signals authoritative when declared. Catches pixel/visual failures that DOM-based tools can't see.

Model-agnostic. SimMan is not tied to one model. We've tested primarily with Google Gemini (hosted) and Qwen2.5-VL (local via MLX), but any capable multimodal model that can ground coordinates from an image should work — providers are pluggable per role (grounding / verify / synth). Grounding is the demanding job; pick a model strong at precise spatial localization.

Web-first. Hosted Google Gemini by default (zero local setup) — or run fully local on Apple Silicon with MLX Qwen. A Firefly Events product.

SimMan applies the same Gemini visual-grounding that powers Google's own AI pointer — to autonomous UI testing. (We use the Gemini API directly; not affiliated with Google.)

What works today

  • simman run <scenario.yaml> — authored YAML → real browser (Playwright) → vision grounding → hybrid pass/fail report
  • simman doctor — preflight providers and browser
  • Pluggable vision providers: hosted Gemini (zero-config default) or local MLX/Qwen (offline, Apple Silicon)

Architecture — three layers

  1. engine/ — deterministic runner. Takes a structured scenario + overlay, drives the browser, vision-grounds, verifies, returns a hybrid pass/fail report. No LLM in the core; testable headless. (hardened — 99 tests green)
  2. agent/ — synthesis layer (LLM). Compiles intent into the engine's structured input: given a URL + a natural-language goal, explores the page, decomposes into steps, decides native-vs-vision, declares truth-signals. (roadmap — not yet wired to the CLI; see Roadmap)
  3. gate/ — approval gate. The synthesized test plan is rendered human-readable and must be approved before any browser action runs. Makes autonomous synthesis safe: agent proposes, human disposes. (roadmap — not yet wired to the CLI; see Roadmap)

installer/ — local setup/doctor that makes the optional local stack (Playwright browsers, mlx-vlm, Qwen2.5-VL weights, MLX sidecar) install cleanly. (stub)

Prerequisites

Always:

  • Node ≥ 20.19
  • npx playwright install chromium (the browser SimMan drives)

Hosted (default — recommended for zero setup):

  • GEMINI_API_KEY (or GOOGLE_API_KEY)

Local (optional — private/offline, Apple Silicon only):

  • pip install mlx-vlm  # vision-capable server — NOT mlx-lm (text-only)
  • Qwen2.5-VL-7B-4bit weights (~5GB, pulled to the HF cache on first run)
  • start the sidecar: python -m engine.mlx_sidecar start (serves on :8089)

Quickstart

Zero-install (npx)

export GEMINI_API_KEY=...
npx simman run scenario.yaml --base-url http://localhost:3100
npx simman doctor

Global install

npm install -g simman

export GEMINI_API_KEY=...
simman run scenarios/example.yaml --base-url http://localhost:3100
simman run scenarios/example.yaml --json     # machine-readable RunReport
simman doctor                                 # preflight providers + browser

# Exit codes: 0 pass · 1 fail · 2 error

From source / development

git clone https://github.com/firefly-events/simman.git
cd simman
npm install
npm link                                      # puts `simman` on PATH
npx playwright install chromium
export GEMINI_API_KEY=...
simman run scenarios/example.yaml --base-url http://localhost:3100

A scenario is one authored YAML — id, optional baseUrl, and steps of { action, expected, do, truth? }. See scenarios/example.yaml and docs/overlay-schema.md for the compiled engine format.

npm test            # 99 tests — engine + cli + gate, headless, no API key needed

Roadmap / experimental

The following modules are scaffolded but not yet wired to the CLI:

  • agent/ — goal → plan synthesis: given a URL + natural-language goal, an LLM explores the page, decomposes into steps, decides native-vs-vision, declares truth-signals. See agent/README.md.
  • gate/ — approval gate: synthesized test plan is rendered human-readable and requires explicit approve / edit / reject before any browser action runs. See gate/README.md.

Future flow: bare goal + URL → agent explores → synthesized plan → APPROVAL GATE → engine executes → hybrid report.