npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-anti-detect-browser

v0.2.1

Published

Interactive browser tools for dsh (navigate/snapshot/click/fill/eval/screenshot/close). Dual backend: Camoufox anti-detect Firefox or local full Chromium via Playwright. Ref-based element snapshots; architecture mirrors the Hermes Agent browser tool.

Readme

dsh-anti-detect-browser

Interactive browser tools for dsh (DeepSeek Harness) — dual-backend, architecture mirrored from the Hermes Agent browser tool. Gives dsh's agent real page interaction: navigate, click, fill, evaluate JS, screenshot — not just static fetch.

Tools

| Tool | What it does | |------|--------------| | browser_navigate | Open a URL; returns title, page text and a numbered list of interactive elements | | browser_snapshot | Re-list the current page (refs go stale after DOM changes) | | browser_click | Click an element by ref, returns a fresh snapshot | | browser_fill | Type text into an input/textarea ref (or select an option) | | browser_eval | Evaluate JS in the page context (Chromium backend only) | | browser_screenshot | Save a viewport PNG | | browser_close | Close the session; next call starts fresh |

Both backends return the same shape: {url, title, text, elements} where each element is {ref, tag, kind, text, href}.

Backends

Selection follows the same semantics as Hermes's is_camofox_mode:

  • CAMOFOX_URL unset (default) → local full Chromium via Playwright. Executable discovery, in order:

    1. DSH_BROWSER_EXECUTABLE_PATH (also honors AGENT_BROWSER_EXECUTABLE_PATH)
    2. system Chrome/Chromium on PATH (google-chrome, chromium, chromium-browser, chrome)
    3. Playwright cache chromium-* builds (newest first, both chrome-linux64/ and chrome-linux/ layouts)

    chromium_headless_shell is never used — no extension hooks, broken fonts/codecs, trivially fingerprinted. If no full Chromium exists the tool throws with install guidance instead of falling back.

  • CAMOFOX_URL set → Camoufox (anti-detect Firefox) via the camofox-browser REST API. Tab 404 (server GC) auto-recreates, same as Hermes. browser_eval returns an explicit unsupported error in this mode (the REST API has no JS eval).

Install

dsh plugin --profile web add dsh-anti-detect-browser -w
systemctl restart dsh-web   # however you run dsh

To enable the Camoufox backend, start a camofox-browser server (npm start in its checkout, or docker run -p 9377:9377 -e CAMOFOX_PORT=9377 jo-inc/camofox-browser) and inject the URL into dsh:

systemctl edit dsh-web      # [Service] → Environment=CAMOFOX_URL=http://localhost:9377
systemctl restart dsh-web

Environment variables

| Variable | Effect | |----------|--------| | CAMOFOX_URL | Switch to the Camoufox backend (server base URL) | | CAMOFOX_USER_ID / CAMOFOX_SESSION_KEY | Share a browser identity with an external integration | | DSH_BROWSER_EXECUTABLE_PATH | Force a specific Chromium binary (Chromium backend) | | DSH_BROWSER_SHOT_DIR | Screenshot output directory (default <home>/workspace/dsh-browser-shots) |

Development

The published tarball contains only the runtime (index.js, cordis.patch.yml + manifest). The smoke tests — Chromium backend against real pages, Camoufox backend against a mock REST server (including the tab-GC 404-recreate path) — live in the plugin's source checkout, not in this package. At minimum run node --check index.js after any edit, then restart dsh.

How it differs from dsh-browser

The npm package dsh-browser (by ben7am1n) covers similar ground with a CSS-selector-driven toolset (fetch HTML → guess a selector → click). This plugin ports the Hermes Agent approach instead:

  • Ref-based snapshots — browser_navigate/browser_snapshot list every visible interactive element with a stable ref; the agent clicks by ref in one call instead of fetching HTML and guessing selectors across two.
  • Camoufox anti-detect backend — set CAMOFOX_URL and the same tools run on an anti-fingerprinting Firefox (camofox-browser REST API) with server-GC-safe tab handling; nothing like it exists in dsh-browser.
  • Deterministic binary discovery — env override → system Chrome → Playwright cache; full chromium-* builds only, chromium_headless_shell never used.

License

MIT