How it behaves
dsh-browser controls the Chrome tab selected through its extension. browser_snapshot returns the page title, URL, main text, numbered controls, and masked form fields; delta: true returns only changes. browser_get_text reads a page region, including lazy-loaded or partial text. browser_click, browser_type, and browser_press operate controls and keyboard input. For browser_type, replace clears the field first. browser_scroll accepts viewport directions including up, down, top, and bottom. Navigation is provided by browser_navigate, browser_back, browser_forward, and browser_reload; browser_wait waits for page loading and rendering to settle.
Configuration and runtime
For local use, the extension discovers DSH through /ext/bridge-config. Loopback connections do not require a bridge token. DSH registers the bridge bundle in its local web profile and loads that profile at startup, so an already-running instance must be restarted after installation or an update. The default local address is http://127.0.0.1:3080. Remote deployment with --host 0.0.0.0 requires an address and bridge token.
Commands and paths
Start a managed checkout with pnpm start from ~/.dsh/dsh-browser, or start a cloned checkout with pnpm start from its repository root. The public release can be started with npx @deepseek-ai/dsh web. Both use port 3080 by default; --port <port> selects another port. The managed source is kept at ~/.dsh/dsh-browser; the built extension is copied to ~/.dsh/browser-extension.
Requirements and limits
The documented prerequisites are Node.js ^22.19 or >=24, Corepack/pnpm, and Google Chrome. The extension operates on normal http:// and https:// pages. Chrome-internal and protected pages, including chrome:// and the Chrome Web Store, cannot be read or operated. Password and payment-card values are rendered as •••• and do not enter the model-facing page data.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub