glidercli
v0.3.8
Published
Browser automation CLI. Control Chrome from terminal via CDP, run YAML task files, autonomous loops until completion.
Downloads
352
Maintainers
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
