dhalsim

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
npx @llmist/cli agent "go to apple.com and find iPhone 16 Pro price" -g dhalsim:subagent
npx @llmist/cli agent "navigate to example.com" -g dhalsim
npx @llmist/cli agent "take a screenshot of google.com" -g dhalsim:readonly
npx @llmist/cli agent "search google for llmist" -g git+https://github.com/zbigniewsobiecki/dhalsim.git
Configuration
Configure BrowseWeb subagent in ~/.llmist/cli.toml:
[subagents.BrowseWeb]
model = "sonnet"
maxIterations = 20
headless = true
timeoutMs = 600000
disableCache = false
navigationTimeoutMs = 60000
Per-profile configuration
[develop.subagents.BrowseWeb]
headless = false
[research.subagents.BrowseWeb]
maxIterations = 30
Using "inherit" for model
[subagents.BrowseWeb]
model = "inherit"
Production Deployment
For production environments, consider the following settings:
[production.subagents.BrowseWeb]
headless = true
disableCache = true
navigationTimeoutMs = 90000
maxIterations = 20
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",
"git+https://github.com/zbigniewsobiecki/dhalsim.git#dev:subagent",
]
Using in Projects
Install dhalsim as a dependency and use gadgets programmatically.
Installation
npm install 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"');
const dhalsim = new Dhalsim({ timeoutMs: 600000 });
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()) {
}
Presets
all (default) - All gadgets
readonly - Navigate, Screenshot, GetFullPageContent, ListPages
minimal - Navigate, Screenshot, GetFullPageContent
subagent - BrowseWeb subagent only
Available 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.