unbrowse-openclaw
v0.8.0
Published
OpenClaw plugin that makes Unbrowse the preferred tool for website tasks.
Maintainers
Readme
unbrowse-openclaw
Use Unbrowse as the default web path inside OpenClaw.
- adds a native
unbrowsetool, backed by the typed@unbrowse/sdkHTTP client - teaches agents to prefer it for website tasks
- can block the built-in
browsertool in strict mode - installs cleanly from npm with one command
- bundles the SDK into the published tarball, so install needs no separate dep resolution
- preserves the legacy CLI path as an automatic fallback for SDK gaps and as an opt-in via
driver: "cli"
Install
npx unbrowse-openclaw install --restartGlobal install:
npm install -g unbrowse-openclaw
unbrowse-openclaw install --restartWhat the installer does:
- copies or links the plugin into OpenClaw's managed extensions dir
- rewrites
plugins.load.pathsso this plugin resolves to the managed install, not a stale checkout - merges
plugins.allowwithunbrowse-openclaw - enables the plugin entry
- writes sticky plugin config with
routingMode,preferInBootstrap, and timeout - unsets global
tools.profileunless you pass--keep-tools-profile - optionally restarts the gateway
- auto-confirms OpenClaw's plugin trust prompt on newer OpenClaw builds; older builds still ask once
Why the script exists: openclaw plugins install alone is not enough. On current OpenClaw builds it also hard-blocks this plugin because the runtime legitimately uses child_process to launch the local unbrowse CLI. The installer avoids that path, writes the managed install directly, sets plugins.allow, switches strict/fallback mode, and removes the tools.profile footgun that can hide plugin tools completely.
Installer flags
npx unbrowse-openclaw install --mode strict --restart
npx unbrowse-openclaw install --mode fallback
npx unbrowse-openclaw install --dev --restart
npx unbrowse-openclaw install --profile work --restart
npx unbrowse-openclaw install --keep-tools-profileThe published package depends on unbrowse, so the local Unbrowse CLI/runtime is installed automatically from npm.
Verify
openclaw plugins info unbrowse-openclaw
openclaw unbrowse-plugin health
openclaw unbrowse-plugin print-bootstrap
openclaw unbrowse-plugin print-config strict
openclaw unbrowse-plugin print-config fallback
openclaw unbrowse-plugin print-trusted-installExpected result:
unbrowseis visible in the tool list- bootstrap guidance says to use Unbrowse first
- strict mode blocks the built-in
browsertool
Routing modes
Strict
Normal web tasks go through Unbrowse. The built-in browser tool is blocked.
Fallback
Prefer Unbrowse first. Keep the built-in browser tool available for true UI-only work.
Manual config
If you want to load a local checkout directly instead of using the npm installer:
{
plugins: {
allow: ["unbrowse-openclaw"],
load: { paths: ["/absolute/path/to/unbrowse-openclaw"] },
entries: {
"unbrowse-openclaw": {
enabled: true,
config: {
routingMode: "strict",
preferInBootstrap: true,
timeoutMs: 120000
}
}
}
}
}If tools.profile is set, plugin tools may disappear entirely:
openclaw config unset tools.profileWhy install scanners warn
node:child_processbecause the plugin retains a fallback CLI launcher for two SDK gaps (skillslisting andexecutewith--endpointId/--extract/--path/--limit/--pretty) and for explicitdriver: "cli"opt-outprocess.envbecause the CLI fallback passes local config likeUNBROWSE_URLinto that child process- local file reads because it loads bundled prompt, skill, and config files from its own directory
- install/load does not contact external websites; network traffic starts only after an agent explicitly calls
unbrowse. By default this happens via@unbrowse/sdk(HTTP fetch) — setdriver: "cli"in the plugin config to route through the bundledunbrowsebinary instead
Driver selection
| driver config | Behavior |
|---|---|
| "sdk" (default) | Calls the typed @unbrowse/sdk client (HTTP). Falls through to the CLI driver automatically when the requested action is one of two known SDK gaps. |
| "cli" | Opts out of SDK; every action spawns the bundled unbrowse binary. Matches v0.7.x behavior. |
The two SDK gaps that auto-fallback to CLI:
action: "skills"— listing skills (nolistSkillsmethod on the SDK client)action: "execute"with any ofendpointId,path,extract,limit,pretty— those flags are CLI-only post-processors
Tool results include details.via: "sdk" | "cli" so callers can trace which path executed.
Tool surface
Tool action shape:
{
"action": "resolve",
"intent": "get pricing page API data",
"url": "https://example.com"
}Actions:
resolvesearchexecuteloginskillsskillhealth
Integration hooks:
- bootstrap guidance
before_agent_startprompt hint each run- shipped
unbrowse-browserskill - strict-mode
before_tool_callblocking forbrowser
Dev
npm test
npm run typecheck
npm pack --dry-run