Three services. Clear responsibilities. Production-grade JavaScript rendering for bots.
EdgeComet sits behind your reverse proxy.
Only bot traffic is routed through the system.
Each component does one thing well. Deploy together or scale independently.
Entry point that intercepts bot requests, manages caching, and coordinates rendering.
Manages headless Chrome pool to render JavaScript-heavy pages on demand.
Background service that keeps cache fresh without impacting live traffic.
Google (Search, Ads, Mobile), Bing, and AI crawlers: GPTBot, ClaudeBot, PerplexityBot, plus messaging apps (WhatsApp, Telegram, Slack, Discord).
Exact paths, wildcards (/blog/*), regexp (~/api/v[0-9]+/), and query parameter matching. Patterns auto-sorted by specificity.
Global defaults, per-host overrides, and per-URL pattern rules. Deep merge semantics with predictable inheritance.
Render as desktop or mobile. Each dimension cached separately. Serve appropriate content based on crawler type.
X-Render-Source, X-Cache-Age, X-Matched-Rule for debugging. Trace every request through the system.
Render, bypass to origin, block (403/404/410), or return custom status codes. Control what bots see at each URL.
EdgeComet manages Chrome instances proactively so you don't get paged at 2am.
| Event | What Happens | Your Involvement |
|---|---|---|
| Memory bloat | Scheduled restart after N renders | None |
| Instance hang | Auto-detected and replaced | None |
| Chrome crash | New instance spawned within 3 seconds | None |
| Render timeout | Soft timeout captures partial HTML | None |
| Security update | Update Chrome binary, restart service | ~30 min, few times/year |
Choose when to capture: networkIdle (recommended), load, or DOMContentLoaded. Add extra delay for late-executing JavaScript.
22+ analytics and tracking scripts blocked by default. Images, fonts, media skipped. 30-50% faster renders, reduced origin load.
One browser per instance, ephemeral tab per render. No cross-request leakage. Tab context destroyed immediately after capture.
10-15 instances for 8-core servers. Scale horizontally by adding more Render Service nodes. Edge Gateway load-balances automatically.
Metadata, distributed locks, service registry
HTML content, date-organized directories
deleteRemove expired cache immediately. Force fresh renders for next bot visit.
serve_staleKeep expired content as fallback. If fresh render fails, bots still get cached content.
For high-traffic sites, distribute cache across multiple Edge Gateway instances.
Immediate replication after render completes
Lazy fetch when cache miss occurs
When serving a request, EdgeComet tries each source in order until successful:
Bots always receive a response. EdgeComet never becomes a single point of failure.
| Failure Scenario | What Bot Receives | SEO Impact |
|---|---|---|
| Redis down | Bypass to origin (direct fetch) | Normal origin behavior |
| Website down | Stale cache (if available) OR bypass | Cached content protects indexation |
| Render Service down | Stale cache (if available) OR bypass | Cached content protects indexation |
| Chrome crash | Auto-failover to next instance | Minimal - automatic recovery |
| Cache file missing | Fresh render triggered | Slight delay, then cached |
High-performance, low memory footprint
10x faster than net/http
Chrome DevTools Protocol
Coordination & metadata
Metrics & monitoring
Structured JSON logging
Get EdgeComet running in your infrastructure in 15 minutes.