Installation
One prebuilt binary, no runtime dependencies, about a second to install on a CI runner. Every release ships five targets, with SLSA build provenance attestations attached: Linux (glibc) and macOS on x86_64 and aarch64, and Windows on x86_64.
Choose an installation method
Section titled “Choose an installation method”- Install on this computer: use the shell installer on Linux or macOS, or the PowerShell installer on Windows. If you use Homebrew, install from the tap.
- Keep a team or CI on one version: pin with mise, or pin the installer URL.
- Build with Rust: install from source.
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@1.0.0"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/trellisVerifying 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 1.0.0
$ 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.
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/v1.0.0/trellis-gleam-installer.sh | shPrebuilt archives for every target are on the releases page.
After installation
Section titled “After installation”Shell 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. They also 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.
Two limitations worth knowing. Completing after -C uses the directory you’re
standing in, not the one you passed. And --bump offers the three bare levels
only. The <pkg>=<level> form is not completed, since the completer is handed
just the partial word.
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.