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.
curl -fsSL https://safeailabs.ai/install.sh | shSet SAIL_INSTALL_DIR to install somewhere else. Running the script again replaces the installed copy.
Sign in
sail loginsail 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:
sail updateSet 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.
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
| Variable | What it does |
|---|---|
| SAIL_INSTALL_DIR | Where the install script puts sail. The default is ~/.local/bin. |
| SAIL_BROWSER | The 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_UPDATE | Set to 1 to turn automatic updates off. sail update still works. |
Troubleshooting
| Error | What to do |
|---|---|
| 401sail_signature_invalid | The 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_skew | This machine's clock is more than 5 minutes from the gateway's. Set the clock to the network time and retry. |
| 402subscription_required | The 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_sail | The 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_required | This build of Sail is older than the oldest one still accepted. Run sail update, or run the install command again. |
These docs as plain text for coding agents: llms.txt