Surfaces failed SSH authentication attempts (user, source IP, timestamp)
Extend Cleat in Lua.
Cleat is built as a host. Plugins are Lua scripts with a real platform API — programmable status-bar segments, live monitoring widgets, custom screensavers, per-connection loadouts. Browse, install, and auto-update from inside the app.
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.
21 plugins and screensavers. All free, all open.
Filter by category, search by name. Install from inside Cleat — the app reads this same registry.
Big ASCII clock — useful as well as ambient.
CPU and memory usage monitoring
Root filesystem in the status bar; all mountpoints in the panel
All mount points: % used bar chart + size/used/avail/fs table
Running Docker containers (name, image, status, ports, uptime)
Tails system logs for ERROR/CRITICAL severity entries
TCP services listening on the host (port, protocol, process, PID)
System load average for status bar (with rich tooltip)
System load average with trend graphs
Falling green characters with bright heads and fading tails.
Memory usage in the status bar; multi-series breakdown in the panel
Primary interface throughput (bytes/sec) for the status bar
Per-interface RX/TX throughput with history graph
Growing pipe network in box-drawing characters.
Vintage typewriter logs from HMS Cleat, with a sysadmin streak.
SSH round-trip latency monitoring
Parallax star field flying through deep space.
Basic system information
System uptime — status bar segment + reconnect-resilience panel
Test plugin used to exercise the install-from-URL + marketplace flows. Forked from cleat's bundled system-info plugin with a distinct id.
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.
needs table is the capability scan. Cleat shows it to the user before installing. Asking for less is a feature.on_connect, on_disconnect, on_command, on_tab_focus, and friends — your code runs when something happens, not on a polling loop.cleat.statusbar, cleat:notify(), cleat.kv, cleat.widget. Real APIs. No HTML wrapper.