Open Source

The TRMNL Framework is open source as of version 3.2. It is the design system TRMNL plugin screens are built with, tuned for 1-bit, 2-bit, and limited-color ePaper displays. This repository holds the CSS, the JavaScript runtime, the design tokens, and the documentation site you are reading.

#

What This Repository Is

The framework and the site that documents it live together in one Rails app. It has no database. It compiles the CSS and JavaScript, then renders these pages against them.

Framework development happens against the docs: edit the Sass or JS, watch it rebuild, and check the result on the page it documents. The screen below is a plugin layout built from framework classes, the same building blocks every example here uses.

TRMNL Framework The ePaper design system is now open source.
3.2 Version
MIT Code license
TRMNL Logo Open Source

The fixed hierarchy of Screen, View, Layout, and Title Bar is documented in Structure .

#

The Runtime

The JavaScript runtime lives in app/javascript/ and ships as a stamped pair: the readable plugins.js and the minified plugins.min.js production serves, both carrying the build marker of the released version. It does the render-time work a static stylesheet cannot.

#

CSS Is the Single Source of Truth for Paint

One rule shapes the whole project. Every rendering rule exists in CSS first, then TRMNLPaint mirrors it.

TRMNLPaint reads the live cascade and converts it. It never re-implements token mappings, adds contrast heuristics, or invents fallback values in JavaScript.

The same instinct applies to new features. Before adding a pattern, tile, gradient, or one-off variable, check whether the dither and tile system, the border pipeline, or the theme slots already express it. A new bespoke mechanism for one call site is almost always wrong.

The full mandate is in AGENTS.md. See Paint API for how the API reads the cascade.

#

The Release Pipeline

Releases are reproducible and need only this repository. A release regenerates the tokens, compiles the Sass with Dart Sass, processes the CSS and the version-stamped JS runtime through the bundle pipelines, precompresses every artifact as gzip and brotli deterministically, and zips the result.

The published archive under public/css and public/js keeps every version, so the docs render each version against the exact bundle it shipped. Releases are maintainer-only.

#

What This Site Loads from Elsewhere

The framework bundles fetch nothing from outside their own origin. Pattern images and fonts come from wherever plugins.css came from.

The docs site around them loads from four third-party origins, all in the page chrome or in a demo. Each one fails on its own page, so a host that blocks all four still serves every page here.

Mounting the engine in another Rails app brings all four with it. docs/ENGINE_INTEGRATION.md repeats this list with the CSP directives each origin needs.

#

License

The framework code is released under the MIT license. See the LICENSE file in the repository.

The MIT grant covers the code. The bundled fonts are licensed separately: the TRMNL pixel fonts by Heavyweight Digital Type Foundry, Inter, and the Nico fonts ship under the SIL Open Font License 1.1, and BlockKie under CC BY 3.0. Each font bundle download carries the full terms in its README and OFL.txt.

Highcharts is a commercial library the framework does not include. The chart examples load it from trmnl.com, where TRMNL serves it under its own license, and TRMNLCharts is only the adapter. A custom stack brings its own charting library and license: see Chart .

#

Start Here