sail-rs on crates.io). Create and drive
sailboxes from Rust: lifecycle, streaming exec, file transfer, and ingress.
This page covers install and Rust-specific notes.
Install
sail-rs and imported as sail:
sail CLI (a library crate cannot ship a
companion binary). Install the CLI separately with
curl -fsSL https://cli.sailresearch.com/install.sh | sh.
Configure
SetSAIL_API_KEY in the environment. The client
also falls back to the credential sail auth login stores under ~/.sail,
the same configuration the CLI uses. Construct with Client::from_env(), or
use Client::builder(api_key) for explicit configuration.
Quickstart
Runtime
Every method isasync, driven on a Tokio runtime. Async hosts await the
methods directly. Synchronous code can drive any method with sail::block_on,
which runs it to completion on a shared internal runtime. Client is cheap to
clone (it shares its connection pools and config behind an Arc), so clone it
to share across tasks.
Surface
Voyages (agent tracing) and inference calls are currently Python-only; the
Rust SDK covers the full sailbox surface. See the Voyages
reference.
create_sailbox and create_from_checkpoint return a Sailbox, and
client.sailbox(id) binds an existing id without a network call. Every
per-sailbox operation is a method on it: lifecycle (info / terminate / pause / sleep / resume /
upgrade), checkpoint, streaming exec / exec_shell, file transfer
(one-shot read / write, streaming read_stream / write_stream),
an interactive shell, listeners (expose / unexpose / listeners / listener /
wait_for_listener / ingress_auth_headers), and SSH (enable_ssh).
Org-scoped operations live on the Client: list_sailboxes,
create_from_checkpoint, volumes, apps, and the image build pipeline.