hermes - 💡(How to fix) Fix feat(browser): add Obscura as a browser provider (Rust headless browser with CDP) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#15445Fetched 2026-04-25 06:22:42
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Author
Participants
Timeline (top)
labeled ×4

Code Example

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)
RAW_BUFFERClick to expand / collapse

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:

MetricObscuraChrome
Memory~30 MB200+ MB
Binary size~70 MB300+ MB
Page load~85 ms~500 ms
StartupInstant~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.

extent analysis

TL;DR

To integrate Obscura as a browser provider in Hermes, create an obscura.py provider that spawns the obscura subprocess and connects via the CDP WebSocket path.

Guidance

  • Review the existing provider model in tools/browser_providers/ to understand the implementation pattern for obscura.py.
  • Ensure the obscura binary is installed and accessible, either by setting the OBSCURA_BINARY_PATH environment variable or using the default binary name.
  • Configure the obscura provider using the suggested YAML configuration, including options for binary_path, stealth, port, and headless.
  • Test the integration by running Hermes with the obscura provider and verifying that it connects successfully to the CDP WebSocket server.

Example

No code snippet is provided, as the implementation details will depend on the specific requirements of the Hermes project.

Notes

The implementation of the obscura.py provider will require careful consideration of error handling, configuration options, and compatibility with the existing Hermes codebase.

Recommendation

Apply the workaround by creating an obscura.py provider, as this will allow Hermes users to leverage the benefits of Obscura, including its lightweight and stealthy nature.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING