No recompile, no fork

Drop a Lua file in ~/.cleat/plugins or install from the marketplace. Hot-reload on save.

Sandboxed with capability scan

Install from any URL — Cleat shows what permissions a plugin asks for before it runs. Sandbox enforces resource caps.

Per-connection loadouts

Different visualizations for your DB servers vs your edge nodes. Cleat remembers what's enabled where.

Marketplace

21 plugins and screensavers. All free, all open.

Filter by category, search by name. Install from inside Cleat — the app reads this same registry.

Auth Failures
auth-failures · v1.1.0

Surfaces failed SSH authentication attempts (user, source IP, timestamp)

Logs Plugin
Cleat 4930dda901f2 Source
Clock
clock · v1.0.0

Big ASCII clock — useful as well as ambient.

Utility Screensaver
Cleat 5ca38fc747c1 Source
CPU & Memory
cpu-memory · v1.0.1

CPU and memory usage monitoring

System Plugin
Cleat 8ef3b3cde359 Source
Disk
statusbar-disk · v1.1.0

Root filesystem in the status bar; all mountpoints in the panel

Status Bar Plugin
Cleat 801860da0797 Source
Disk Usage
disk-usage · v1.0.0

All mount points: % used bar chart + size/used/avail/fs table

System Plugin
Cleat f0b3255fc477 Source
Docker Containers
docker-containers · v1.0.1

Running Docker containers (name, image, status, ports, uptime)

Docker Plugin
Cleat 51758f10a228 Source
Error Log Monitor
error-log-monitor · v1.1.0

Tails system logs for ERROR/CRITICAL severity entries

Logs Plugin
Cleat 38078251f187 Source
Listening Ports
listening-ports · v1.0.0

TCP services listening on the host (port, protocol, process, PID)

Network Plugin
Cleat a58656ed4d65 Source
Load
statusbar-load · v1.1.1

System load average for status bar (with rich tooltip)

Status Bar Plugin
Cleat d9aa64e8a453 Source
Load Average
load-average · v1.0.1

System load average with trend graphs

System Plugin
Cleat 2d0b93eb3a4b Source
Matrix Rain
matrix-rain · v1.0.0

Falling green characters with bright heads and fading tails.

Animations Screensaver
Cleat 238787664d25 Source
Mem
statusbar-memory · v1.1.0

Memory usage in the status bar; multi-series breakdown in the panel

Status Bar Plugin
Cleat 6665f62389f6 Source
Net
statusbar-network · v1.0.0

Primary interface throughput (bytes/sec) for the status bar

Status Bar Plugin
Cleat a0547318bf4f Source
Network Traffic
network-traffic · v1.0.0

Per-interface RX/TX throughput with history graph

Network Plugin
Cleat 137a575b10e4 Source
Pipes
pipes · v1.0.0

Growing pipe network in box-drawing characters.

Animations Screensaver
Cleat 331b21868da6 Source
Ship's Log
ships-log · v1.0.0

Vintage typewriter logs from HMS Cleat, with a sysadmin streak.

Themed Screensaver
Cleat d7414d41d155 Source
SSH Latency
ssh-latency · v1.0.0

SSH round-trip latency monitoring

Network Plugin
Cleat b2f30f995369 Source
Starfield
starfield · v1.0.0

Parallax star field flying through deep space.

Animations Screensaver
Cleat 2db8119ec418 Source
System Info
system-info · v1.0.1

Basic system information

System Plugin
Cleat 473ac9a43e34 Source
Up
statusbar-uptime · v1.1.0

System uptime — status bar segment + reconnect-resilience panel

Status Bar Plugin
Cleat 0b8100003c71 Source
URL Test Demo
url-test-demo · v1.0.2

Test plugin used to exercise the install-from-URL + marketplace flows. Forked from cleat's bundled system-info plugin with a distinct id.

System Plugin needs Cleat 0.1.0+
Cleat c15f701a4167 Source
Nothing matches that search.
Try a different query, or contribute a plugin.
Write one in an afternoon

Hello world is six lines of Lua.

The Cleat plugin API is small on purpose. Hook into the right events, draw into the right surface, store what you need in cleat.kv. The rest is your code.

statusbar-uptime / plugin.lua Lua · 16 lines
local plugin = {
  name    = "statusbar-uptime",
  version = "1.0.0",
  needs   = { "ssh.exec", "statusbar.segment" },
}

function plugin:on_connect(conn)
  -- run `uptime -p` every 30s, write to a segment
  conn:every(30, function()
    local out = conn:exec("uptime -p")
    cleat.statusbar:set("uptime", {
      label = out:gsub("^up ", ""),
      tone  = "dim",
    })
  end)
end

return plugin
1
Declare what you need
The needs table is the capability scan. Cleat shows it to the user before installing. Asking for less is a feature.
2
Hook a lifecycle event
on_connect, on_disconnect, on_command, on_tab_focus, and friends — your code runs when something happens, not on a polling loop.
3
Draw, notify, persist
Use cleat.statusbar, cleat:notify(), cleat.kv, cleat.widget. Real APIs. No HTML wrapper.
Hold · Fast.
Cleat is what you make it.