Run RenderCache
Start on Linux amd64 with a maintained Chrome or Chromium installation. Download and verify the alpha, then run it as an unprivileged user with its own writable data directory. Use a public origin whose pages do not require a login. The Chrome sandbox is enabled by default.
Point it at the app
Replace the sample addresses, browser path, and readiness selector with values for your application. origin must reach the original app directly; pointing it back at the RenderCache frontend would create a loop. The selector should appear when the page’s useful content is actually ready.
export RENDERCACHE_ADMIN_TOKEN='replace-with-a-long-secret'
./rendercache serve \
--origin https://origin.example.com \
--public-url https://app.example.com \
--chrome-path /usr/bin/chromium \
--ready-selector 'main[data-ready]'
This listens on port 8080, with the admin service on loopback port 9090. It discovers /sitemap.xml on the origin and maps its public page URLs into the configured site. Humans still receive the ordinary origin app. This command is a local starting point, not a complete public TLS deployment.
Check coverage before traffic
In another terminal with the same token:
curl -H "Authorization: Bearer $RENDERCACHE_ADMIN_TOKEN" \
http://127.0.0.1:9090/status
Check discovered, cached, missing, queued and failed page counts. A valid empty sitemap can be ready with zero pages; request-added pages have separate diagnostics. A cold request goes straight to the origin and queues rendering, so an unready cache can still return the original shell. Give the warm-up time to complete and investigate failures before routing crawler traffic.
Ask for the cached page
curl -i -A GPTBot http://127.0.0.1:8080/
A warmed, eligible page should return X-RenderCache: HIT and populated HTML. An expired record returns STALE; a missing record returns MISS. The user agent is only a test claim. Requests containing cookies or authorization bypass the shared snapshot path.
Open http://127.0.0.1:9090/ for the real comparison and delivery receipts. Use rendercache as the Basic-auth username and your admin token as the password. Enter a configured-site URL that already has a saved snapshot. The admin simulation is explicitly labeled and does not summon an external bot.
Refresh after a change
From a terminal with the token:
curl -X POST \
-H "Authorization: Bearer $RENDERCACHE_ADMIN_TOKEN" \
--get --data-urlencode 'url=https://app.example.com/' \
http://127.0.0.1:9090/purge
The purge API returns queued or coalesced state and preserves a usable old snapshot while the new render runs. It requires a configured token, even on loopback. To change quotas, readiness, crawler patterns or scheduling, edit the sample configuration and restart.
Before connecting this to a real edge, read deployment. Keep admin routes private, terminate TLS, and verify Chrome’s sandbox and resource limits on your host. The tagged engine documentation is the detailed reference.