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

glidercli

v0.3.8

Published

Browser automation CLI. Control Chrome from terminal via CDP, run YAML task files, autonomous loops until completion.

Downloads

352

Readme

 

About

| | | |---|---| | What | Control a Chromium-based browser from the terminal via CDP, run YAML tasks, and loop until done (Ralph Wiggum pattern) | | CDP | Chrome DevTools Protocol via relay + browser extension | | Tasks | Declarative steps: goto, click, explore, eval, screenshot | | Loops | Run until completion marker or max iterations / timeout | | Safety | Max iterations, timeout, backoff |


Install

| Step | Action | |------|--------| | 1. CLI | npm i -g glidercli | | 2. Extension | Install Glider from Chrome Web Store in the same browser/profile you will automate (required, bridges relay ↔ tab) | | 3. Daemon | glider install then glider connect | | 4. Browser (required setup) | Configure supported browser/profile + extension in the Browsers section below. |

Requirements

| Requirement | Minimum | |-------------|---------| | Node | 18+ | | Browser | Chromium-based (Chrome, Arc, Edge, Brave, Opera, Vivaldi) with the Glider extension installed/enabled in that browser profile. No Firefox/Safari/DuckDuckGo |


Browsers

| | | |---|---| | How it works | Chrome extension → WebSocket relay → CDP. Browser must support that extension (Chromium-based). |

Browser support

Extension: Install Glider from the Chrome Web Store in each browser/profile you plan to automate

| | Browser | Config | |:---:|--------|--------| | | Google Chrome | Default for glider connect| | | Arc | browser.json ({ "use": "arc" }) | | | Microsoft Edge | n/a | | | Brave | n/a | | | Opera | n/a | | | Vivaldi | n/a | | | Other Chromium | Must support installing extensions from the Chrome Web Store. |

Future

  • not supported today
  • Glider needs a Chromium-based browser that can install the extension from the Chrome Web Store
  • no timeline implied- listed for clarity

| | Browser | Notes | |:---:|--------|--------| | | Firefox | Gecko (Firefox engine). Not Chromium, Glider uses a Chrome Web Store extension + CDP | | | Firefox Focus | Gecko- same constraints as Firefox | | | Firefox Klar | Gecko (Focus branding in some regions)- same constraints as Firefox | | | LibreWolf | Gecko- same constraints as Firefox | | | Waterfox | Gecko- same constraints as Firefox | | | Zen | Gecko- same constraints as Firefox | | | Floorp | Gecko- same constraints as Firefox | | | Tor Browser | Gecko- same constraints as Firefox | | | Mullvad Browser | Gecko- same constraints as Firefox | | | IceCat | Gecko- same constraints as Firefox | | | Safari | WebKit (Apple desktop). Not Chromium | | | Orion | WebKit-based desktop browser. Not Chromium | | | ChatGPT Atlas | AI-first browser, not in Glider’s supported Chromium + CWS model today | | | Perplexity Comet | AI-first browser, not in Glider’s supported Chromium + CWS model today | | | Bromite | Chromium-derived, no practical Chrome Web Store path for Glider | | | Chromite | Chromium-derived, no practical Chrome Web Store path for Glider | | | Vanadium | Chromium-derived (GrapheneOS), no practical Chrome Web Store path for Glider | | | DuckDuckGo | No practical Chrome Web Store extension install path for Glider |

Configuring the browser

Priority (highest first): config file -> default Google Chrome

Config file: $HOME/.glider/config/browser.json

Use a registry key or explicit name/path in the file

Option A- Registry key (recommended):

Set browser by key from the browsers registry. Run glider use <key> to write this.

{
  "use": "arc"
}

Registry is loaded from (first found): $HOME/.cursor/registry/browsers.json, $HOME/.glider/config/browsers-registry.json. Keys are predefined (e.g. arc, brave, chrome, edge, opera, vivaldi, chromium). Edit the registry to add or change paths

Option B- Explicit name/path:

| Field | Required | Description | |-------|:--------:|-------------| | name | Yes* | App name for open -a / AppleScript. Must match system (e.g. Arc, Google Chrome). | | path | No | If set, use open "<path>" instead of open -a "<name>". For non-default install location. | | processName | No | For pgrep -x. Defaults to name. |

* Omit name when using use (registry key).

Example:

{
  "name": "Arc",
  "path": "/Applications/Arc.app",
  "processName": "Arc"
}

By browser:

| Browser | name | path (optional) | processName (optional) | |---------|--------|-------------------|---------------------------| | Arc | Arc | /Applications/Arc.app | Arc | | Edge | Microsoft Edge | n/a | Microsoft Edge | | Chrome (custom) | Google Chrome | /Users/me/Applications/Google Chrome.app | Google Chrome |

Check app name in Finder/Spotlight, process name: ps aux | grep -i <name>

Browser registry (keymap)

A single registry file can define all Chromium browsers, Glider picks one by key

Registry location (first found):

  • $HOME/.cursor/registry/browsers.json
  • $HOME/.glider/config/browsers-registry.json

Registry format:

{
  "version": "1.0",
  "registry": {
    "arc": { "name": "Arc", "path": "/Applications/Arc.app", "processName": "Arc" },
    "brave": { "name": "Brave Browser", "path": "/Applications/Brave Browser.app", "processName": "Brave Browser" },
    "chrome": { "name": "Google Chrome", "path": "/Applications/Google Chrome.app", "processName": "Google Chrome" },
    "edge": { "name": "Microsoft Edge", "path": "/Applications/Microsoft Edge.app", "processName": "Microsoft Edge" }
  }
}

Commands:

| Command | Effect | |---------|--------| | glider use arc | Set $HOME/.glider/config/browser.json to { "use": "arc" } (resolved from registry). | | glider use brave | Switch to Brave. | | glider use | Show current key and list of registry keys. | | glider browser | Show resolved name, path, processName (and use key if set). |

Add or edit entries in the registry to match your machine (e.g. custom install paths). Keys are stable, point Glider at one by name.

Platform

| Platform | Behavior | |----------|----------| | macOS | open -a "<name>" or open "<path>", AppleScript for tab/window. name = exact app name | | Linux / Windows | Not fully implemented. Future: path may be executable. |

Browser summary

| Topic | Detail | |-------|--------| | Supported | Chromium-based + Chrome Web Store extension (see table above). | | Not supported | See Future in this README. | | Configure | $HOME/.glider/config/browser.json (use key or name/path). Registry: $HOME/.cursor/registry/browsers.json or $HOME/.glider/config/browsers-registry.json | | Switch | glider use <key> (e.g. glider use arc, glider use brave). | | Path | Optional, use when app is not in default location |


Usage

glider connect
glider status
glider goto "https://reddit.com"
glider eval "document.title"
glider run task.yaml
glider loop task.yaml -n 50

| Daemon | Logs | |--------|------| | glider install / glider uninstall | ~/.glider/daemon.log |


Task files

name: "Reddit"
steps:
 - goto: "https://reddit.com"
 - wait: 2
 - eval: "document.title"
 - screenshot: "/tmp/out.png"

Commands

| Command | Description | |---------|-------------| | glider install | Install daemon (relay at login) | | glider uninstall | Remove daemon | | glider connect | Connect to browser | | glider status | Server / extension / tabs | | glider browser | Show browser config (name, path) | | glider goto <url> | Navigate | | glider eval <js> | Run JS in page | | glider click <sel> | Click element | | glider type <sel> <text> | Type into input | | glider screenshot [path] | Capture page | | glider run <file> | Run YAML task | | glider loop <file> [-n N] | Loop until done or limit |

Full list: glider --help


Docs

| Doc | Contents | |-----|----------| | This README | Install, usage, commands, full browser support/config | | config/browser.json.example | Example browser config |


Roadmap

  • [x] CDP relay + extension, YAML tasks, loop, daemon, multi-tab
  • [ ] Linux / Windows
  • [ ] headless (cloud)
  • [ ] task chaining
  • [ ] crawling templates

Contact