---
name: remote-browser
description: "Controls an isolated Browser Use Cloud browser from a sandboxed machine with the current Browser Use CLI."
license: "MIT"
metadata:
  decimalai-skill-id: "466e4003-4e4a-48af-8fce-5750163bc042"
  decimalai-version-id: "f49c554c-78ad-49e9-bf36-c6d46150ad1a"
  decimalai-version: "2"
  decimalai-body-sha256: "b590df578ab4d0c983a084d9aa951b103550c53562ac5b9efdad463dd05d11c2"
  decimalai-name: "remote-browser"
  decimalai-format: "1"
  decimalai-invocation: "model"
  decimalai-category: "agent-tooling"
  decimalai-source: "https://app.decimal.ai/s/remote-browser@2/SKILL.md"
---
# Remote Browser

Use this skill when an agent runs on a machine without a usable local Chrome and needs an isolated browser. The current Browser Use CLI runs Python from stdin. Do not use the removed `open`, `state`, `click`, `input`, `tab`, `cloud connect`, or `--connect` commands.

## Check the CLI

```bash
browser-use --doctor
browser-use skill show
```

If setup fails, follow the current [Browser Use skill](../browser-use/SKILL.md).

## Start an isolated browser

Authenticate once:

```bash
browser-use auth login
```

Pick a short unique name. `r7k2` below is only an example.

```bash
browser-use <<'PY'
start_remote_daemon("r7k2")
PY
```

Use the same name for every command in this browser:

```bash
BU_NAME=r7k2 browser-use <<'PY'
new_tab("https://example.com")
wait_for_load()
print(page_info())
PY
```

Each remote daemon is a separate Browser Use Cloud browser. Use a different name for each parallel task. Remote browsers can bill until they stop or time out.

## Inspect and interact

Helpers are pre-imported. Keep multi-step work in one heredoc when practical.

```bash
BU_NAME=r7k2 browser-use <<'PY'
print(page_info())
print(js("document.title"))

fill_input('input[name="q"]', "browser automation")
press_key("Enter")
wait_for_load()

print(page_info())
PY
```

Useful helpers:

- Navigate: `new_tab(url)`, `goto_url(url)`, `wait_for_load()`
- Inspect: `page_info()`, `js(code)`, `cdp(method, ...)`
- Interact: `click_at_xy(x, y)`, `type_text(text)`, `fill_input(selector, text)`, `press_key(key)`, `scroll(x, y)`
- Tabs: `list_tabs()`, `switch_tab(target)`, `close_tab(target)`
- Files and proof: `capture_screenshot()`, `wait_for_element(selector)`

Prefer the accessibility tree for element discovery:

```python
nodes = cdp("Accessibility.getFullAXTree")["nodes"]
```

Use a targeted `js(...)` query when the accessibility tree lacks the element. Verify each action with `page_info()`, a focused DOM check, or a screenshot.

## Stop the browser

When the work is done, stop the exact named browser:

```bash
browser-use <<'PY'
stop_remote_daemon("r7k2")
PY
```

Do not leave an unused remote browser running.
