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 🙏

© 2025 – Pkg Stats / Ryan Hefner

dhalsim

v1.6.0

Published

Browser automation for llmist agents using Camoufox anti-detect browser

Readme

dhalsim

npm version CI License: MIT

Browser automation gadgets for llmist agents using Camoufox anti-detect browser.

Using with llmist CLI

Use dhalsim gadgets directly from the command line for quick tasks and testing.

Quick Start

# Use the BrowseWeb subagent
bunx @llmist/cli agent "go to apple.com and find iPhone 16 Pro price" -g dhalsim:subagent

# Use all gadgets (for custom agent workflows)
bunx @llmist/cli agent "navigate to example.com" -g dhalsim

# Use readonly preset
bunx @llmist/cli agent "take a screenshot of google.com" -g dhalsim:readonly

# Use latest dev from GitHub (with BrowseWeb subagent)
bunx @llmist/cli agent "search google for llmist" -g git+https://github.com/zbigniewsobiecki/dhalsim.git#dev:subagent

Configuration

Configure BrowseWeb subagent in ~/.llmist/cli.toml:

[subagents.BrowseWeb]
model = "sonnet"              # LLM model for the subagent (default: sonnet)
maxIterations = 20            # Max agent loop iterations (default: 15)
headless = true               # Run browser in headless mode (default: true)
timeoutMs = 600000            # Overall timeout in ms (default: 300000 = 5 min, 0 = disabled)
disableCache = false          # Disable browser cache for lower memory usage (default: false)
navigationTimeoutMs = 60000   # Navigation timeout in ms (default: 60000)

Per-profile configuration

[develop.subagents.BrowseWeb]
headless = false           # Show browser during development

[research.subagents.BrowseWeb]
maxIterations = 30         # More iterations for deep research

Using "inherit" for model

[subagents.BrowseWeb]
model = "inherit"          # Use parent agent's model

Production Deployment

For production environments, consider the following settings:

[production.subagents.BrowseWeb]
headless = true               # Always run headless in production
disableCache = true           # Reduces memory per browser instance (~100-200MB savings)
navigationTimeoutMs = 90000   # 90s for slow networks or heavy sites
maxIterations = 20            # More iterations for reliability

Resource requirements:

  • Each browser instance uses ~300-500MB RAM
  • Running multiple concurrent BrowseWeb calls multiplies memory usage
  • Use disableCache = true for environments with <1GB RAM per browser

Custom Commands in cli.toml

[my-research-command]
gadgets = [
  "dhalsim:subagent",                                                  # from npm
  "git+https://github.com/zbigniewsobiecki/dhalsim.git#dev:subagent",  # from git
]

Using in Projects

Install dhalsim as a dependency and use gadgets programmatically.

Installation

npm install dhalsim
# or
bun add dhalsim

Using Dhalsim Subagent

import { LLMist } from 'llmist';
import { Dhalsim } from 'dhalsim';

const result = await LLMist.createAgent()
  .withModel('sonnet')
  .withGadgets(new Dhalsim())
  .askAndCollect('Go to google.com and search for "playwright"');

// With custom timeout (10 minutes)
const dhalsim = new Dhalsim({ timeoutMs: 600000 });

// Disable timeout for debugging
const debugDhalsim = new Dhalsim({ timeoutMs: 0 });

Using Individual Gadgets

import { LLMist } from 'llmist';
import { createGadgetsByPreset } from 'dhalsim';

const gadgets = createGadgetsByPreset('all');

const agent = LLMist.createAgent()
  .withGadgets(...gadgets)
  .ask('Navigate to example.com and take a screenshot');

for await (const event of agent.run()) {
  // handle events
}

Presets

  • all (default) - All gadgets
  • readonly - Navigate, Screenshot, GetFullPageContent, ListPages
  • minimal - Navigate, Screenshot, GetFullPageContent
  • subagent - BrowseWeb subagent only

Available Gadgets

| Category | Gadgets | |----------|---------| | Page | NewPage, ClosePage, ListPages | | Navigation | Navigate, GoBack, GoForward, Reload | | Content | GetFullPageContent, Screenshot | | Interaction | Click, Type, Fill, FillForm, PressKey, Select, Check, Hover, Scroll, DismissOverlays | | Script | ExecuteScript | | Wait | WaitForElement, Wait | | User Input | RequestUserAssistance |

Subagents

BrowseWeb

Autonomous browser agent that can navigate, interact, and extract information from websites. Runs its own agent loop internally, making it suitable for complex multi-step web tasks.