Fast, stateless, SSH-only infrastructure automation built in Rust.
- Blazing fast — built in Rust with async SSH, executes across hundreds of hosts concurrently
- Zero dependencies — no agent, no runtime, no Python on target machines. Just SSH.
- Stateless — no state files or databases. Desired state is computed fresh every run.
- Idempotent — two-phase check/apply pattern. Run plans repeatedly, only necessary changes are applied.
- Modern config — uses KDL for clean, readable inventory and plan files
- 7 built-in modules — shell, package, user, systemd, container, file, disk
- Dry-run support — preview changes before applying them
- Interactive TUI — real-time progress with a terminal UI (with non-TTY fallback)
Download the latest binary from GitHub Releases:
curl -L https://github.com/alessiopcc/glidesh/releases/latest/download/glidesh-linux-amd64 -o glidesh
chmod +x glidesh
sudo mv glidesh /usr/local/bin/Requires Rust 1.86+.
git clone https://github.com/alessiopcc/glidesh.git
cd glidesh
cargo build --releaseThe binary will be at target/release/glidesh.
Define your targets in inventory.kdl:
group "web" {
host "web-1" "192.168.1.10" user="deploy"
host "web-2" "192.168.1.11" user="deploy"
}Describe the desired state in plan.kdl:
plan "setup" {
target "web"
step "Install nginx" {
package "nginx" state="present"
}
step "Start nginx" {
systemd "nginx" {
state "started"
enabled #true
}
}
}Run it:
glidesh run -i inventory.kdl -p plan.kdlPreview changes without applying:
glidesh run -i inventory.kdl -p plan.kdl --dry-runFull documentation is available at the glidesh documentation site.
See the examples/ directory for ready-to-use examples:
| Example | Description |
|---|---|
| hello-echo | Minimal example — deploy an HTTP echo server |
| web-server | Nginx with templated config |
| user-setup | Create users with SSH keys and groups |
| container-app | Containerized app with ports and volumes |
| disk-management | Dynamic disk formatting with register/loop |
| multi-tier | Multi-group setup with plan includes |
| external-module | External plugin module to set system MOTD |
| jump-host | Connect to hosts through an SSH bastion |
| host-module | Run a command once and broadcast its result to every host |
Licensed under the MIT License.
