Skip to content

feat(browser): add Obscura as a browser provider (Rust headless browser with CDP) #15445

Description

@willy-scr

Feature Request: Obscura Browser Provider

What is Obscura?

Obscura is an open-source headless browser engine written in Rust, purpose-built for AI agent automation and web scraping. It exposes a full Chrome DevTools Protocol (CDP) WebSocket server, making it compatible with Puppeteer and Playwright as a drop-in replacement for headless Chrome.

Why integrate it?

Compared to Chrome/Chromium:

Metric Obscura Chrome
Memory ~30 MB 200+ MB
Binary size ~70 MB 300+ MB
Page load ~85 ms ~500 ms
Startup Instant ~2s

Key features relevant to Hermes Agent's browser tool:

  1. CDP-compatible — WebSocket server at ws://127.0.0.1:9222, same protocol Hermes already uses for Browserbase/local Chrome
  2. Stealth mode built-in (--stealth flag) — anti-fingerprinting, tracker blocking (3,520 domains), navigator.webdriver = undefined
  3. Zero dependencies — single binary, no Chrome/Node.js needed
  4. Parallel scrapingobscura scrape with configurable concurrency
  5. CLI toolsserve, fetch, scrape subcommands
  6. Cross-platform — Linux x86_64, macOS (ARM + Intel), Windows

How it could work

Since Hermes already has a provider model (tools/browser_providers/) with browserbase.py, browser_use.py, and firecrawl.py, an obscura.py provider could be added that:

  1. Spawns obscura serve --port 9222 as a local subprocess (or connects to an already-running instance)
  2. Connects via the existing CDP WebSocket path (same as local Chrome mode)
  3. Optionally enables --stealth mode via config flag
  4. Falls back gracefully if obscura binary is not found

Suggested config

browser:
  provider: obscura          # new provider option
  obscura:
    binary_path: obscura     # or full path
    stealth: true            # enable anti-fingerprinting
    port: 9222               # CDP WebSocket port
    headless: true           # always true for Obscura (no GUI)

Environment variables

  • OBSCURA_BINARY_PATH — override binary location
  • OBSCURA_STEALTHtrue/false to enable stealth mode
  • OBSCURA_PORT — CDP port (default 9222)

Benefits for Hermes users

  • Lightweight alternative to running full Chrome on VPS/memory-constrained environments
  • Built-in stealth without needing Browserbase's advanced stealth (which costs extra)
  • Fast startup — ideal for short-lived browser tasks (cron jobs, quick scrapes)
  • Single binary — easy to install via hermes setup tools

Links

Contribution

I'd be happy to contribute a PR for the Obscura browser provider if there's interest. The implementation would follow the existing BrowserbaseProvider / BrowserUseProvider pattern.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havecomp/toolsTool registry, model_tools, toolsetssweeper:not-plannedSweeper: closed per standing maintainer policy (design direction)tool/browserBrowser automation (CDP, Playwright)type/featureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions