glidercli β relay at ws://127.0.0.1:19988 β Glider extension β CDP on your tab.
| Playwright MCP | glider | ||
|---|---|---|---|
| access | cold profile. no SSO/MFA/cookies | Glider extension on the tab you already logged into |
|
| tokens | a11y tree on every navigate/click/type (quote) | glider snapshot when asked. 200-node cap (bsnapshot.js) |
| 1 snapshot | 9 calls | 200K window (quote) | 1M window (quote) | |
|---|---|---|---|---|
| Playwright MCP | ~13.8K tok | 124.3K tok (quote) | 62% | 12% |
| glider (cap) | ~4.0K tok (16,142 chars/4) | ~36.3K tok | 18% | 4% |
- large-page MCP snapshots: 50KB-540KB; 2-3 visits overflow (quote)
- 2 of 9 Playwright snapshots in that signup flow were byte-identical (quote)
| Step | What | |
|---|---|---|
| 1 | extension in the live profile | |
| 2 | CLI -> relay ws://127.0.0.1:19988. glider eval, glider snapshot, glider loop |
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.
Not supported today: Firefox/Safari/WebKit/Gecko, DuckDuckGo, browsers without Chrome Web Store extension path.
CLI or the file. One shape.
glider config browser chromewrites { "use": "chrome" } to $GLIDER/config/browser.json. Chrome is the default. glider config browser lists the same commands.
macOS launch. Linux/Windows: planned.
name: hn-front
steps:
goto: "https://news.ycombinator.com"
wait: 2
eval: "document.title"
screenshot: "/tmp/hn.png"glider config browser chrome
glider install
glider connect
glider goto "https://news.ycombinator.com"
glider tabs
glider loop hn-scrape.yaml| 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 |
~/.glider |
home: config, cache, warch |
Copy config/domains.template.json into ~/.glider/config/domains.json to seed the host index.
glider tabs is the visible Helium rail, not the debugger map. TUI (0.4.28): [n] is the handle. One field per line under each tab (url:, status:, tabId:, active:, sessionId:, targetId:, β¦). Empty identity values print -. glider tabs writes $GLIDER/state/tab-map.json. Chain: --current --incognito --window --index --handle --tab --target --session --iframe --context then pin (or use-session <id>). --json tabs is the full catalog.
- current window
chrome.tabs(live title/url, includingchrome://newtab) - other windows
- attached: CDP session not in
chrome.tabs - stale:
tabIdgone fromchrome.tabs; dropped from the relay map
Incognito is Chromium windows.Window.incognito and tabs.Tab.incognito only. TUI: window N [current] [incognito]. Enable Allow in Incognito on the extension. CDP browserContextId is not that flag.
glider targets stays the raw CDP session list.
Old relay without GET /catalog is recycled by glider start, glider heal, and the daemon (SIGTERM the child; supervisor respawns current bserve.js). listTabs fail reloads the extension and attach-all.
CLI 0.4.18 expects an extension with listTabs plus incognito on tabs/windows (github vdutts7/glider 1.0.10, or Chrome Web Store after that upload). Store 1.0.9 lacks listTabs; windows stay empty and live CDP rows sit under attached.
| problem | fix | stability | why |
|---|---|---|---|
| extension not connected | install/enable Glider on Chrome Web Store in selected browser profile; click Glider icon, then run glider connect |
per browser launch | relay waits on extension WS |
| extension socket up but worker dead | click Glider icon or glider reload |
MV3 worker | status refuses healthy until pong |
daemon / glider start refuses after a killed supervisor |
run glider start or glider install again (0.4.15+ reaps dead claim tombstones when nothing listens) |
session-stable | crash/SIGKILL left daemon-*.claim without a live owner |
glider tabs dumps old CDP pages |
glider start or glider heal (0.4.17 recycles a relay that does not advertise /catalog) |
session | node does not hot-load bserve.js |
glider tabs has empty windows |
load Glider 1.0.10 from vdutts7/glider or CWS after upload (needs listTabs) |
until CWS 1.0.10 | Chrome Web Store 1.0.9 lacks that RPC |
incognito window has no (incognito) tag |
Allow in Incognito on the extension, then reload; CLI 0.4.18 | per profile | Chromium hides those windows until that toggle |
| custom relay port has no extension | stay on 19988 with Chrome Web Store build |
install-stable | published extension connects to ws://localhost:19988/extension |
| 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 |
file-stable | per-host capture hints |
| Command | Description |
|---|---|
glider install |
background relay supervisor |
glider uninstall |
remove supervisor |
glider config browser chrome |
set browser |
glider connect |
attach relay to browser |
glider status |
server + extension + tabs |
glider doctor |
relay + SW + targets |
glider tabs |
chrome.tabs by window (incognito tag), then attached, then stale |
glider heal |
recycle stale relay, wake SW, reattach |
glider reload |
pin extension |
glider goto |
navigate |
glider eval |
run JS |
glider click |
click |
glider type |
type |
glider screenshot |
PNG |
glider frozen |
detect frozen tab |
glider thaw |
unfreeze tab |
glider explore |
crawl + HAR |
glider resolve |
host warch |
glider run |
YAML task |
glider loop |
loop until marker |
node --check bin/glider.js && node --check lib/bserve.js
node --test tests/*.test.js
node tests/live-browser.smoke.js # isolated live-browser fixtureLive smoke creates + closes its own browser window.
Incomplete event-stream features fail closed: wait --network-idle, console streaming, response fulfillment. No success-shaped fallback.
| status | item |
|---|---|
| done | CDP relay, YAML tasks, loop, daemon, multi-tab, resolve, glider tabs catalog |
| planned | Linux and Windows browser launch |
| headless cloud mode | |
| task chaining |



