Skip to content

alessiopcc/glidesh

Repository files navigation

glidesh

glide·sh

Fast, stateless, SSH-only infrastructure automation built in Rust.

License Rust


Features

  • 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)

Install

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/

From source

Requires Rust 1.86+.

git clone https://github.com/alessiopcc/glidesh.git
cd glidesh
cargo build --release

The binary will be at target/release/glidesh.

Quick Start

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.kdl

Preview changes without applying:

glidesh run -i inventory.kdl -p plan.kdl --dry-run

Documentation

Full documentation is available at the glidesh documentation site.

Examples

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

License

Licensed under the MIT License.

About

Fast, stateless, SSH-only infrastructure automation

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors

Languages