← Back to Blog

Browser Harness: Connect Your LLM Directly to a Real Browser (Self-Hosted Guide)

Browser Harness: Connect Your LLM Directly to a Real Browser ♞

What is it? Browser Harness is an open-source (MIT) Python tool that connects an LLM directly to your real browser via Chrome DevTools Protocol (CDP). It uses a self-healing harness — when the agent needs a helper it doesn't have, it writes it on the fly. The harness improves itself every run.

Why it's trending: Browser Harness hit 9,100+ GitHub stars in just two weeks because it solves a fundamental problem with AI browser agents: they break when websites change. Instead of hardcoding selectors, Browser Harness uses a thin CDP connection where the agent writes its own missing helpers during execution. It's only ~592 lines of core Python, MIT licensed, and supports free remote browsers with captcha solving out of the box.


📋 Prerequisites

Before we start, make sure you have:

  • Python 3.10+ installed on your machine
  • Google Chrome or Chromium (for the CDP connection)
  • Git to clone the repository
  • An LLM API key — works with Claude (Claude Code/Codex), OpenAI, or any API-compatible model
  • Basic familiarity with terminal and Python

🧠 Architecture Overview

Browser Harness is deceptively simple — built around a single principle: keep the connection between LLM and browser as thin as possible, and let the agent write whatever it's missing.

Browser Harness Architecture

  1. Agent — Claude Code or Codex running the harness
  2. Browser Harness Core — ~592 lines of Python that manage the CDP WebSocket connection
  3. Agent Workspace — editable agent_helpers.py + domain-skills/ directory where the agent writes its own helpers during execution
  4. Chrome Browser — your real browser connected via CDP on localhost:9222

The flow: Agent receives a task → Checks if it has the right helpers → If missing, writes new ones to agent-workspace/ → Executes via CDP WebSocket → Results stream back → Harness persists the new helper for next time.


🚀 Step-by-Step Setup

Step 1: Clone the Repository

git clone https://github.com/browser-use/browser-harness.git
cd browser-harness

Step 2: Install Dependencies

pip install -r requirements.txt

The core dependency is websocket-client — everything else is standard library.

Step 3: Launch Chrome with Remote Debugging

Close all Chrome windows, then launch with remote debugging enabled:

macOS:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-harness

Linux:

google-chrome --remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-harness

Windows (PowerShell):

& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--remote-debugging-port=9222 `
--user-data-dir=C:\temp\chrome-harness

A new Chrome window opens. Tick the checkbox when prompted to allow the CDP connection.

Step 4: Verify the Connection

curl http://localhost:9222/json/version

You should see a JSON response with browser version, webSocketDebuggerUrl, and other metadata. This confirms Chrome is accepting CDP connections.

Step 5: Run Your First Task

Open the harness with your preferred agent. For Claude Code:

cd browser-harness
claude

Then paste the setup prompt from the README, or simply run:

# quick_test.py
import json, websocket

ws_url = "ws://localhost:9222/devtools/browser"
ws = websocket.create_connection(ws_url)

# Navigate to a page
ws.send(json.dumps({
    "id": 1,
    "method": "Target.createTarget",
    "params": {"url": "https://example.com"}
}))
result = json.loads(ws.recv())
print(f"Tab opened: {result}")
ws.close()

Step 6: Let the Agent Self-Improve

The magic happens when you give the agent a task it hasn't seen before:

"Go to GitHub, find the top trending repository today, and save its README"

The agent will:

  1. Open a browser tab via CDP
  2. Navigate to GitHub trending
  3. Read the page content
  4. If a helper is missing, it writes one to agent-workspace/domain-skills/
  5. Next time you run a similar task, the helper is already there

⚙️ Configuration Options

Using Remote Browsers

Browser Harness offers free remote browsers (3 concurrent, with proxies and captcha solving):

# Grab a free API key
curl https://cloud.browser-use.com/new-api-key

# Then configure the harness to use remote browsers
export BROWSER_USE_API_KEY=your-key-here

Custom Domain Skills

The harness auto-generates skills in agent-workspace/domain-skills/. Each skill is a Python file that captures selectors, flows, and edge cases for a specific site:

agent-workspace/domain-skills/
├── github/
├── linkedin/
├── amazon/
└── ...

You don't need to write these manually — the agent creates them during task execution.


🔐 Security Notes

  • Chrome's remote debugging port (9222) should NOT be exposed to the network — bind to localhost only
  • The harness runs with the same permissions as your browser session
  • Consider using a separate Chrome profile (--user-data-dir) to isolate sessions
  • API keys for remote browsers are stored in environment variables, not in code

💡 Real-World Use Cases

Use Case Example Task
Research "Visit the top 5 AI news sites and summarize today's headlines"
Data Entry "Log into the CRM and export the weekly report"
Monitoring "Check if our deploy is green on the CI dashboard"
Social Media "Draft and schedule this week's LinkedIn posts"
E-commerce "Compare prices for product X across 3 vendors"

📊 Compared to Alternatives

Feature Browser Harness Playwright Puppeteer Selenium
Self-healing helpers ✅ Agent writes them
Natural language ❌ (code) ❌ (code) ❌ (code)
Real browser
CDP-level control 🔶 (abstracted)
Lines of core code ~592 10,000+ 8,000+ 15,000+
Open source ✅ MIT ✅ Apache 2.0 ✅ Apache 2.0 ✅ Apache 2.0
Free remote browsers ✅ (3 concurrent)

🔗 Resources


✅ Verification Checklist

After setup, verify everything works:

  • Chrome responds on localhost:9222
  • curl http://localhost:9222/json/version returns valid JSON
  • Agent can open a tab and navigate to a URL
  • Agent can read page content
  • Agent-workspace helpers are created during complex tasks

Browser Harness is open-source under the MIT license. This guide was written on May 1, 2026 — check the GitHub repo for the latest updates.

← Retour au Blog

Browser Harness : Connectez Votre LLM Directement à un Vrai Navigateur (Guide Auto-Hébergé)

Browser Harness : Connectez Votre LLM Directement à un Vrai Navigateur ♞

Qu'est-ce que c'est ? Browser Harness est un outil Python open-source (MIT) qui connecte un LLM directement à votre navigateur réel via le protocole Chrome DevTools (CDP). Il utilise un harnais auto-réparateur — quand l'agent a besoin d'une aide qu'il n'a pas, il l'écrit à la volée. Le harnais s'améliore à chaque exécution.

Pourquoi ça cartonne : Browser Harness a atteint plus de 9 100 étoiles GitHub en seulement deux semaines car il résout un problème fondamental des agents navigateur IA : ils tombent en panne quand les sites web changent. Au lieu de sélecteurs codés en dur, Browser Harness utilise une connexion CDP légère où l'agent écrit ses propres aides manquantes pendant l'exécution. C'est seulement ~592 lignes de Python, sous licence MIT, avec des navigateurs distants gratuits et la résolution de captchas intégrée.


📋 Prérequis

Avant de commencer :

  • Python 3.10+ installé sur votre machine
  • Google Chrome ou Chromium
  • Git pour cloner le dépôt
  • Une clé API LLM — fonctionne avec Claude (Claude Code/Codex), OpenAI ou tout modèle compatible API
  • Connaissances de base en terminal et Python

🧠 Architecture du Système

Browser Harness est d'une simplicité trompeuse — construit autour d'un seul principe : garder la connexion entre le LLM et le navigateur aussi légère que possible, et laisser l'agent écrire ce qui lui manque.

Architecture Browser Harness

  1. Agent — Claude Code ou Codex exécutant le harnais
  2. Browser Harness Core — ~592 lignes de Python gérant la connexion WebSocket CDP
  3. Agent Workspaceagent_helpers.py + domain-skills/ où l'agent écrit ses propres aides
  4. Chrome — votre navigateur réel connecté via CDP sur localhost:9222

Le flux : L'agent reçoit une tâche → Vérifie s'il a les bonnes aides → Si manquantes, en écrit de nouvelles dans agent-workspace/ → Exécute via WebSocket CDP → Les résultats sont renvoyés → Le harnais persiste la nouvelle aide pour la prochaine fois.


🚀 Installation Pas à Pas

Étape 1 : Cloner le Dépôt

git clone https://github.com/browser-use/browser-harness.git
cd browser-harness

Étape 2 : Installer les Dépendances

pip install -r requirements.txt

La dépendance principale est websocket-client — tout le reste fait partie de la bibliothèque standard.

Étape 3 : Lancer Chrome avec le Débogage à Distance

Fermez toutes les fenêtres Chrome, puis lancez-le avec le débogage à distance activé :

macOS :

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-harness

Linux :

google-chrome --remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-harness

Windows (PowerShell) :

& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--remote-debugging-port=9222 `
--user-data-dir=C:\temp\chrome-harness

Une nouvelle fenêtre Chrome s'ouvre. Cochez la case lorsqu'on vous le demande pour autoriser la connexion CDP.

Étape 4 : Vérifier la Connexion

curl http://localhost:9222/json/version

Vous devriez voir une réponse JSON avec la version du navigateur, l'URL WebSocket et d'autres métadonnées.

Étape 5 : Lancer Votre Première Tâche

Ouvrez le harnais avec votre agent préféré. Pour Claude Code :

cd browser-harness
claude

Ou testez la connexion CDP directement :

import json, websocket

ws_url = "ws://localhost:9222/devtools/browser"
ws = websocket.create_connection(ws_url)

ws.send(json.dumps({
    "id": 1,
    "method": "Target.createTarget",
    "params": {"url": "https://example.com"}
}))
result = json.loads(ws.recv())
print(f"Onglet ouvert : {result}")
ws.close()

Étape 6 : L'Agent Auto-Améliorant

La magie opère quand vous donnez à l'agent une tâche inédite :

"Va sur GitHub, trouve le dépôt le plus populaire aujourd'hui et sauvegarde son README"

L'agent va :

  1. Ouvrir un onglet via CDP
  2. Naviguer vers GitHub trending
  3. Lire le contenu de la page
  4. Si une aide manque, l'écrire dans agent-workspace/domain-skills/
  5. La prochaine fois, l'aide sera déjà là

⚙️ Options de Configuration

Utiliser des Navigateurs Distants

Browser Harness propose des navigateurs distants gratuits (3 simultanés, avec proxies et résolution de captchas) :

# Obtenez une clé API gratuite
curl https://cloud.browser-use.com/new-api-key

# Configurez le harnais pour utiliser les navigateurs distants
export BROWSER_USE_API_KEY=votre-clé-ici

Domain Skills Personnalisées

Le harnais génère automatiquement des compétences dans agent-workspace/domain-skills/. Chaque compétence capture les sélecteurs, les flux et les cas particuliers d'un site spécifique :

agent-workspace/domain-skills/
├── github/
├── linkedin/
├── amazon/
└── ...

Pas besoin de les écrire manuellement — l'agent les crée pendant l'exécution.


🔐 Notes de Sécurité

  • Le port de débogage Chrome (9222) ne doit PAS être exposé sur le réseau — liez-le à localhost uniquement
  • Le harnais s'exécute avec les mêmes permissions que votre session navigateur
  • Utilisez un profil Chrome séparé (--user-data-dir) pour isoler les sessions
  • Les clés API pour les navigateurs distants sont stockées dans des variables d'environnement

💡 Cas d'Utilisation Réels

Cas d'usage Exemple de tâche
Recherche "Visite les 5 meilleurs sites d'actualités IA et résume les titres du jour"
Saisie de données "Connecte-toi au CRM et exporte le rapport hebdomadaire"
Surveillance "Vérifie si notre déploiement est vert sur le tableau de bord CI"
Réseaux sociaux "Rédige et planifie les publications LinkedIn de la semaine"
E-commerce "Compare les prix du produit X chez 3 fournisseurs"

📊 Comparaison avec les Alternatives

Fonctionnalité Browser Harness Playwright Puppeteer Selenium
Aides auto-réparatrices ✅ Agent les écrit
Langage naturel ❌ (code) ❌ (code) ❌ (code)
Navigateur réel
Contrôle CDP 🔶 (abstrait)
Lignes de code ~592 10 000+ 8 000+ 15 000+
Open source ✅ MIT ✅ Apache 2.0 ✅ Apache 2.0 ✅ Apache 2.0
Navigateurs distants gratuits ✅ (3 simultanés)

🔗 Ressources


✅ Liste de Vérification

Après l'installation, vérifiez que tout fonctionne :

  • Chrome répond sur localhost:9222
  • curl http://localhost:9222/json/version renvoie du JSON valide
  • L'agent peut ouvrir un onglet et naviguer vers une URL
  • L'agent peut lire le contenu d'une page
  • Les aides sont créées dans agent-workspace lors de tâches complexes

Browser Harness est open-source sous licence MIT. Ce guide a été écrit le 1er mai 2026 — consultez le dépôt GitHub pour les dernières mises à jour.