Download · v0.29 · Public beta
Get Cleat.
Native SSH/SFTP client for macOS, Linux, and Windows. Every build starts with 14 days fully unlocked. When you're ready, a license keeps it that way.
All builds
Pick your binary.
One C++ codebase, three platforms. No Electron, no web view, no Chromium dragged in for the ride.
macOS
12.0 Monterey or newer · Universal (Apple Silicon + Intel)
Linux
x86_64 · arm64 · glibc 2.28+
Windows
Windows 10 1809+ / 11 · x64
Verify your download
SHA-256 checksums for this release. Compare against shasum -a 256 <file> (macOS/Linux) or Get-FileHash <file> (Windows).
Cleat-0.29-macOS-universal.dmg
aa7a01f7e2b3354c3ae29bdf0b1ab0583d64a2fdb50eff6abd6b2782b87bbac3
Cleat-0.29-Linux-x86_64.AppImage
aaedd514c643b457a4f0f30161ed86a1788d7663278019b9cc537d3c0a9ef960
Cleat-0.29-Linux-x86_64.deb
96c54a66dee42b058ae874fe3112c5ca66cfd5c6c3f79dfef2a39ed6dee0b81b
Cleat-0.29-Linux-x86_64.rpm
7aafd2792cddec9b20a553811aa278d82726cd0a2d3696bfd4f53bcf86d2c561
Cleat-0.29-Windows-x64-Setup.exe
2cbcf71567a9acbdf4ba8aebce1fc567a9d95181a6528ab36d8aada5e26a1a80
Cleat-0.29-Windows-x64.zip
2bdb6638d2b3e0682d8397b34efb91c7b64917600cf77e30eb7336edac033b7c
What's new
v0.29 · 2026-08-31
What's Changed
- chore(ci): drop ci.yml's unreachable hosted macOS/Windows matrix
- fix(#352): preview WebP inline, and HEIC/AVIF/TIFF via the OS codecs
- feat(#167): SSH agent over Windows named pipes
- perf(ci): cut Linux CI from 22 minutes to a warm rebuild
- fix: focus the terminal when a connection opens
- feat(#44): broadcast mode — type once, reach every session
- feat(#44): multi-select connections and run a command on them
- feat(#414): put the broadcast group in reach of the UI
- feat(#413): snippet library — store, manager and run paths
- feat(#413): multi-host comparison view
- feat(#413): bind a hotkey to a snippet
- chore(spry): adopt ReorderableList from spry v0.4.1
- test(#353): Swarm fixtures from a live three-node cluster
- feat(#356): Swarm types and parsers
- feat(#357): SwarmCollector — compound exec, section split, replay
- feat(#360): SwarmMonitor poll loop, publication and watchdog (part 1)
- feat(#360): SwarmSession — SSH connection lifecycle (part 2, closes #360)
- feat(#362): SwarmManager, view.swarm, and the replay flag wired up
- feat(#355): map success and warning into the Spry token bag
- feat(#363): the Swarm pane — health strip, service tree, detail, density
- feat(#364): Nodes and Tasks tables, and an events feed built from snapshot diffs
- feat(#367): alert rule model, pure evaluator and state machine
- feat(#369): Swarm alert delivery — toasts and an inbox tab
- feat(#368): persist alert state and rehydrate it across restarts
- feat(#374): silences as matchers, maintenance windows, and ack that means acknowledged
- feat(#435): persist silences and maintenance windows across restarts
- feat(#361): manager failover with a classification that knows when not to fail over
- feat(#365): docker events as a poll accelerator
- feat(#366): cluster metrics and sparklines
- feat(#370): alert delivery via webhooks
- feat(#371): OS-native notifications for alerts
- feat(#372): audible alerts
- feat(#373): run a local command on an alert
- feat(#375): alert rule editor
- feat(#376): SwarmController, confirmation modal and read-only enforcement
- feat(#377): audit trail — record before dispatch, and a tab to read it
- feat(#378): convergence watch and pending-intent display
- feat(#379): handoff into the terminal and file browser
- feat(#358): swarm cluster definitions in connections.db
- feat(#380): the full swarm settings schema, wired
- feat(#380): the Swarm cluster editor
- feat(#380): the webhook editor and the sound picker
- feat(#354): shared draw primitives for lines, arcs and polygons
- feat(#381): seeded default alert rules and Swarm documentation
- Swarm modal padding, drag-to-reorder candidate managers, and icon row actions
- feat: resizable dashboard columns, and a row detail modal
- Swarm testing-pass fixes: control, handoff, and the crashes found along the way
- fix(#460): connect stored alert commands to the runner, and let one be written