Skip to content

Install and upgrade

Tarsail publishes prebuilt binaries through GitHub Releases.

The install scripts download the matching asset for your operating system and CPU architecture, verify it against the release SHA256SUMS file, install it into a PATH directory, and leave the tarsail command available globally.

PowerShell on Windows, macOS, or Linux:

Terminal window
irm https://tarsail.plystra.com/install.ps1 | iex

POSIX shell on Linux or macOS:

Terminal window
curl -fsSL https://tarsail.plystra.com/install.sh | sh

If curl is unavailable:

Terminal window
wget -qO- https://tarsail.plystra.com/install.sh | sh

Open a new terminal if your shell does not see the updated PATH immediately.

Terminal window
tarsail version
tarsail help

On Windows, the PowerShell installer adds this user PATH directory by default:

%LOCALAPPDATA%\Programs\Tarsail\bin

On Linux and macOS, both installers use this default install directory:

/usr/local/bin

The Unix installers use sudo only when the target directory is not writable.

Run the same install command again.

PowerShell:

Terminal window
irm https://tarsail.plystra.com/install.ps1 | iex

POSIX shell:

Terminal window
curl -fsSL https://tarsail.plystra.com/install.sh | sh

The script replaces the existing tarsail binary with the latest GitHub Release asset.

Set TARSAIL_VERSION to a release ID.

PowerShell:

Terminal window
$env:TARSAIL_VERSION = "20260622-194500-a1b2c3d4e5f6"
irm https://tarsail.plystra.com/install.ps1 | iex

POSIX shell:

Terminal window
curl -fsSL https://tarsail.plystra.com/install.sh | TARSAIL_VERSION=20260622-194500-a1b2c3d4e5f6 sh

Tarsail release IDs are generated from the pushed commit date and short commit hash:

YYYYMMDD-HHMMSS-<12-char-commit>

PowerShell:

Terminal window
$env:TARSAIL_INSTALL_DIR = "C:\Tools\Tarsail"
irm https://tarsail.plystra.com/install.ps1 | iex

POSIX shell:

Terminal window
curl -fsSL https://tarsail.plystra.com/install.sh | TARSAIL_INSTALL_DIR="$HOME/.local/bin" sh

Make sure the custom directory is on PATH.

Release assets are built for:

SystemArchitecturesAsset format
Linuxamd64, arm64.tar.gz
macOSamd64, arm64.tar.gz
Windowsamd64, arm64.zip

The scripts choose the asset name automatically:

tarsail_<version>_<os>_<arch>.tar.gz
tarsail_<version>_<os>_<arch>.zip

Examples:

tarsail_20260622-194500-a1b2c3d4e5f6_linux_amd64.tar.gz
tarsail_20260622-194500-a1b2c3d4e5f6_darwin_arm64.tar.gz
tarsail_20260622-194500-a1b2c3d4e5f6_windows_amd64.zip

By default, installers download from:

https://github.com/plystra/tarsail/releases

For forks or private testing, override the repository:

Terminal window
curl -fsSL https://tarsail.plystra.com/install.sh | TARSAIL_REPO=owner/repo sh
Terminal window
$env:TARSAIL_REPO = "owner/repo"
irm https://tarsail.plystra.com/install.ps1 | iex

The scripts verify the downloaded archive against SHA256SUMS from the same GitHub Release.

For stricter environments, download and inspect the script before running it:

Terminal window
curl -fsSL https://tarsail.plystra.com/install.sh -o install.sh
less install.sh
sh install.sh
Terminal window
irm https://tarsail.plystra.com/install.ps1 -OutFile install.ps1
notepad .\install.ps1
.\install.ps1

Do not run install scripts from an untrusted domain.

Maintainers publish binaries by pushing to main:

Terminal window
git push origin main

The GitHub Actions release workflow runs tests, generates a release ID from the pushed commit date and short commit hash, builds release assets for Linux, macOS, and Windows, writes SHA256SUMS, creates a GitHub Release for that release ID, and marks it as the GitHub latest release.

The release workflow can also be run manually through GitHub Actions workflow_dispatch. Manual runs use the checked-out commit and the same date-plus-hash release ID format.

Remove the installed binary.

Windows PowerShell:

Terminal window
Remove-Item "$env:LOCALAPPDATA\Programs\Tarsail\bin\tarsail.exe"

Linux or macOS:

Terminal window
sudo rm -f /usr/local/bin/tarsail

If you installed to a custom directory, remove the binary from that directory instead.