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

pageai

v1.0.2

Published

System-wide AI overlay. Press arrow combos anywhere on your OS to ask Gemini about what's on your screen. Hidden from screen sharing.

Downloads

297

Readme

pageai

System-wide AI overlay. Press the same arrow-key combos you'd use in a Chrome extension — but anywhere on your OS (browser, IDE, PDF viewer, terminal, games, anything). The overlay is hidden from screen sharing and screen recording by default, so Zoom / Meet / Teams / Loom / OBS / QuickTime can't see it.

Powered by Google Gemini. The package ships with a small bundled key pool, so on first install you don't even need to paste your own key — pick one with pageai rotate if "yours" gets rate-limited, or use pageai key <YOUR_KEY> to bring your own.

Install & run

npx pageai start

That's it. A tray icon appears, the system-wide hotkey listener attaches, and the overlay is ready.

To stop it:

npx pageai stop

Hotkeys (work everywhere on your OS)

| Combo | Action | |---|---| | Left + Right | Capture full-screen screenshot | | Up + Right | Ask Gemini about the current screen | | Up + Down | Toggle the overlay | | Up + Left | Toggle follow-cursor mode | | Alt + A | Full scan of foreground app + ask Gemini | | Alt (alone) | Hide the overlay |

These are the same combos as the legacy Chrome extension, just lifted to OS level via a low-level keyboard hook (uiohook-napi).

Hidden from screen sharing

By default the overlay window has OS-level "content protection" turned on:

  • macOS: NSWindowSharingNone — invisible to ScreenCaptureKit / CGWindowListCreateImage / Zoom / Meet / Teams / Loom / OBS / QuickTime.
  • Windows: WDA_EXCLUDEFROMCAPTURE (Win10 2004+) — hidden from Windows Graphics Capture and Desktop Duplication APIs.
  • Linux/X11: not supported by the OS — the overlay will appear in screen share. (Wayland support is on the roadmap.)

To toggle:

pageai stealth on    # default
pageai stealth off

Or click the tray icon → Stealth (hide from screen share) checkbox.

A physical phone camera pointed at your screen will obviously still see it. No software can defend against that.

Commands

pageai start            # launch the tray daemon (default command)
pageai stop             # kill the daemon
pageai status           # show daemon, stealth, and key state
pageai stealth on|off   # toggle hide-from-screen-share
pageai rotate           # pick the next bundled Gemini key
pageai key <YOUR_KEY>   # use your own Gemini key (overrides the pool)
pageai clear-key        # forget your override and fall back to the pool

Permissions

  • macOS: First run pops the OS Accessibility prompt (System Settings → Privacy & Security → Accessibility). Enable PageAI, then pageai stop and pageai start again. The tray menu has a quick-link.
  • Windows: No prompt; works out of the box.
  • Linux: Requires X11 (Wayland is unsupported by the underlying keyboard hook).

How the bundled key pool works

shared/keys.json ships inside the npm tarball with N pre-provisioned Gemini API keys. On first run, your install picks a deterministic slot via hash(machineId) % keys.length — same machine always gets the same slot unless you run pageai rotate.

Same Google account / same project: all keys created under one account usually share the same Gemini free-tier quota. Rotating keys does not give you more requests. To avoid 429 / quota errors, enable billing in Google AI Studio, use keys from different Cloud projects (each with its own billing), or run pageai key <YOUR_KEY> on a paid-capable key.

Warning for maintainers: keys in shared/keys.json are publicly downloadable as part of the tarball. Use throwaway / budget-capped keys only. For production users, pageai key <YOUR_KEY> is always the safer path.

After npx pageai start, you can close the terminal — the app stays in the tray until pageai stop or Quit from the menu.

Project layout

pageai/
 ├── cli/           # `pageai` CLI entry (start/stop/status/rotate/stealth/key)
 ├── desktop/src/   # Electron daemon, hotkeys, capture, overlay window
 ├── shared/        # types, storage (Conf), gemini client, keyPool
 ├── extension/     # legacy Chrome extension (no longer the primary path)
 ├── docs/          # release notes
 ├── package.json
 └── README.md

Development

npm install
npm run build
node dist/cli/index.js start   # foreground-friendly: append --foreground

Build & publish

# 1. Populate shared/keys.json with real Gemini keys.
# 2. Build:
npm run build
# 3. Sanity check:
npm pack --dry-run
# 4. Publish:
npm publish

Caveats

  • The bundled key pool is a convenience, not a security boundary. Anyone can download the tarball and read the keys. Google may auto-revoke leaked keys.
  • We do not run OCR; Gemini reads the screenshot directly. If the model can't see fine-grained text, drop in your own OCR (Tesseract) before posting.
  • The overlay is click-through (setIgnoreMouseEvents); selection works via copying the cached answer (pageai status will show what's stored).