Documentation
From first install to production operations. Learn how to deploy Docker stacks, manage databases, rotate keys, and monitor your infrastructure.
Install strut on macOS or Linux. No build step — it's a pure bash application, so there's nothing to compile either way.
Get from zero to a deployed stack in four commands. This guide walks through initializing a project, scaffolding a stack, configuring it, and deploying to a VPS.
Running strut with no arguments from a terminal opens an interactive
Ready to deploy?
$ brew install gfargo/tap/strutOr via shell: curl -fsSL https://raw.githubusercontent.com/gfargo/strut/main/install.sh | bash
strut operates across two filesystem trees that collaborate at runtime:
strut uses a layered configuration system: project-level settings in strut.conf, per-stack settings in stack directories, and per-environment secrets in dotenv files.
Define which stacks deploy to which hosts in a single place. Added in v0.22.0.
Complete reference for every strut command, flag, and subcommand. Each command supports --help for inline usage (e.g. strut my-stack backup --help).
strut ships with AI agent context — a steering doc set and one operational skill — that help coding assistants understand the project and execute strut workflows correctly. These work with any agent t
Built-in Model Context Protocol server. Exposes strut operations as callable tools so AI agents (Claude, Cursor, Kiro, and others) can inspect and operate your stacks directly, without you copy-pastin
Deploy and manage Docker stacks on VPS infrastructure. strut supports local deploys, full VPS release pipelines, dry-run previews, service profiles, and one-command rollback.
Two commands for the "edit locally, deploy remotely" workflow. ship handles the full git-to-deploy cycle in one step; rebuild builds Docker images on the target host.
Deploy a strut-managed Docker stack to a VPS from GitHub Actions in one step.
Automatically deploy a stack when you push to its branch — either by polling origin on an interval, or by running an HTTP receiver that GitHub/GitLab calls directly.
Guide to bootstrapping strut on a remote VPS so that release, update, and other remote commands work correctly.
Run one-time setup scripts on remote hosts. The provision command handles uploading and executing host-specific provisioning scripts via SSH.
Blue-green deploy stands the new version of a stack up alongside the current one, waits until it passes health checks, swaps the reverse proxy to point at it, then drains and stops the old version. If
strut automatically saves a snapshot of your container images before each deploy. If something goes wrong, you can roll back to the previous state with a single command.
Backup and restore procedures for Postgres, Neo4j, MySQL, and SQLite databases managed by strut.
Manage environment secrets across local and VPS environments. strut provides tools to generate, source from secret managers, sync, encrypt at rest, diff, rotate, and validate .env files.
Run one strut command across many stacks. Since v0.15.0.
User-defined scripts that run at strut lifecycle points. Since v0.9.0.
Fire events to Slack, Discord, or a generic webhook when deploys, backups, health checks, and drift detection run. Since v0.9.0.
Procedures for rotating all credentials associated with a strut stack — SSH keys, API keys, database passwords, GitHub secrets, and environment variables.
Configuration drift occurs when VPS runtime configuration differs from git-tracked configuration. strut can detect, report, and automatically fix drift.
Configure custom domains and SSL/TLS certificates for strut stacks using Let's Encrypt.
Manage Tailscale HTTPS certificates on remote hosts. Handles renewal, permission setup for Caddy, and service reload.
Manage a system-level Caddy reverse proxy across your hosts. Unlike Docker-based stacks, the gateway runs as a systemd service and is managed via Caddyfile deployment.
Self-hosted monitoring with Prometheus, Grafana, and Alertmanager for strut stacks.
strut provides dynamic volume management driven by volume.conf in each stack.
Cross-stack security and operational audit. Since v0.11.0.
Audit existing VPS Docker setups and migrate them to strut management.
Validate and check the integrity of strut stacks — whether creating a new one or verifying an existing one is healthy.
strut can anonymize PII when syncing production databases to local development environments. This helps teams comply with GDPR, HIPAA, and other data protection requirements.
Troubleshooting and debugging procedures for strut VPS deployments.
strut supports local stack management for development, including environment sync and database sync from production.
How to set up a development environment, run tests, lint code, and submit pull requests to strut.
Standards for shell modules, function naming, error handling, configuration access, and testing patterns used across the strut codebase.
Step-by-step guide for extending the strut CLI with a new command.
How strut is organized on disk — the engine installation at ~/.strut/, the user project layout, and what each module is responsible for.