browser-harness

Control Chrome browser automation through the Chrome DevTools Protocol using Python.

Updated Apr 19, 2026
One-click install
npx skills add https://github.com/crycriM/hermes-skills --skill browser-harness-crycrim
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: browser-harness
Source: https://github.com/crycriM/hermes-skills/tree/main/mlops/browser-harness
Command: npx skills add https://github.com/crycriM/hermes-skills --skill browser-harness-crycrim

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Thin CDP control layer for direct browser automation. Python snippets executed on Chrome via CDP WebSocket. Installed at ~/browser-harness/, Chrome runs in browser-use distrobox with Xvfb.

Core Features & Use Cases

  • Direct CDP-based automation: write Python to drive Chrome through the CDP WebSocket, with functions like goto, click, type_text, and screenshot.
  • Wrapper and lifecycle: bh wrapper auto-discovers the CDP URL, manages Chrome instances, and provides an ergonomic API for scripting browser actions.
  • Architecture and parallelism: a daemon-based setup enables multi-session and tab workflows, with clear separation between the control plane and browser instances.

Quick Start

Install the browser-harness package and run a Python snippet through the bh wrapper to launch Chrome and begin browser automation.

Frequently Asked Questions about browser-harness

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I automate Chrome browser control using Python and CDP?

Automate Chrome browser control by connecting to a CDP WebSocket via Python, executing functions like goto, click, type_text, and screenshot. The browser-harness wrapper orchestrates Chrome instances and auto-discovers the CDP URL for deterministic browser interactions.

What is the best way to run parallel browser automation sessions without LLMs?

Parallel browser automation without LLMs is achieved using a daemon-based setup that separates the control plane from browser instances. This architecture enables multi-session and tab workflows, allowing concurrent Python scripts to drive Chrome through distinct CDP connections.

How do I set up a Chrome environment for CDP WebSocket automation?

Set up Chrome for CDP WebSocket automation using a distrobox-based environment with Xvfb. Install the browser-harness package at ~/browser-harness/, which runs Chrome in a browser-use distrobox and manages instances through a user-level daemon.

Can I capture screenshots and interact with elements using direct CDP?

Yes, you can capture screenshots and interact with elements using direct CDP. The Python control layer provides specific functions for navigation, clicking, typing text, and taking screenshots across multiple pages without relying on LLMs.

Does browser automation via Chrome DevTools Protocol require a specific runtime?

Browser automation via Chrome DevTools Protocol requires a Python runtime and a Chrome environment accessible through a CDP WebSocket. The setup specifically utilizes a distrobox-based Chrome configuration managed by a user-level daemon.

Why use a thin CDP control layer for browser automation instead of standard frameworks?

A thin CDP control layer provides deterministic browser interactions by executing Python snippets directly on Chrome via CDP WebSocket. It avoids the overhead of LLMs, offering developers direct functions for navigation, element interaction, and parallel sessions.