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

Browse + install from inside Cleat.

A searchable marketplace of community plugins, each with capability-scan preview before it runs. Live listing arrives at launch.

CLEAT Coming soon Product screenshots arrive at launch.
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.