dsh-browser
DSH self-contained browser runtime: bundles Playwright, exposes a browser service and 9 interactive tools
Install
dsh plugin --profile web add @anweat/dsh-browser dsh-browser
A real browser inside DSH: Playwright ships with the plugin, and one
inject: ['browser']line hands any plugin a working browser backend.
What problem it solves
Giving a DSH agent a real browser usually means installing Playwright globally — environments, versions, and the browser kernel all need manual care. This plugin bundles Playwright (chromium) and OpenCLI as its own npm dependencies (plugin-local first, global reuse as fallback) and exposes a browser service plus 9 interactive browser tools, collapsing that whole pipeline into an injectable dependency.
The chromium kernel always reuses the shared cache (~400MB %LOCALAPPDATA%\ms-playwright) — it is never bundled into the plugin or re-downloaded, and browser_install fills it in one step if missing. Point storageStatePath at a login-state JSON and you can scrape authenticated pages under your logged-in identity.
Key features
- 9 browser tools:
browser_open,browser_click(CSS selector),browser_type,browser_scroll(triggers lazy loading),browser_read,browser_screenshot,browser_close,browser_status, andbrowser_install - Injectable
browserservice: any plugin can consume it viainject: ['browser']— no shared type package needed - Chromium kernel reuse: shared cache, no duplicate downloads;
browser_installtops it up when missing - Login-state reuse:
storageStatePathpoints to a Playwright storageState JSON to reuse logged-in sessions - Configurable:
channel(chromium / system Edge),headless,opencliEnabled,autoInstall, and more via cordis.yml - A base for composite plugins:
dsh-web-search-proinjectsbrowserto drive its playwright / opencli backends, dropping the global-CLI dependency
Quick start
Install, then restart dsh web (the web profile has HMR off):
dsh plugin --profile web add @anweat/dsh-browser
dsh --profile web
Then just ask the agent to open a page, click, or screenshot. If browser_status reports a missing kernel, run browser_install once. For authenticated pages, generate a login state with npx playwright codegen --save-storage=storageState.json and set the result path as storageStatePath.
Who it is for
- Users who want their agent to browse, scrape, and automate web pages
- Authors of composite plugins (e.g. dsh-web-search-pro) that need a browser backend
- Anyone who would rather have a self-contained plugin than a hand-maintained global Playwright setup
Compiled from the project README · All rights belong to the original author
Report issue / Request removal