How it Works
Overview of TRMNL's architecture.

The TRMNL web server hosts a growing directory of first-party plugins and community plugins that are driven by API endpoints + a templating engine. Our Framework UI design system is recommended, but not required, for plugin development. Learn how to build custom plugins here.
The TRMNL device is a custom PCB featuring an ESP32-C3 microcontroller, 1800-2500 mAh battery, and 7.5" EPD screen housed in injection-molded ABS soft touch plastic. Customers may disassemble their device, mod their firmware, and retrieve their API keys without impacting our Terms of Service.
TRMNL firmware supports automatic OTA (over the air) updates to WiFi-connected devices and is open source. Here's how it works:
TRMNL device wakes up and requests content from web server every n period*
TRMNL web server generates a 1- or 2-bit PNG image. Response JSON includes a link to this image and timing instructions for the next "refresh" request.
TRMNL device renders the content, then goes to sleep for the instructed amount of time.
Opinionated device <> server relationship
Most IoT products support SSH-ing directly into peripheral devices. We've heard too many horror stories about how this can go wrong, and decided to invert the paradigm.
Your TRMNL device pings our server, never the other way around.
Each request to our /api/display
endpoint (docs) includes only the minimum details needed to support customers -- an API key, device mac address, firmware version, battery voltage, and WiFi signal strength.
We do not collect any footprint of your location or identity, such as IP address or WiFi credentials. Your local network's SSID and password are stored only on your TRMNL device.
When the TRMNL web server responds to a device's request we include only a few fields. These include "update_firmware" (true/false), a direct download link to the firmware's [public] binary package, and whether the device should be reset. Customers may disable OTA updates, reset their device to transfer ownership, or destroy data from their web account.
TRMNL does not store rendered content over time.
Whenever the web server generates a new image, it replaces the previous image. This keeps our costs low, affording perpetual service without subscription fees. This also protects users, because we only have access to the most recent screen rendered for each of your plugins.
Last updated