Skip to content

Installation

Griffen Fargo edited this page Jul 10, 2026 · 4 revisions

Installation

Install strut on macOS or Linux. No build step — it's a pure bash application, so there's nothing to compile either way.

Choose an Install Method

strut installs one of two ways. Pick whichever fits how you manage tools on this machine — both are fully supported and strut upgrade works correctly either way.

Git-based Homebrew
Command install.sh (curl one-liner, below) brew install gfargo/tap/strut
Best for Most users — fastest path, works anywhere bash + git do You already manage CLI tools with brew
Installs to ~/.strut (configurable) Homebrew's standard prefix
Upgrade strut upgrade runs git pull strut upgrade runs brew upgrade

Option 1: Git-based Install

Clones strut to ~/.strut and symlinks the strut binary onto your PATH.

curl -fsSL https://raw.githubusercontent.com/gfargo/strut/main/install.sh | bash

Prefer not to pipe a script into bash, or want to review it first? Do the same thing by hand:

git clone https://github.com/gfargo/strut.git ~/.strut
export PATH="$HOME/.strut:$PATH"

Add the PATH export to your shell profile (~/.bashrc, ~/.zshrc, etc.) to persist it. This is exactly what the installer script does — no functional difference, just automated vs. by hand.

Environment Variables

The installer respects these environment variables:

Variable Default Description
STRUT_HOME ~/.strut Installation directory
STRUT_REPO https://github.com/gfargo/strut.git Git repository URL
STRUT_BRANCH main Branch to install from

Option 2: Homebrew

brew install gfargo/tap/strut

strut upgrade automatically detects the Homebrew install and delegates to brew upgrade gfargo/tap/strut — no extra setup needed.


Upgrade

strut upgrade

strut upgrade is install-method-aware (since v0.29.0): it detects how strut was installed and uses the matching mechanism automatically.

Install method Upgrade behavior
Git-based (default) git pull on STRUT_HOME
Homebrew brew upgrade gfargo/tap/strut
Unknown Prints guidance to re-run the installer

If you installed via the git-based method, re-running the installer also works:

curl -fsSL https://raw.githubusercontent.com/gfargo/strut/main/install.sh | bash

Both preserve your project files — only the ~/.strut engine is updated.

Suppressing the Update Check

strut checks for new versions on every invocation (once per 24 hours). To silence the nag:

export STRUT_NO_UPDATE_CHECK=1

Or pass the variable inline: STRUT_NO_UPDATE_CHECK=1 strut my-stack deploy --env prod.

Uninstall

Git-based install:

curl -fsSL https://raw.githubusercontent.com/gfargo/strut/main/install.sh | bash -s -- --uninstall

This removes the symlink and deletes ~/.strut. Your project directories (stacks, configs, env files) are not touched.

Homebrew install:

brew uninstall gfargo/tap/strut

Symlink Behavior (git-based install)

The installer creates a symlink to the strut binary:

  • If /usr/local/bin is writable → symlinks there
  • Otherwise → symlinks to ~/.local/bin (and reminds you to add it to PATH)

AI Agent Skills

strut ships with skills for operational workflows, installed separately via strut skills install --format <editor> (see Agent Steering) — this is independent of which method you used to install the CLI itself.

The installer prints a one-time reminder about this after install; suppress it with:

curl -fsSL https://raw.githubusercontent.com/gfargo/strut/main/install.sh | bash -s -- --no-skills

Prerequisites

  • git — required for installation and VPS operations
  • Docker + Docker Compose — required on any machine running stacks
  • bash 4+ — strut is a bash application
  • shellcheck + bats-core — optional, for development/testing

Supported Platforms

  • macOS (Intel and Apple Silicon)
  • Linux (Ubuntu, Debian, and other distributions with bash 4+)

Clone this wiki locally