Feedback wanted: Slickfast rendering Grafana panels to images without a browser

Hey, everyone. I’m Alex and I built SlickFast, an open-source (AGPL) render engine that turns a JSON chart spec into SVG or PNG without needing a browser. It’s deterministic: the same data always produces byte-identical output.

I’ve been testing it against Grafana 13 as a way to get panel images without running a headless browser. A small prototype reads a dashboard and its panel data through the HTTP API (read-only Viewer token), maps core panels to SlickFast charts, and renders the whole board.

On Node Exporter Full with real Prometheus data: 124 panels, no unsupported core panels, about 15 ms to render the SVG and 175 ms for a high-resolution PNG. (image)

Because it’s just an image, it can go anywhere: alert notifications, email, Slack, e-ink displays, AI agents. The deterministic output also means a report can be fingerprinted and verified later.

Questions for people who know this space better than I do:

  1. Would this be more useful as a backend plugin, an app plugin, or a standalone service next to Grafana?
  2. Which panel types or options matter most for alerts and reports?
  3. Is there a better way than /api/ds/query to fetch exactly what a panel shows (transformations, overrides)?

The engine is public today: [GitHub link] · npx -y @slickfast/mcp. Slickfast.com has a lot of demos and stuff. Custom dashboards are light and easy, An entire dash is just a single image render without chrome. The MCP is agent ready and FOS.

The Grafana integration isn’t released yet; I’d rather shape it with your input first.

Mobile alert demo(easily deliverable to Telegram/ EMAIL)

About these images: All three were rendered by SlickFast from a real Grafana 13.2 OSS install, through its HTTP API with a read-only (Viewer) service-account token. No browser and no screenshots. Panel titles, units, thresholds and colors come from each panel’s own settings.

  1. Checkout service dashboard: real dashboard and panel config; the numbers are synthetic, from Grafana’s TestData data source, to show a meltdown on demand.
  2. Phone alert card: two panels from that dashboard (the CPU gauge and CPU by host) combined into one 1080×1350 alert image. The card layout is ours, not a Grafana feature.
  3. Node Exporter Full: real Prometheus and node_exporter metrics from my Mac, with dashboard variables resolved automatically.

SlickFast draws its own version of each panel rather than copying Grafana’s look. Core panel types only so far (time series, stat, gauge, bar gauge, table, pie, bar); transformations and third-party panel plugins aren’t supported yet. Timings (about 15 ms to draw a board, about 175 ms for a high-resolution PNG) were measured on a laptop.

Cool stuff!

AFAIK, Grafana image renderer used to be a backend plugin, but they had to externalize it into docker container because of Node.js+Chromium being so heavy and bursty.

If Slickfast is much lighter there’s definitely much more adoption possible with a app/backend plugin with one-click installation

SlickFast is extremely light. there is no browser. SlickFast does not take a screenshot of of charts, SlickFast renders with a custom engine from .SVG to .PNG. Anyone size or resolution is native to the engine. It’s so fast my local laptop can create over 100,000 charts a second.