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

visor-ai

v0.2.13

Published

Verified mobile app interaction, semantic navigation, and evidence capture for AI coding agents

Readme

Visor

npm version CI MIT licensed

Visor gives AI coding agents verified control over running iOS and Android apps.

Instead of inferring UI behavior from source code, an agent can use Visor to operate the live app, remember reliable navigation paths, assert what is visible, and return screenshots, UI source, and structured run artifacts for review.

Why Visor

  • Verify rendered behavior on a real device, simulator, or emulator.
  • Reuse compact semantic navigation memory instead of rediscovering every screen.
  • Execute known multi-step routes through one warm Appium session.
  • Capture screenshots and UI source only when the task needs evidence.
  • Turn repeatable scenarios into JSON, JUnit, timeline, and HTML reports.
  • Measure whether a scenario stays deterministic across repeated runs.

Install

Visor requires Node.js 20.19+, 22.12+, or 24+, and npm 10+.

npm install --save-dev visor-ai@latest

Install the Appium driver for your target platform:

npx appium driver install uiautomator2
# macOS only, for iOS:
npx appium driver install xcuitest

For agent-driven setup, install the repository skill as well:

npx --yes skills@latest add AleksKapera/visor \
  --skill visor-discovery --copy --yes

Alternatively, paste the agent setup prompt into Codex or Claude Code. The agent will install the appropriate Appium driver, connect to your running app, add a device-specialist Navigator agent, and build the first semantic app map.

Quick CLI tour

Boot one mobile target and install your app before starting Visor. Pass --device when more than one target is running.

npx visor start
npx visor discover --device <device-id> --app-id <bundle-or-package-id> --attach
npx visor screenshot --device <device-id> --app-id <bundle-or-package-id> --attach

Runtime commands return structured JSON. Visor keeps the Appium session warm between commands and stores private map and daemon state under .visor/; keep that directory out of version control.

For repeatable verification, save a scenario as visor-smoke.json:

{
  "meta": { "name": "visor-smoke", "version": "1", "tags": ["smoke"] },
  "config": { "timeoutMs": 15000, "seed": 42, "artifactsDir": "./artifacts" },
  "steps": [
    { "id": "capture", "command": "screenshot", "args": { "label": "app-opened" } }
  ],
  "assertions": [],
  "output": { "report": ["summary", "json", "junit", "html"] }
}

Then validate and run it against the app you attached above:

npx visor validate visor-smoke.json
npx visor run visor-smoke.json --device <device-id> --app-id <bundle-or-package-id> --attach --output artifacts/smoke
npx visor stop

A run can produce summary.txt, summary.json, junit.xml, timeline.log, report.html, screenshots, and UI source dumps.

How it works

  1. visor start launches Appium and a local daemon that owns warm driver sessions.
  2. visor discover observes the current screen and updates compact semantic memory.
  3. Direct actions or deterministic route plans operate the live app.
  4. Assertions evaluate observed UI state rather than source-code intent.
  5. Reports preserve the result for humans, CI, and other agents.

Scope

Visor currently supports Android through UiAutomator2 and iOS through XCUITest. It works with installed apps on real devices, emulators, and simulators.

Web and desktop apps, built-in device provisioning, multi-app orchestration, and assertion types beyond visibility checks are not supported yet.

Documentation

Read the agent setup guide, browse the complete documentation, or use the CLI reference.

Development

npm install
npm run verify
npm pack --dry-run

npm run verify builds the CLI, runs the Vitest suite, and executes the deterministic local E2E harness. See CONTRIBUTING.md before opening a pull request and SECURITY.md when reporting a vulnerability.

Visor is available under the MIT License.