fix(firecrawl): support self-hosted browser configuration#6394
fix(firecrawl): support self-hosted browser configuration#6394MestreY0d4-Uninter wants to merge 4 commits into
Conversation
0e5b566 to
983ac79
Compare
|
Refreshed against current Validation run:
Result:
This still looks like a valid self-hosted Firecrawl browser configuration fix and is now refreshed on top of current main. |
fd0c75f to
cbe09d9
Compare
|
Small follow-up after refresh: I dropped the ancillary docs edit from this PR so it stays a clean runtime/provider fix. The docs-site workflow was surfacing pre-existing diagram warnings in unrelated docs files, and I don't want to inflate this browser-provider fix with unrelated documentation cleanup. The code/tests for the self-hosted Firecrawl provider remain unchanged. |
cbe09d9 to
99f1ae8
Compare
|
Final validation pass on current main base is complete. What I rechecked:
Concrete results:
I also dropped the ancillary docs edit so this PR stays a clean self-hosted Firecrawl provider fix instead of bundling unrelated docs-linter noise. This one is ready for review/merge. |
|
Selfhosted firecrawl worked before. hermes agent switched to a new firecrawl sdk, which wants to use /v2, but selfhosted firecrawl instances are usually still at v1. If hermes agent sets "`V1FirecrawlApp" in the sdk, the locally hosted firecrawl versions work fine again. |
|
Thanks — I think this comment is pointing at a real compatibility gap, but it affects two different paths.
My recommendation would be to split the problem:
Also worth keeping this PR narrowly scoped: |
cc918aa to
d2c8dae
Compare
|
Refresh completed from origin/main and pushed to fork branches fix/firecrawl-selfhost-browser-config and fix/firecrawl-browser-v2-selfhost. Validation: py_compile passed for the touched Python files. Focused pytest on the changed unit tests passed; tests/integration/test_web_tools.py could not be collected here because the firecrawl package is not installed in this environment. |
|
✅ Audit completed (2026-04-19)
Caveat: Integration test collection depends on Recommendation: MERGE — unit tests green, integration caveat is environment-specific. Changes:
Part of batch audit: 23 PRs audited, 2 closed (absorbed), 21 refreshed |
|
🔔 Ready for maintainer review Esta PR foi validada como parte da auditoria completa de 2026-04-19. Status:
Ação necessária: Review e merge (ou decisão de feature para #9209, #8942). Audit batch 3: 4 PRs com validação mínima concluída |
d2c8dae to
506702d
Compare
Allow the Firecrawl browser provider to use FIRECRAWL_API_URL without requiring an API key, expose Firecrawl self-hosted browser settings in tools config, and raise a clearer error when the configured instance lacks /v2/browser support.
506702d to
ad49acb
Compare
|
Audit/update 2026-04-25:
This was part of the open-PR cleanup pass against current upstream/main. |
|
Closing this stale Firecrawl self-hosted browser patch instead of refreshing it again. The current diff mainly adds authless /v2/browser configuration, while the feedback points at v1 self-hosted SDK compatibility; a fresh targeted PR would be cleaner if that path is still needed. |
Summary
FIRECRAWL_API_URLis configuredFIRECRAWL_API_URLandFIRECRAWL_BROWSER_TTLin the browser setup flowRoot cause
Hermes already documented self-hosted Firecrawl for browser usage, including:
FIRECRAWL_API_URL=http://localhost:3002FIRECRAWL_BROWSER_TTL=600But the browser provider implementation still behaved like cloud-only Firecrawl:
FirecrawlProvider.is_configured()returnedTrueonly whenFIRECRAWL_API_KEYwas setFirecrawlProvider._headers()always requiredFIRECRAWL_API_KEYThat meant an unauthenticated self-hosted Firecrawl instance could not be used, even though Firecrawl's own self-hosted docs say API keys are optional unless auth is enabled.
I reproduced this directly on a clean updated checkout from
main:FIRECRAWL_API_URL=http://localhost:3002is_configured()returnedFalsecreate_session()failed withFIRECRAWL_API_KEY environment variable is requiredI also validated the fix against a local mock Firecrawl endpoint to confirm the provider can really create and close a browser session without auth when using a self-hosted URL.
Fix
FIRECRAWL_API_URLas valid browser-provider configurationAuthorizationheader when using a non-default API URL and no key is sethermes setup toolsHow to test
Automated:
pytest tests/tools/test_firecrawl_browser_provider.py tests/tools/test_web_tools_config.py -q -o addopts=python -m py_compile tools/browser_providers/firecrawl.py hermes_cli/tools_config.py tests/tools/test_firecrawl_browser_provider.pyDirect smoke validation used during investigation:
FIRECRAWL_API_URL=http://127.0.0.1:3010FirecrawlProvider.create_session()andclose_session()with no API keyAuthorizationNotes
FIRECRAWL_API_KEYis still required when using the default hosted endpoint.FIRECRAWL_API_URLandFIRECRAWL_API_KEY.