trmnl-cli

CLI tool for TRMNL e-ink displays. Send, validate, preview, and track payloads — all from your terminal. View on GitHub.

Install

Install globally via npm:

npm install -g trmnl-cli@latest

Requires Node.js 22.6.0 or later.

Or run without installing:

npx trmnl-cli@latest send --help

Plugins

Manage multiple TRMNL displays with named webhooks:

# Add your first plugin
trmnl plugin add home "https://trmnl.com/api/custom_plugins/YOUR_UUID"

# Add more plugins
trmnl plugin add office "https://trmnl.com/api/custom_plugins/xyz789"

# List all plugins
trmnl plugin

# Set a default
trmnl plugin default home

# Remove a plugin
trmnl plugin rm office

Send

Send content to your TRMNL display.

# Direct HTML content
trmnl send --content '<div class="layout">Hello TRMNL!</div>'

# From a file
trmnl send --file ./output.html

# To a specific plugin
trmnl send --file ./output.html --plugin office

# From stdin (piped)
echo '{"merge_variables":{"content":"..."}}' | trmnl send

Options

FlagDescription
-c, --content <html>HTML content to send
-f, --file <path>Read content from file
-p, --plugin <name>Plugin to use (default: default plugin)
-w, --webhook <url>Override webhook URL directly
--skip-validationSkip payload validation
--skip-logDon’t log to history
--jsonOutput result as JSON

Validate

Validate a payload without sending it. Checks size against your tier limit.

trmnl validate --file ./output.html
trmnl validate --content "..." --tier plus

Options

FlagDescription
-c, --content <html>HTML content to validate
-f, --file <path>Read content from file
-t, --tier <tier>Override tier (free or plus)
--jsonOutput result as JSON

Config

Show your current configuration.

trmnl config

Tier

Get or set the payload size tier.

trmnl tier         # Show current tier
trmnl tier plus    # Set to plus (5KB limit)
trmnl tier free    # Set to free (2KB limit)

Tier limits

TierPayload LimitRate Limit
Free2 KB (2,048 bytes)12 requests/hour
Plus5 KB (5,120 bytes)30 requests/hour

History

View send history with filters.

trmnl history              # Last 10 sends
trmnl history --last 20    # Last N sends
trmnl history --today      # Today's sends
trmnl history --failed     # Failed sends only
trmnl history --plugin home  # Filter by plugin
trmnl history stats        # Statistics
trmnl history clear --confirm  # Clear history

Configuration

Config file

Settings are stored in ~/.trmnl/config.json:

{
  "plugins": {
    "home": {
      "url": "https://trmnl.com/api/custom_plugins/...",
      "description": "Living room display"
    }
  },
  "defaultPlugin": "home",
  "tier": "free"
}

Environment variables

VariableDescription
TRMNL_WEBHOOKWebhook URL (overrides config, highest priority)

Data directory

All data is stored in ~/.trmnl/:

FileDescription
config.jsonPlugin and tier configuration
history.jsonlSend history (one JSON entry per line)