genesis browser
Manage Genesis's browser control surface and run browser actions (lifecycle, profiles, tabs, snapshots, screenshots, navigation, input, state emulation, and debugging).
Related:
- Browser tool + API: Browser tool
Common flags
--url <gatewayWsUrl>: Gateway WebSocket URL (defaults to config).--token <token>: Gateway token (if required).--timeout <ms>: request timeout (ms).--expect-final: wait for a final Gateway response.--browser-profile <name>: choose a browser profile (default from config).--json: machine-readable output (where supported).
Quick start (local)
genesis browser profiles
genesis browser --browser-profile genesis start
genesis browser --browser-profile genesis open https://example.com
genesis browser --browser-profile genesis snapshot
Agents can run the same readiness check with browser({ action: "doctor" }).
Quick troubleshooting
If start fails with not reachable after start, troubleshoot CDP readiness first. If start and tabs succeed but open or navigate fails, the browser control plane is healthy and the failure is usually navigation SSRF policy.
Minimal sequence:
genesis browser --browser-profile genesis doctor
genesis browser --browser-profile genesis start
genesis browser --browser-profile genesis tabs
genesis browser --browser-profile genesis open https://example.com
Detailed guidance: Browser troubleshooting
Lifecycle
genesis browser status
genesis browser doctor
genesis browser start
genesis browser stop
genesis browser --browser-profile genesis reset-profile
Notes:
- For
attachOnlyand remote CDP profiles,genesis browser stopcloses the active control session and clears temporary emulation overrides even when Genesis did not launch the browser process itself. - For local managed profiles,
genesis browser stopstops the spawned browser process.
If the command is missing
If genesis browser is an unknown command, check plugins.allow in
~/.genesis/genesis.json.
When plugins.allow is present, the bundled browser plugin must be listed
explicitly:
{
plugins: {
allow: ["telegram", "browser"],
},
}
browser.enabled=true does not restore the CLI subcommand when the plugin
allowlist excludes browser.
Related: Browser tool
Profiles
Profiles are named browser routing configs. In practice:
genesis: launches or attaches to a dedicated Genesis-managed Chrome instance (isolated user data dir).user: controls your existing signed-in Chrome session via Chrome DevTools MCP.- custom CDP profiles: point at a local or remote CDP endpoint.
genesis browser profiles
genesis browser create-profile --name work --color "#FF5A36"
genesis browser create-profile --name chrome-live --driver existing-session
genesis browser create-profile --name remote --cdp-url https://browser-host.example.com
genesis browser create-profile --name onion
genesis browser delete-profile --name work
Use a specific profile:
genesis browser --browser-profile work tabs
Tor profiles
Tor is enabled by default for local managed browser profiles. Create a dedicated managed profile for onion-service workflows:
genesis browser create-profile --name onion
genesis browser --browser-profile onion start
genesis browser --browser-profile onion open http://examplehiddenservice.onion
Managed mode uses tor from PATH by default and, when no explicit executable
path is configured, tries to install the host Tor package automatically if it is
missing. The optional --tor flag persists an explicit per-profile Tor setting,
which is useful when the global default is disabled. By default, regular
domains and IP literals stay on clearnet and only .onion HTTP(S) URLs use Tor.
To point at a specific executable, an existing SOCKS endpoint, or whole-browser
Tor routing, configure browser.profiles.<name>.tor in
~/.genesis/genesis.json.
Details: Browser tool.
Tabs
genesis browser tabs
genesis browser tab new --label docs
genesis browser tab label t1 docs
genesis browser tab select 2
genesis browser tab close 2
genesis browser open https://genesis.pixelzx.com/docs --label docs
genesis browser focus docs
genesis browser close t1
tabs returns suggestedTargetId first, then the stable tabId such as t1,
the optional label, and the raw targetId. Agents should pass
suggestedTargetId back into focus, close, snapshots, and actions. You can
assign a label with open --label, tab new --label, or tab label; labels,
tab ids, raw target ids, and unique target-id prefixes are all accepted.
Snapshot / screenshot / actions
Snapshot:
genesis browser snapshot
genesis browser snapshot --urls
Screenshot:
genesis browser screenshot
genesis browser screenshot --full-page
genesis browser screenshot --ref e12
genesis browser screenshot --labels
Notes:
--full-pageis for page captures only; it cannot be combined with--refor--element.existing-session/userprofiles support page screenshots and--refscreenshots from snapshot output, but not CSS--elementscreenshots.--labelsoverlays current snapshot refs on the screenshot.snapshot --urlsappends discovered link destinations to AI snapshots so agents can choose direct navigation targets instead of guessing from link text alone.
Navigate/click/type (ref-based UI automation):
genesis browser navigate https://example.com
genesis browser click <ref>
genesis browser click-coords 120 340
genesis browser type <ref> "hello"
genesis browser press Enter
genesis browser hover <ref>
genesis browser scrollintoview <ref>
genesis browser drag <startRef> <endRef>
genesis browser select <ref> OptionA OptionB
genesis browser fill --fields '[{"ref":"1","value":"Ada"}]'
genesis browser wait --text "Done"
genesis browser evaluate --fn '(el) => el.textContent' --ref <ref>
File + dialog helpers:
genesis browser upload /tmp/genesis/uploads/file.pdf --ref <ref>
genesis browser waitfordownload
genesis browser download <ref> report.pdf
genesis browser dialog --accept
State and storage
Viewport + emulation:
genesis browser resize 1280 720
genesis browser set viewport 1280 720
genesis browser set offline on
genesis browser set media dark
genesis browser set timezone Europe/London
genesis browser set locale en-GB
genesis browser set geo 51.5074 -0.1278 --accuracy 25
genesis browser set device "iPhone 14"
genesis browser set headers '{"x-test":"1"}'
genesis browser set credentials myuser mypass
Cookies + storage:
genesis browser cookies
genesis browser cookies set session abc123 --url https://example.com
genesis browser cookies clear
genesis browser storage local get
genesis browser storage local set token abc123
genesis browser storage session clear
Debugging
genesis browser console --level error
genesis browser pdf
genesis browser responsebody "**/api"
genesis browser highlight <ref>
genesis browser errors --clear
genesis browser requests --filter api
genesis browser trace start
genesis browser trace stop --out trace.zip
Existing Chrome via MCP
Use the built-in user profile, or create your own existing-session profile:
genesis browser --browser-profile user tabs
genesis browser create-profile --name chrome-live --driver existing-session
genesis browser create-profile --name brave-live --driver existing-session --user-data-dir "~/Library/Application Support/BraveSoftware/Brave-Browser"
genesis browser --browser-profile chrome-live tabs
This path is host-only. For Docker, headless servers, Browserless, or other remote setups, use a CDP profile instead.
Current existing-session limits:
- snapshot-driven actions use refs, not CSS selectors
browser.actionTimeoutMsdefaults supportedactrequests to 60000 ms when callers omittimeoutMs; per-calltimeoutMsstill wins.clickis left-click onlytypedoes not supportslowly=truepressdoes not supportdelayMshover,scrollintoview,drag,select,fill, andevaluatereject per-call timeout overridesselectsupports one value onlywait --load networkidleis not supported- file uploads require
--ref/--input-ref, do not support CSS--element, and currently support one file at a time - dialog hooks do not support
--timeout - screenshots support page captures and
--ref, but not CSS--element responsebody, download interception, PDF export, and batch actions still require a managed browser or raw CDP profile
Remote browser control (node host proxy)
If the Gateway runs on a different machine than the browser, run a node host on the machine that has Chrome/Brave/Edge/Chromium. The Gateway will proxy browser actions to that node (no separate browser control server required).
Use gateway.nodes.browser.mode to control auto-routing and gateway.nodes.browser.node to pin a specific node if multiple are connected.
Security + remote setup: Browser tool, Remote access, Tailscale, Security