| headless CDP | extension relay (glider) | |
|---|---|---|
| logged-in tab / SSO | β cold profile | β attach to open tab |
| corp / MFA sessions | β re-auth wall | β reuse browser cookies |
| loop until done | manual glue | β
glider loop + markers |
glidercli β relay at ws://127.0.0.1:19988 β Glider extension β CDP on your tab.
| failure mode | symptom |
|---|---|
| β cold profile launch | SSO/MFA breaks on internal sites; no logged-in tab to drive |
| β raw CDP without bridge | extension must relay debugger traffic from real Chromium profile |
| β cookie-only terminal fetch | cross-origin API hosts often 401 without in-tab bearer |
| β one-shot scripts only | no first-class loop with iteration cap, timeout, completion marker |
npm i -g glidercli
glider install
glider connect| Step | Action |
|---|---|
| CLI | npm i -g glidercli |
| Extension | Glider on Chrome Web Store in the profile you automate |
| Daemon | glider install |
| Session | glider connect (once per browser launch) |
Node 18+. Chromium-based browser with the extension enabled (see Browsers).
Extension + relay model uses Chromium + Glider extension from Chrome Web Store in the same profile as glider connect.
| Browser | Config | |
|---|---|---|
| Google Chrome | default for glider connect |
|
| Arc | config/browser.json.example |
|
| Microsoft Edge | registry key edge |
|
| Brave | registry key brave |
|
| Vivaldi | registry key vivaldi |
Not supported today: Firefox/Safari/WebKit/Gecko, DuckDuckGo, browsers without Chrome Web Store extension path.
Priority: ~/.glider/config/browser.json β default Google Chrome.
Registry key (recommended):
{ "use": "arc" }Registry file: ~/.glider/config/browsers-registry.json
glider use arc
glider browserExplicit name/path:
{
"name": "Arc",
"path": "/Applications/Arc.app",
"processName": "Arc"
}| Command | Effect |
|---|---|
glider use arc |
write { "use": "arc" } to browser.json |
glider use |
list registry keys |
glider browser |
show resolved name, path, process |
macOS: open -a / AppleScript. Linux/Windows: partial, on roadmap.
name: hn-front
steps:
goto: "https://news.ycombinator.com"
wait: 2
eval: "document.title"
screenshot: "/tmp/hn.png"glider connect
glider status
glider goto "https://news.ycombinator.com"
glider eval "document.title"
glider run `hn-scrape.yaml`
glider loop `hn-scrape.yaml` -n 50 -m hn_scrape_done# per-host capture hints (optional)
glider resolve https://news.ycombinator.com --json| Output | Path |
|---|---|
| daemon log | ~/.glider/daemon.log |
| domain index | ~/.glider/config/domains.json |
| per-host intel | ~/.glider/warch/HOST/glider.json |
| explore cache | ~/.glider/bexplore/HOST/ |
| Env | Default | Role |
|---|---|---|
GLIDER_HOME |
~/.glider |
config, cache, warch tree |
AGREGISTRY |
unset | optional registry root β warch at $AGREGISTRY/warch/HOST/ |
Copy config/domains.template.json into ~/.glider/config/domains.json to seed the host index.
| problem | fix | stability | why |
|---|---|---|---|
| extension not connected | click Glider icon in toolbar β glider connect |
per Chrome launch | relay waits on extension WS |
| wrong tab targeted | glider targets β glider use-session session-6 |
session-stable | multi-tab needs explicit session |
| explore HAR empty bodies | replay in-tab with auth hook on XHR/fetch | site-specific | some SPAs never expose bearer in storage |
resolve misses host |
add ~/.glider/warch/HOST/glider.json or set AGREGISTRY |
file-stable | optional per-host capture hints |
| Command | Description |
|---|---|
glider install / uninstall |
daemon at login |
glider connect |
attach relay to browser |
glider status |
server, extension, tabs |
glider goto / eval / click / type |
page ops |
glider screenshot |
PNG capture |
glider explore |
crawl + HAR |
glider resolve |
host β local warch intel (--json) |
glider run / loop |
YAML task / Ralph loop |
Full surface: glider --help
| status | item |
|---|---|
| done | CDP relay, YAML tasks, loop, daemon, multi-tab, resolve |
| planned | Linux and Windows browser launch |
| headless cloud mode | |
| task chaining |





