Bringing Grafana dashboards to e-ink display
I first heard about TRMNL from a tweet by one of my old co‑workers on Jan 31, 2025, and absolutely loved it. Although my first thought was that it was a little expensive, I liked the product a lot, and my wife convinced me to buy it for myself. I finally received the device around June, but was slapped with heavy customs fees—part of which the TRMNL team gladly reimbursed.
Let me start with what TRMNL is. It is a battery‑powered, developer‑friendly, e‑ink display, simply put, a Kindle‑like device on which you can choose what to display from a library of plugins that connect to third‑party services and show up‑to‑date results with a custom refresh interval. My favourite part was how easy it was to build your own plugins as well.
The first time I saw the device, I instantly thought there should be a Grafana plugin for TRMNL. My plan was to start developing it as soon as I received my device. But after it was delivered, I procrastinated. To start using the device, I installed the Weather Churn plugin with a 30‑minute refresh interval, which was helpful since I live in London and the weather here is quite unpredictable. Being able to see it at a glance in the living room helped whenever we were heading out.
I work at Grafana Labs, and we have quarterly hackathons that last a week. We get to step away from our daily work and focus on a hackathon project for the whole week. This was the perfect time to break my procrastination and start working on the plugin I’d had in mind for quite some time.
For the Grafana hackathon, my idea was to present it as a stepping stone toward Grafana‑branded physical devices, where, after getting a device, you can link it to your Grafana Cloud account and easily select a dashboard or panel to display on the device. By the end of the hackathon, I had built a TRMNL plugin that lets you select a Grafana panel to display on the device.
Below is a short clip of how different Grafana panels looked on the TRMNL device using the plugin I created.
Although I didn’t win the internal hackathon, I was very happy with the plugin’s results. It was still a private plugin, meaning only I could use it. The next step was to publish it as a recipe on TRMNL so that others could also use it, but my procrastination kicked in again, and I delayed publishing it as a recipe.
This time, it was a blessing in disguise. A few days ago, I got an email from the TRMNL team announcing a hackathon focused on building plugins for DevOps. I instantly remembered my Grafana plugin. I quickly went through the rules to check if I could submit a previously created plugin, and the rules said that if a plugin hadn’t been published as a recipe, it could be submitted. So my procrastination made me eligible to submit my Grafana plugin for this hackathon, the theme of which exactly matched my project. I made a few tweaks and submitted it. I also updated the video I created for the internal hackathon and attached it.
Lo and behold, my submission was one of the winners, and I couldn’t have been happier. I didn’t see TRMNL’s official announcement first; my friend and college senior, Kshitij, congratulated me, and after reading his email I checked the blog and saw my plugin among the winners. In fact, the main reason I wrote this post was that he asked me to share my experience.
If you’d like to try the plugin, you can check it out here: https://usetrmnl.com/recipes/105532