Skip to content

Installation

One prebuilt binary, no runtime dependencies, about a second to install on a CI runner. Every release ships five targets — Linux (glibc) and macOS on x86_64 and aarch64, Windows on x86_64 — with SLSA build provenance attestations attached.

On Linux and macOS:

Terminal window
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tylerbutler/trellis/releases/latest/download/trellis-gleam-installer.sh | sh

On Windows:

Terminal window
powershell -ExecutionPolicy Bypass -c "irm https://github.com/tylerbutler/trellis/releases/latest/download/trellis-gleam-installer.ps1 | iex"
Terminal window
brew install tylerbutler/tap/trellis

Via the github backend. This is how a consuming workspace pins trellis in .tool-versions alongside its other tools, so every contributor and CI runner gets the same version:

Terminal window
mise use "github:tylerbutler/trellis@0.11.2"

On crates.io the crate is trellis-gleamtrellis was taken — but the installed binary is named trellis either way:

Terminal window
cargo install trellis-gleam
# or straight from the repository:
cargo install --git https://github.com/tylerbutler/trellis

Completions are computed by the binary as you type rather than baked into a static script, so they never drift from the flags you actually have — and they offer real values: package names, task names, and changelog kinds read from the workspace you’re standing in.

Add one line to your shell’s startup file:

~/.bashrc
eval "$(trellis completions bash)"
# ~/.zshrc — after compinit
eval "$(trellis completions zsh)"
# ~/.config/fish/config.fish
trellis completions fish | source
# ~/.elvish/rc.elv
eval (trellis completions elvish | slurp)
# $PROFILE (PowerShell)
trellis completions powershell | Out-String | Invoke-Expression

Evaluate the snippet on startup rather than saving it into a completions directory: an eval always matches the binary you have, while a saved copy silently goes stale after an upgrade.

One limitation worth knowing: completing after -C uses the directory you’re standing in, not the one you passed.

trellis.1 and a page per subcommand ship inside the release archives under man/. Neither the shell installer nor the Homebrew formula installs them automatically, so point man at the extracted archive or install them yourself:

Terminal window
sudo install -Dm644 man/*.1 -t /usr/local/share/man/man1/
man trellis
man trellis-run

Everything in those pages is also on the CLI reference page.

The installer URLs above resolve latest. To pin a specific version, replace latest/download with download/v<version>:

Terminal window
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tylerbutler/trellis/releases/download/v0.11.2/trellis-gleam-installer.sh | sh

Prebuilt archives for every target are on the releases page.

From anywhere inside a workspace — trellis finds the root by walking up, like git or cargo, to the first gleam.toml carrying a [tools.trellis] table, or to the git repository root when no manifest carries one:

Terminal window
$ trellis --version
trellis 0.11.2
$ trellis doctor
checked: member globs resolve and every package has a parseable gleam.toml
checked: path dependencies stay inside the workspace; graph is acyclic
...
ok: 4 package(s) (1 workspace, 0 git_only, 3 hex), 0 warning(s)

If the workspace isn’t set up yet, start with the configuration guide.