usetrmnl/trmnl-home-assistant

Add-ons and plugins for Home Assistant designed for TRMNL e-ink displays.

169

stars

199

commits

TypeScript

primary language

Aug 31, 2026

updated

README

AI Coauthored

TRMNL HA

TRMNL Logo

Send Home Assistant dashboard screenshots to your TRMNL e-ink display with advanced dithering optimized for e-paper screens.

Add repository to Home Assistant

Note: This add-on can capture screenshots from any website, not just Home Assistant dashboards. See Standalone Mode for detailed setup.

Features

  • E-ink optimized dithering - Floyd-Steinberg and Ordered algorithms for crisp e-paper rendering
  • TRMNL webhook integration - Automatic dashboard uploads to TRMNL devices
  • Fetch URL (pull mode) - Direct URL for on-demand screenshots, works with ESPHome and custom e-ink setups
  • Scheduled captures - Cron-based automation with Web UI management
  • Device presets - Pre-configured settings for 24+ popular e-ink displays
  • Crash recovery - Automatic browser recovery and process supervision
  • High performance - Powered by Bun runtime for fast startup and low memory

Installation

  1. Add this repository to Home Assistant:

    • Go to SettingsAdd-onsAdd-on StoreRepositories
    • Add: https://github.com/usetrmnl/trmnl-home-assistant
  2. Install the TRMNL HA add-on

  3. Configure your access token:

    • In Home Assistant: ProfileLong-Lived Access TokensCreate Token
    • Add to the add-on configuration
  4. Start the add-on and open the Web UI

Home Assistant Container (Docker)

Running HA as a Docker container? No problem! Just one command:

docker run -d --name trmnl-ha \
  --restart unless-stopped \
  -e HOME_ASSISTANT_URL=http://YOUR_HOST_IP:8123 \
  -e ACCESS_TOKEN=your_token_here \
  -p 10000:10000 \
  -v ./trmnl-data:/data \
  ghcr.io/usetrmnl/trmnl-ha-amd64:latest # ARM64 (Pi 4/5, Apple Silicon): ghcr.io/usetrmnl/trmnl-ha-aarch64:latest

Note: Replace YOUR_HOST_IP with your machine's IP (e.g., 192.168.1.100). Container names like homeassistant won't work since HA uses host networking.

Volume mount: -v ./trmnl-data:/data is recommended. -v ./trmnl-data:/app/data also works.

Then open http://localhost:10000 - that's it!

See full Docker setup for Docker Compose and timezone configuration.

Proxmox Users

If running Home Assistant OS in Proxmox, set the VM host type to host for Chromium to work properly.

Security

Important: This add-on is designed for trusted home networks.

  • The Web UI (port 10000) has no built-in authentication
  • Always use Ingress (sidebar integration) instead of direct port access
  • Never expose port 10000 directly to the internet
  • Access tokens are stored securely in Home Assistant's add-on configuration

Documentation

TopicDescription
ConfigurationRequired and optional settings
Web UIUsing the web interface
API ReferenceScreenshot endpoint parameters
Fetch URL (Pull Mode)On-demand screenshots via direct URL
Device PresetsSupported e-ink displays
Scheduled CapturesCron-based automation
Sending screenshots to a serverTRMNL devices, Terminus, and custom endpoints
TroubleshootingCommon issues and fixes
Local DevelopmentDevelopment setup

Attribution

This project is based on the puppet Home Assistant add-on by Paulus Schoutsen.

See the NOTICE file for complete attribution and modification details.

License

Copyright (c) Paulus Schoutsen (original work) Copyright (c) 2024-2025 TRMNL (enhancements and modifications)

Licensed under the Apache License 2.0

Contributors

ikraamg

194 commits

alikaragoz

1 commits

bencope

1 commits

davidgiesberg

1 commits

usetrmnl/trmnl-home-assistant

Add-ons and plugins for Home Assistant designed for TRMNL e-ink displays.

169

stars

199

commits

TypeScript

primary language

Aug 31, 2026

updated

README

AI Coauthored

TRMNL HA

TRMNL Logo

Send Home Assistant dashboard screenshots to your TRMNL e-ink display with advanced dithering optimized for e-paper screens.

Add repository to Home Assistant

Note: This add-on can capture screenshots from any website, not just Home Assistant dashboards. See Standalone Mode for detailed setup.

Features

  • E-ink optimized dithering - Floyd-Steinberg and Ordered algorithms for crisp e-paper rendering
  • TRMNL webhook integration - Automatic dashboard uploads to TRMNL devices
  • Fetch URL (pull mode) - Direct URL for on-demand screenshots, works with ESPHome and custom e-ink setups
  • Scheduled captures - Cron-based automation with Web UI management
  • Device presets - Pre-configured settings for 24+ popular e-ink displays
  • Crash recovery - Automatic browser recovery and process supervision
  • High performance - Powered by Bun runtime for fast startup and low memory

Installation

  1. Add this repository to Home Assistant:

    • Go to SettingsAdd-onsAdd-on StoreRepositories
    • Add: https://github.com/usetrmnl/trmnl-home-assistant
  2. Install the TRMNL HA add-on

  3. Configure your access token:

    • In Home Assistant: ProfileLong-Lived Access TokensCreate Token
    • Add to the add-on configuration
  4. Start the add-on and open the Web UI

Home Assistant Container (Docker)

Running HA as a Docker container? No problem! Just one command:

docker run -d --name trmnl-ha \
  --restart unless-stopped \
  -e HOME_ASSISTANT_URL=http://YOUR_HOST_IP:8123 \
  -e ACCESS_TOKEN=your_token_here \
  -p 10000:10000 \
  -v ./trmnl-data:/data \
  ghcr.io/usetrmnl/trmnl-ha-amd64:latest # ARM64 (Pi 4/5, Apple Silicon): ghcr.io/usetrmnl/trmnl-ha-aarch64:latest

Note: Replace YOUR_HOST_IP with your machine's IP (e.g., 192.168.1.100). Container names like homeassistant won't work since HA uses host networking.

Volume mount: -v ./trmnl-data:/data is recommended. -v ./trmnl-data:/app/data also works.

Then open http://localhost:10000 - that's it!

See full Docker setup for Docker Compose and timezone configuration.

Proxmox Users

If running Home Assistant OS in Proxmox, set the VM host type to host for Chromium to work properly.

Security

Important: This add-on is designed for trusted home networks.

  • The Web UI (port 10000) has no built-in authentication
  • Always use Ingress (sidebar integration) instead of direct port access
  • Never expose port 10000 directly to the internet
  • Access tokens are stored securely in Home Assistant's add-on configuration

Documentation

TopicDescription
ConfigurationRequired and optional settings
Web UIUsing the web interface
API ReferenceScreenshot endpoint parameters
Fetch URL (Pull Mode)On-demand screenshots via direct URL
Device PresetsSupported e-ink displays
Scheduled CapturesCron-based automation
Sending screenshots to a serverTRMNL devices, Terminus, and custom endpoints
TroubleshootingCommon issues and fixes
Local DevelopmentDevelopment setup

Attribution

This project is based on the puppet Home Assistant add-on by Paulus Schoutsen.

See the NOTICE file for complete attribution and modification details.

License

Copyright (c) Paulus Schoutsen (original work) Copyright (c) 2024-2025 TRMNL (enhancements and modifications)

Licensed under the Apache License 2.0

Contributors

ikraamg

194 commits

alikaragoz

1 commits

bencope

1 commits

davidgiesberg

1 commits

Languages

TypeScript

90.7%

HTML

3.3%

Shell

2.7%

JavaScript

2.5%