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, 4-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 source lives at github.com/usetrmnl/trmnl-framework. Star it, fork it, or clone it from there.

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

Framework development happens against the docs: edit the Sass or JS, watch it rebuild, and check the result on the page it documents.

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 two files: the readable plugins.js and the minified plugins.min.js production serves, both stamped with the version they were released from. 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 what CSS computed and converts it. It never re-implements color rules, adds contrast tweaks, 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 does its reading.

#

The Release Pipeline

Releases are reproducible and need only this repository. A release regenerates the tokens, compiles the Sass, and minifies the CSS and the version-stamped JS runtime. Every artifact is then precompressed as gzip and brotli, and zipped.

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. Fonts, the only asset they load by URL, 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 degrades only the feature that uses it, so a host that blocks all four still serves every page here.

The docs site can mount as an engine in another Rails app; doing so brings all four origins 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; BlockKie ships 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