Bug Description
When running firecrawl crawl <url> --wait against a self-hosted Firecrawl instance, the command hangs indefinitely if the --progress flag is not specified.
firecrawl crawl <url> --wait --progress works correctly and returns results as expected.
Root Cause
In firecrawl/cli/src/commands/crawl.ts, the --wait flag has two code paths:
-
--wait --progress: Uses a custom while(true) polling loop that calls getCrawlStatus() repeatedly. Works correctly.
-
--wait (without --progress): Calls app.crawl() — the SDK's built-in polling method, which is incompatible with self-hosted API.
The SDK's polling relies on mechanisms that don't work against self-hosted instances (likely RabbitMQ LISTEN/NOTIFY vs HTTP polling mismatch).
Environment
- CLI version: 1.10.0
- SDK version: @mendable/firecrawl-js@4.15.4
- Deployment: Self-hosted Docker (localhost:3002)
Steps to Reproduce
- Start a self-hosted Firecrawl instance
- Run:
firecrawl crawl https://example.com --wait --limit 1
- Command hangs indefinitely
Expected Behavior
firecrawl crawl <url> --wait should block and return results regardless of --progress flag.
Workaround
Use --wait --progress — works correctly.
Possible Fix
Use the same custom polling loop for --wait without --progress, rather than delegating to app.crawl().
Bug Description
When running
firecrawl crawl <url> --waitagainst a self-hosted Firecrawl instance, the command hangs indefinitely if the--progressflag is not specified.firecrawl crawl <url> --wait --progressworks correctly and returns results as expected.Root Cause
In
firecrawl/cli/src/commands/crawl.ts, the--waitflag has two code paths:--wait --progress: Uses a customwhile(true)polling loop that callsgetCrawlStatus()repeatedly. Works correctly.--wait(without--progress): Callsapp.crawl()— the SDK's built-in polling method, which is incompatible with self-hosted API.The SDK's polling relies on mechanisms that don't work against self-hosted instances (likely RabbitMQ LISTEN/NOTIFY vs HTTP polling mismatch).
Environment
Steps to Reproduce
firecrawl crawl https://example.com --wait --limit 1Expected Behavior
firecrawl crawl <url> --waitshould block and return results regardless of--progressflag.Workaround
Use
--wait --progress— works correctly.Possible Fix
Use the same custom polling loop for
--waitwithout--progress, rather than delegating toapp.crawl().