Contents

Sail

Sail is a coding agent for your terminal, used on a monthly plan with unlimited tokens. It runs on macOS on Apple silicon and on Linux (x86_64 and arm64); a Windows build is coming. Plans and the download are on the Sail page.

Install

The script checks the download's SHA-256 and installs sail to ~/.local/bin, without sudo. When that directory is not on your PATH, it prints the line to add.

Terminal
curl -fsSL https://safeailabs.ai/install.sh | sh

Set SAIL_INSTALL_DIR to install somewhere else. Running the script again replaces the installed copy.

Sign in

Terminal
sail login

sail login prints a code and opens https://safeailabs.ai/device. Sign in, check the code matches, pick the workspace and approve. Sail gets an API key named after the machine, listed on Keys, and keeps it in the macOS Keychain. Requests are covered by the workspace's Sail plan. The key works only from Sail; other clients need an API key of their own. sail login also makes a key pair for the machine and keeps its private half with the API key. Every request Sail sends is signed with it, so the API key does not work if it is copied to another machine. A key from an earlier sail login has no key pair; Sail says once to run sail login again.

On Linux, Sail keeps the key in the Secret Service. A machine with none running, such as a server or a container, keeps it in ~/.config/sail/credentials instead: a file only you can read, which the commands Sail runs cannot open. sail login says which it used. Sail refuses the file when other users can read it; run chmod 600 on it.

Updates

Sail updates itself. A new release downloads in the background and takes effect the next time Sail starts. To update now:

Terminal
sail update

Set SAIL_NO_UPDATE=1 to turn automatic updates off. The notes for each release are on the changelog.

Uninstall

Sign out first, which removes the key from this machine, then delete the binary, its settings and its state.

Terminal
sail logout
rm ~/.local/bin/sail
rm -r "${XDG_CONFIG_HOME:-$HOME/.config}/sail" "${XDG_STATE_HOME:-$HOME/.local/state}/sail"

Each project Sail has worked in also holds its code index in .git/sail/index.db; delete .git/sail there to remove it. The key still works until you revoke it on Keys.

Environment variables

VariableWhat it does
SAIL_INSTALL_DIRWhere the install script puts sail. The default is ~/.local/bin.
SAIL_BROWSERThe program that opens pages, such as the sign-in page and the Sail plan page: a name or a path, with no arguments. Set it to none to open nothing; Sail still prints the address.
SAIL_NO_UPDATESet to 1 to turn automatic updates off. sail update still works.

Troubleshooting

ErrorWhat to do
401sail_signature_invalidThe key is bound to the machine that signed in with it, and this request was not signed there. Run sail login on this machine. With “This signed request was already used”, the same request reached the gateway twice; retry.
401sail_clock_skewThis machine's clock is more than 5 minutes from the gateway's. Set the clock to the network time and retry.
402subscription_requiredThe workspace the key belongs to has no active Sail plan. Sail plans are coming soon. Run sail logout and sail login to pick a workspace that has one.
403sail_key_requires_sailThe key was sent by a client other than Sail. A Sail key works only from Sail; for other clients, create an API key on Keys.
426sail_update_requiredThis build of Sail is older than the oldest one still accepted. Run sail update, or run the install command again.
Back toQuickstart

These docs as plain text for coding agents: llms.txt