Labsco
browser-use logo

remote-browser

โ˜… 102,956

by browser-use ยท part of browser-use/browser-use

Controls a local browser from a sandboxed remote machine. Use when the agent is running in a sandbox (no GUI) and needs to navigate websites, interact with web pages, fill forms, take screenshots, or expose local dev servers via tunnels.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup
๐Ÿงฐ Not standalone. This skill ships with browser-use/browser-use and only works together with that tool โ€” install the tool first, then add this skill.

This is the playbook your agent receives when the skill activates โ€” you don't need to read it to use the skill, but it's here to audit before installing.

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

browser-use --doctor
browser-use skill show

If setup fails, follow the current Browser Use skill.

Start an isolated browser

Authenticate once:

browser-use auth login

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

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

Use the same name for every command in this browser:

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.

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:

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:

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

Do not leave an unused remote browser running.