Every boatparty command, its plain meaning and its most useful options.

boatparty <command> --help is the full reference for each command. Options such as --json go before a command’s own arguments.

Everyday commands

Command Plain meaning
launch Start this workspace’s sandbox: create or resume it, then connect
cheers Sync, run one command in the checkout, stream its output, apply its file changes back
load Sync the working tree only
cruise Run a long-lived process, such as a dev server, until cancelled
board Open a shell in the checkout, or run one command there without syncing
dock Stop this workspace’s sandbox; its disk is kept

cheers and cruise

Both take the command in three forms:

boatparty cheers -- cargo test --locked          # each word after -- is quoted
boatparty cheers --sh 'cargo test 2>&1 | tail'   # one shell line, as given
boatparty cheers test -q                         # [commands] test, with -q appended
boatparty cheers check:rust                      # or the script runner: `bun run check:rust`

A name runs its [commands] entry; without one it runs [run] script NAME ARGS when the project sets a script runner, and otherwise fails with the list of known names. The ensure steps (dependency installs) run before the command when their inputs changed, and the setup steps after each start.

cruise holds a serve lease until cancelled, waits until a resumed sandbox has all its files, and carries port forwards on its own SSH connection:

boatparty cruise --forward 3000:3000 --ready-port 3000 -- npm run dev
boatparty cruise --reverse 20000:7777 --sh 'API=http://127.0.0.1:20000 npm start'

Forwards listen on 127.0.0.1 unless you name another address. --max-minutes (default 120) stops a forgotten server. If the client dies in any way, SIGKILL included, the sandbox stops the server within seconds.

board

boatparty board opens a login shell in the checkout. boatparty board -- CMD... runs one command without syncing and exits with its status; on a warm sandbox it costs two SSH round trips over the shared connection and no provider call, so scripts can call it often. The shell or command gets what cheers gives a command: your Git identity, the GitHub token when [run] github_token is on, and [run.env]. No setup or ensure step runs.

dock

dock waits until the sandbox’s files are fully restored, then stops it (--wait also waits for the stop). You rarely need it: sandboxes stop by themselves after idle_minutes, and every later start counts against the account’s start limits.

In a workspace

Command Does
init [--name NAME] Write boatparty.toml for this repository and register the project
status This project’s sandboxes: state, files restored or not, auto-stop time, SSH config paths
pipe -- CMD / pipe --sh LINE Run one command with this process’s standard input, without syncing; the input is never recorded
fetch PATH [DEST] Copy a file or directory back (relative paths are under the checkout); large ones by signed download
forward REMOTE[:LOCAL] Hold a local port forward until cancelled; a dropped connection is reopened for up to 10 minutes, bringing the sandbox up again if needed
expose PORT [--public] [--localhost] [--title T] A public HTTPS URL for a sandbox port, token-gated unless --public; --hide takes it down
release Let go of this workspace’s sandbox so another workspace may use it
assign MEMBER Pin a free sandbox of the project to this workspace
rm [MEMBER] Delete a sandbox at boat and forget it
base build, base status, base rm Build, inspect or remove the project’s base snapshot
config show [--resolved] [--origin], config validate The project’s configuration as written, as resolved, or checked
preset list, preset show NAME, preset eject NAME [--user] The presets a project can name, and copies to edit

pipe, for secrets

A command line ends up in runs.jsonl and process lists, so secrets go on standard input:

printf '%s\n' "$UPLOAD_URL" | boatparty pipe -- bash scripts/upload.sh

The command gets the project’s credentials and [run.env], and its stdout is passed through byte for byte. The input travels framed on the runner’s stdin, so the end of the input is not mistaken for the end of the client: if boatparty pipe dies, the sandbox stops the command within seconds even while its input is still open.

Anywhere

Command Does
login --key-stdin [--no-verify] Store the boat API key, read from standard input
doctor Check tools, account file, key and scope; match pools with boat; report stale SSH files and sockets
limits, `limits set account project NAME KEY=VALUE…`
pool [--refresh] [--project NAME], pool prune [--yes] Every project’s sandboxes; delete stopped ones no workspace needs
log [-n N] Recent runs of cheers, cruise and pipe
skill [--print] Write the agent skill under the state directory and print its path

Exit status

Status Meaning
the command’s own cheers, cruise, pipe, board -- CMD
0 Other commands succeeded
2 Usage error
125 boatparty itself failed: configuration, credentials, provider, connection, limits. Not the command
130, 143 Cancelled by SIGINT or SIGTERM (the remote command is stopped too)