Files
agent-estate-wiki/concepts/browser-automation.md
T

42 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Browser Automation
type: concept
status: active
created: 2026-07-22
updated: 2026-08-02
verified_on: 2026-08-02
confidence: high
tags: [concept, browser, camofox, steel]
sources: [live-probe, session-history]
---
# Browser Automation
## Idea
Giving an agent a real, controllable web browser — as opposed to just an HTTP-fetch tool — so it can handle JS-heavy pages, logins, and visual verification.
## How this install implements it
- **Engine:** Camoufox (Firefox-based, fingerprint-resistant) — see [[comparisons/camoufox-vs-chrome]] for why this over stock Chrome.
- **Connection:** REST API at `localhost:9093` (profile `anthony`) + CDP WebSocket at `localhost:9377`
- **Display:** headed, not truly headless — runs under `Xvfb :99` (1600×1200×24) with `fluxbox` as window manager, viewable live over VNC (see [[systems/headless-server]]).
- **Config:** `cloud_provider: camofox`, `camera_provider: camofox` in `~/.hermes/config.yaml`
- **Auth:** Persistent profile `anthony` — authenticated into Uber Eats, LinkedIn, etc. No cookie files needed.
## Why headed-under-Xvfb instead of headless
Running a real X display (rather than a headless browser flag) lets a human watch/intervene via VNC and tends to reduce automation-detection fingerprints compared to headless-mode flags — consistent with using Camoufox in the first place. The tradeoff, flagged in [[systems/headless-server]], is that the VNC exposing this display currently has no password.
## The Steel Experiment (Jul 2930)
Steel Browser (Chromium 140 on CT201) was briefly the primary backend. It offered full CDP access and a built-in session viewer, but was reverted after:
- CDP URL normalization issues (Docker internal networking required a plugin patch)
- Empty-stream errors from the `opencode-go/deepseek-v4-flash` provider path
- DeepSeek 0731's stricter tool name validation affected all providers
**Lesson:** A local browser backend (same host, no network hop) has fewer failure modes than a remote Docker container. The `browser-steel` plugin is still present but disabled. See [[comparisons/steel-vs-camoufox]] and [[decisions/rollback-steel-to-camofox]].
## Related
- [[systems/browser-backend]]
- [[comparisons/steel-vs-camoufox]]
- [[comparisons/camoufox-vs-chrome]]
- [[systems/headless-server]]
- [[concepts/tool-calling]]