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.
Shell installer
Section titled “Shell installer”On Linux and macOS:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tylerbutler/trellis/releases/latest/download/trellis-gleam-installer.sh | shPowerShell installer
Section titled “PowerShell installer”On Windows:
powershell -ExecutionPolicy Bypass -c "irm https://github.com/tylerbutler/trellis/releases/latest/download/trellis-gleam-installer.ps1 | iex"Homebrew
Section titled “Homebrew”brew install tylerbutler/tap/trellismise / asdf
Section titled “mise / asdf”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:
mise use "github:tylerbutler/trellis@0.11.2"From source
Section titled “From source”On crates.io the crate is trellis-gleam — trellis was taken — but the
installed binary is named trellis either way:
cargo install trellis-gleam# or straight from the repository:cargo install --git https://github.com/tylerbutler/trellisShell completions
Section titled “Shell completions”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:
eval "$(trellis completions bash)"
# ~/.zshrc — after compiniteval "$(trellis completions zsh)"
# ~/.config/fish/config.fishtrellis completions fish | source
# ~/.elvish/rc.elveval (trellis completions elvish | slurp)
# $PROFILE (PowerShell)trellis completions powershell | Out-String | Invoke-ExpressionEvaluate 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.
Man pages
Section titled “Man pages”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:
sudo install -Dm644 man/*.1 -t /usr/local/share/man/man1/man trellisman trellis-runEverything in those pages is also on the CLI reference page.
Pinning a version in CI
Section titled “Pinning a version in CI”The installer URLs above resolve latest. To pin a specific version, replace
latest/download with download/v<version>:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tylerbutler/trellis/releases/download/v0.11.2/trellis-gleam-installer.sh | shPrebuilt archives for every target are on the releases page.
Verifying it
Section titled “Verifying it”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:
$ trellis --versiontrellis 0.11.2
$ trellis doctorchecked: member globs resolve and every package has a parseable gleam.tomlchecked: 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.