// the find
grafana/grafana-image-renderer
A Grafana backend service that handles rendering of panels & dashboards to PNGs using headless browser (Chromium/Chrome)
This is the Chromium-backed rendering service that Grafana calls when someone wants a panel or dashboard as a PNG or PDF, and with Enterprise, CSV exports and emailed reports. If you run Grafana and need image rendering on infrastructure you control, this is the container you deploy. It is not a library you would import into your own code.
The adrs directory records the reasoning behind the major choices (language, logging, metrics, Chrome, sandboxing, crash-only behaviour), which is rare for a project this size and makes the design reviewable. The acceptance suite renders real dashboards through Grafana, pixel-diffs PNGs and checks PDF output, and has one numbered regression test per past issue (regression_676 through regression_935), so old failures stay fixed. Base images are pinned by sha256 and Renovate is configured, so the image supply chain is managed on purpose rather than floating on latest.
Chromium upgrades are a manual runbook: find a Debian build with both amd64 and arm64 packages, bump a cachebuster date by hand, edit CHROMIUM_VERSION, then cut a release. That is workable, but it is the kind of step that slips when a security fix lands late on a Friday. The acceptance tests need a built image and a live Grafana, and the golden PNG and PDF fixtures are binaries checked into git, so a font or Chromium bump produces diffs that are hard to review and easy to rubber-stamp. The README is thin for anyone outside Grafana: configuration lives in a docs file, the docs link carries a FIXME saying the grafana.com page is not yet published, and nothing says how much memory a headless browser needs or how concurrent renders behave.