# Boat > Boat gives you cloud sandboxes: full root Ubuntu machines with SSH, Docker, a public IPv4 and a desktop. You pay per second while a sandbox runs. A stopped sandbox keeps its disk as a snapshot; resume it or fork copies of it. Drive it with the `boat` CLI, the Python or TypeScript SDK, or the REST API at `https://boat.dev/api/v1`. Every page is also available as Markdown: add `.md` to its URL. The index below lists pages by sidebar tab and group. ## Key facts Sandbox sizes (`--type`). Price is per hour while the sandbox runs: - `small`: 2 vCPU, 4 GB RAM, 12 GB disk, $0.018/h - `default` (the medium size): 4 vCPU, 8 GB RAM, 50 GB disk, $0.036/h. A full month (730 h) costs $26. - `large`: 8 vCPU, 16 GB RAM, 125 GB disk, $0.072/h - `xlarge`: 16 vCPU, 32 GB RAM, 251 GB disk, $0.20/h. Needs the $100 plan or higher. Plans. The plan price comes back as sandbox time at the rates above: - $20/month: 100 sandboxes at once, starts 12/min, 60/h, 200/day - $100/month: 300 at once, starts 30/min, 210/h, 840/day - $500/month: 1,000 at once, starts 65/min, 420/h, 1,680/day - $2000/month: 2,000 at once, starts 90/min, 600/h, 2,400/day - Organizations: one seat costs the plan price. Seats multiply the limits and the included time. - More time: $20 credit packs that never expire, or auto-refill. Free trial: 7 days, card required. Until the first payment: 25 h of compute in total, 2 sandboxes at once, auto-stop of 2 h at most, starts 5/min, 25/h, 75/day, no `large` or `xlarge`. Organizations get no trial. Auto-stop: a sandbox stops 1 h after create or resume by default. A running agent prompt pushes the deadline. The maximum is 30 days on a paid plan. `--no-auto-stop` turns it off. Stop and snapshots: there is no pause. A stop removes the machine and keeps the disk; running processes end; enabled systemd services start again on resume. Boat keeps the disk of a stopped sandbox for 14 days, emails on day 11, then deletes it (resume and fork then fail with 409 snapshot_data_expired). Resume and fork always use the newest snapshot. To keep a state longer, save a named snapshot (works on a stopped sandbox, never expires): 10 are free, then $1.70/month each, taken from Boat time daily. Commands over the API: default timeout 30 s, maximum 600 s. A detached command has no limit: `boat exec --timeout 0` (CLI), `run_command` / `runCommand` (SDK), or `detached: true` then the attach stream (API). Run long servers detached (`boat exec --detach`). One job end to end: `boat run --from --type --push . -- ` creates, copies the folder in, runs, prints the cost, deletes. `boat limits` (`machineTypes` in `GET /limits`) lists the sandbox types you can create now. Public URLs: `boat host ` gives `https://-.on.boat.dev`. The URL is token-gated by default (`?_token=`); anyone with the full URL can open it. API keys start with `boat_`. Webhook events: ready, error, archived (the API name for stopped), hydrated, degraded, recovered. ## CLI cheat sheet ```bash curl -fsSL https://boat.dev/install | sh # install (Windows: irm https://boat.dev/install.ps1 | iex) boat login # sign in (or: boat login --key-stdin < key.txt) boat new --type default # create a sandbox; prints its id boat new --from --no-auto-stop # create from a named snapshot, never auto-stop boat list # running sandboxes (--all for every state) boat info # state, size, auto-stop deadline boat ssh # interactive shell; add a command to run it boat exec -- npm test # run a command over the API (--detach for servers) boat scp ./file :file # copy a file to the sandbox (-r for folders) boat host 3000 # public HTTPS URL for a port (--public for no token) boat extend --hours 8 # set the remaining time before auto-stop boat stop # stop and snapshot boat resume --type large # resume, optionally on another size boat fork # copy a sandbox from its latest snapshot boat snapshot # save a named snapshot boat prompt --provider claude "fix the tests" # prompt a coding agent in the sandbox boat env add-repo base owner/repo # add a GitHub repo to the default environment boat delete # delete a sandbox and all its data boat limits # remaining starts, time and credits boat billing portal # card and invoices (Stripe portal) ``` Agent harnesses for `boat prompt --provider`: codex, claude, pi, opencode, prime, kimi, mistral. ## Guides: Get started - [Quickstart](https://docs.boat.dev/quickstart.md): Install the Boat CLI on macOS, Linux or Windows, start a cloud sandbox, and run a command in it. Or do the same from Python, TypeScript or curl. - [Concepts](https://docs.boat.dev/concepts.md): Every Boat word defined once: sandbox, snapshot, named snapshot, stop, resume, fork, delete, environment. The sandbox states, and the matching words at E2B, Daytona and Modal. - [Pricing](https://docs.boat.dev/pricing.md): Cost per hour of each sandbox size, billed per second. What a plan and a seat cost, the free trial, other charges, and prices compared to E2B, Modal and Daytona. - [Free trial](https://docs.boat.dev/free-trial.md): The 7-day free trial: a card is required, 25 hours of compute, 2 sandboxes at once, 2-hour auto-stop, no large sizes. How it ends, how to cancel it, and how to lift the limits. - [Sign up from an agent](https://docs.boat.dev/agent-auth.md): Let an AI agent register itself with Boat, get a human to claim it, and start the free trial, without a pasted API key. - [Use from your coding agent](https://docs.boat.dev/ai-tools.md): Let Claude Code, Codex or Cursor on your computer start and drive Boat sandboxes: the boat CLI, the docs MCP server, llms.txt, skills, and an AGENTS.md snippet. ## Guides: Use cases - [Agent on your repo](https://docs.boat.dev/recipes/agent-on-repo.md): Step by step: connect GitHub and an AI key, clone your repository into a sandbox, and let Claude Code or Codex work on it. - [Many agents in parallel](https://docs.boat.dev/recipes/parallel-agents.md): Fork one prepared sandbox into N copies and give each copy its own agent task, from the CLI or Python. Stay under the start limits. - [CI with Boat](https://docs.boat.dev/ci.md): Run your test suite in a Boat sandbox from GitHub Actions: install the CLI, sign in with a secret, start from a named snapshot, run the tests, keep the exit code, always delete the sandbox. - [Evals and RL](https://docs.boat.dev/evals.md): Run many eval or RL episodes on Boat: one named snapshot per environment, one fresh sandbox per episode, parallel fan-out within start limits, teardown, cost. Harbor and Terminal-Bench status. - [Harbor adapter](https://docs.boat.dev/integrations/harbor.md): Run Harbor agent trials and evals on Boat sandboxes with the harbor-box environment adapter. What works today, Terminal-Bench 2.0 status, and the harbor run command. - [Build a platform](https://docs.boat.dev/platform-guide.md): Give each of your users a sandbox: run their agents, previews, and workspaces on Boat. Architectures, costs, and provisioning patterns. - [Patterns](https://docs.boat.dev/platform-guide/patterns.md): Three ways to run sandboxes for your users: always on per project, always on per user, or stop and resume around usage. Costs included. - [Agents in your product](https://docs.boat.dev/platform-guide/agents.md): Use the integrated agents in your product with your users' keys, or drive the sandbox from your own agent (LangChain, your daemon) over the API. - [Templates and sizing](https://docs.boat.dev/platform-guide/templates-and-sizing.md): Use a named snapshot as a template: build your stack once and start a sandbox from it for each user. Plan concurrent sandboxes and start limits. - [Eve adapter](https://docs.boat.dev/integrations/eve.md): Run Eve agents in Boat sandboxes with the @asciidev/eve-box backend: setup, a complete example, options, and safe sandboxes for other people. - [Windows apps](https://docs.boat.dev/windows-apps.md): Run Windows-only desktop software in a sandbox with Wine, let an agent drive it, and reuse the set-up sandbox as a named snapshot. - [Tested apps](https://docs.boat.dev/windows-apps/tested-apps.md): Windows apps that run in a Boat sandbox with Wine, the extra steps they need, and the apps that do not run. - [Install Wine](https://docs.boat.dev/windows-apps/install-wine.md): Install Wine and the Windows runtimes in a sandbox with one script. - [Run an app](https://docs.boat.dev/windows-apps/run-apps.md): Install and start a Windows app in a sandbox. Recipes for Steam, Paint.NET, Sysinternals and Direct3D games. - [Agents and forks](https://docs.boat.dev/windows-apps/agents-and-forks.md): Let an agent drive a Windows app in a sandbox. Set up the sandbox once, save it as a named snapshot, and start a new sandbox from it for each task. - [Troubleshooting](https://docs.boat.dev/windows-apps/troubleshooting.md): Fix common errors when you run Windows apps with Wine in a sandbox. Licence rules. ## Guides: Connect to a sandbox - [SSH](https://docs.boat.dev/ssh-access.md): Open a shell in a sandbox, run commands, forward a port to your computer, connect VS Code or another SSH client, and copy files in and out. - [VS Code and Cursor](https://docs.boat.dev/ssh-access/editors.md): Open a sandbox in VS Code Remote-SSH or Cursor with an ~/.ssh/config entry, and refresh the address and host key after each resume. - [Desktop streaming](https://docs.boat.dev/desktop-streaming.md): Open the Linux desktop of a sandbox in your browser, watch an agent use it, embed it in your app, or record it. - [Moonlight or VNC](https://docs.boat.dev/desktop-streaming/streaming-modes.md): Stream the desktop over Moonlight (WebRTC) or over VNC on strict networks, get a VNC URL from the API, and switch modes in the viewer. - [Browser-only view](https://docs.boat.dev/desktop-streaming/browser-only.md): Stream only Chrome from a sandbox, without the desktop, and choose which Chrome profile to open. - [Drive and record the desktop](https://docs.boat.dev/desktop-streaming/drive-and-record.md): Let the agents of a sandbox use its desktop, mix shell commands with prompts, and record the screen to an MP4. - [Embed and secure](https://docs.boat.dev/desktop-streaming/urls-and-security.md): What a desktop URL contains, how long it works, how to embed the stream in your app in an iframe, and how Boat protects the desktop. - [Desktop background](https://docs.boat.dev/desktop-streaming/background.md): Put your own PNG image on the sandbox desktop. - [Public URLs](https://docs.boat.dev/hosting.md): Expose a port of a sandbox on a stable public HTTPS URL, protect it with a token, rename its subdomain, or open a raw TCP or UDP port. - [Host commands](https://docs.boat.dev/hosting/host-cli.md): Expose, list, print and hide public URLs with `boat host`, the in-sandbox `host` command and the host API. - [How public URLs work](https://docs.boat.dev/hosting/how-it-works.md): How Boat routes a public HTTPS request to a port in your sandbox, apps that listen on localhost, and the Vite 'host not allowed' error. - [Firewall rules](https://docs.boat.dev/hosting/firewall.md): Add firewall rules in a sandbox, open raw ports, and block outbound internet access without breaking Boat. ## Guides: Run work and keep it running - [Overview](https://docs.boat.dev/long-running-tasks.md): Keep a sandbox running longer or 24/7, run long commands in the background, restart processes after resume or fork, and read past command output. - [Auto-stop](https://docs.boat.dev/long-running-tasks/auto-stop.md): Keep a sandbox alive: turn off auto-stop, read the auto-stop deadline, and extend a sandbox. A running agent prompt moves the deadline. - [Always-on services](https://docs.boat.dev/long-running-tasks/always-on-services.md): Run a server, bot or worker 24/7: make a process come back by itself after stop, resume and fork with a systemd service. - [Background commands](https://docs.boat.dev/long-running-tasks/background-commands.md): Run a long command or a server in the background with --detach, read its output, attach to it, and stop it. - [Command history](https://docs.boat.dev/long-running-tasks/command-history.md): Read the logs and output of past commands and processes in a sandbox, also when the sandbox is stopped, and list the processes. ## Guides: Set up new sandboxes - [Environments](https://docs.boat.dev/environments.md): Set what every new sandbox starts with: GitHub repositories, environment variables, secret files, repository setup scripts and credentials. - [Which one to use](https://docs.boat.dev/environments/choose.md): Pick the right tool for what a new sandbox needs: settings and secrets, commands at each start, or a disk with your tools already installed. - [Repositories](https://docs.boat.dev/environments/repositories.md): Clone private or public GitHub repositories into every new sandbox, and find where they land. - [Secrets](https://docs.boat.dev/environments/secrets.md): Give sandboxes environment variables and secret files such as .env, for all sandboxes or for one sandbox only. - [Private registries](https://docs.boat.dev/environments/private-registries.md): Log in to private npm, pip, uv and Docker registries in every sandbox with environment variables and secret files. - [Access and credentials](https://docs.boat.dev/environments/access.md): Choose what of yours a sandbox receives: GitHub access, secrets, setup scripts, Boat credentials and agent logins. - [Setup scripts](https://docs.boat.dev/setup.md): Run commands when a sandbox starts: repository setup scripts, a per-sandbox setup file, or commands from your own code. Includes how to fail when setup fails. - [Versions and upgrades](https://docs.boat.dev/environments/versions.md): Each saved change makes a new environment version. A sandbox moves to it only when you upgrade. - [Manage environments](https://docs.boat.dev/environments/manage.md): Create, rename, upgrade and delete environments, pick the environment for a sandbox, and share environments with your organization. ## Guides: Stop, resume and snapshots - [How snapshots work](https://docs.boat.dev/snapshots.md): Boat saves the disk of your sandbox all the time. Stop, resume, fork, save a named snapshot or download your files. - [Stop a sandbox](https://docs.boat.dev/snapshots/stop.md): What a stop does, how to wait for it in a script, how to save app state first, and what happens when a stop is refused. - [Resume, fork and restore](https://docs.boat.dev/snapshots/resume-and-fork.md): Get a stopped sandbox back, copy a sandbox, and get files from an older snapshot back. Resume and fork always use the newest snapshot. - [Readiness and resume speed](https://docs.boat.dev/readiness.md): What ready means, what already works at ready, what comes a few seconds later (Docker, services, system files), and how to wait for each in a script. - [What a snapshot saves](https://docs.boat.dev/snapshots/whats-saved.md): Which folders a snapshot saves and which it does not. Docker containers, images and build cache, tool caches, /tmp and the IP address after a resume. - [Named snapshots](https://docs.boat.dev/snapshots/templates.md): Save a sandbox under a name, use it as a template for many new sandboxes, make many copies at once, and share it with another account. - [Download a snapshot](https://docs.boat.dev/snapshots/download-and-delete.md): Look inside a snapshot and download its files, also from a stopped sandbox. Get one file, one folder or the whole home folder. ## Guides: Machines - [Sizes](https://docs.boat.dev/machines.md): The four sandbox sizes with their vCPU, RAM, disk and price per hour, how to pick one, and what every sandbox can do: root, Docker, systemd, no GPU. - [Pre-installed tools](https://docs.boat.dev/machines/tools.md): The OS image of every sandbox and the versions of its languages, Docker, coding agents and utilities. Root access and how to install more. - [Change size](https://docs.boat.dev/machines/change-size.md): Move a sandbox to a bigger or smaller size: stop it, then resume it with --type. Or fork it to a new size. - [Virtualization](https://docs.boat.dev/machines/virtualization.md): Nested virtualization in a sandbox: check for /dev/kvm, get a sandbox that has it, and run QEMU/KVM, Firecracker or the Android emulator. - [Fail fast](https://docs.boat.dev/machines/fail-fast.md): Get an answer in about 1.5 seconds when no machine of your size is ready, and fall back right away. About machine availability, not setup failures. ## Guides: Run agents inside - [Integrated agents](https://docs.boat.dev/integrated-agents.md): Run Claude Code, Codex and five other coding agents inside a sandbox with boat prompt. Boat keeps memory, streams events and runs tasks in parallel. - [Harnesses and models](https://docs.boat.dev/integrated-agents/harnesses-and-models.md): The seven coding-agent harnesses on every sandbox (Claude Code, Codex, pi, OpenCode, Prime Agent, Kimi Code, Mistral Vibe), their models, and fast mode. - [Keys and subscriptions](https://docs.boat.dev/integrated-agents/keys.md): Connect a Claude or ChatGPT subscription or an API key before the first prompt, or run on the keys of your users. DeepSeek, Amazon Bedrock and Mistral setup. - [AI credentials](https://docs.boat.dev/ai-credentials.md): Credential profiles, a second Claude or ChatGPT account when one runs out of credits, custom APIs, AI usage, and the proxy that keeps real keys out of your sandboxes. - [Conversations](https://docs.boat.dev/integrated-agents/conversations.md): How the agent keeps its memory, runs many tasks at once, streams its events, survives a stop, and changes harness or model in a thread. - [Steer a running turn](https://docs.boat.dev/integrated-agents/steering.md): Send a new message to an agent while it works, or interrupt it. The agent uses a steer and keeps what it was doing. - [Computer use](https://docs.boat.dev/integrated-agents/computer-use.md): Every harness on a sandbox can see and use the Linux desktop of the sandbox through the built-in computer tools. - [Customize the harness](https://docs.boat.dev/integrated-agents/customize.md): Add house rules, MCP servers, skills and tools to the harnesses on a sandbox, reach your own app, or bring your own harness. ## Guides: Teams - [Teams](https://docs.boat.dev/organizations.md): One shared plan and balance for a team: members and invites, seat price, which wallet a sandbox bills, shared sandboxes, per-member caps, and moving a plan between personal and organization. - [Shared sandboxes](https://docs.boat.dev/organizations/shared-sandboxes.md): Every member sees the sandboxes the organization pays for. What each member can do with them, and how to share a sandbox that holds your logins. - [Which wallet a sandbox bills](https://docs.boat.dev/organizations/active-wallet.md): Who pays for a sandbox: your personal account or an organization. Switch the active organization, or bill one sandbox to an organization without switching. - [Seats, limits and caps](https://docs.boat.dev/organizations/seats-and-limits.md): Seat price (one plan price per seat), what a seat adds, buying seats, the shared start and concurrency limits, and per-member caps. - [Move a personal plan in](https://docs.boat.dev/organizations/move-personal-plan.md): Move the sandboxes and plan you paid for personally to your organization, without stopping them. The unused share of the month is refunded. ## Guides: Security, isolation, data & compliance - [Security and isolation](https://docs.boat.dev/security.md): How Boat isolates sandboxes, who can reach a sandbox, which credentials it holds, network rules, URLs with tokens, team access, data retention, compliance and uptime. Each topic links to its detail page. - [Compliance and uptime](https://docs.boat.dev/compliance.md): SOC 2 status, platform uptime and the live status page, where data is stored, GDPR erasure, and how to report a security issue. - [Data retention and deletion](https://docs.boat.dev/data-retention.md): How long Boat keeps each kind of data, stop versus delete, zero data retention, and the records that stay after a deletion. - [Delete a sandbox or snapshot](https://docs.boat.dev/data-retention/delete.md): Delete a sandbox, its snapshots or a named snapshot for good, follow the deletion until the data is erased, and what a delete keeps. - [Zero data retention](https://docs.boat.dev/data-retention/zero-data-retention.md): Read and enable zero data retention (ZDR): Boat deletes the data of each sandbox when it stops. How it works in an organization. - [Snapshots off and monitoring off](https://docs.boat.dev/data-retention/snapshots-and-monitoring-off.md): Keep no snapshots of a sandbox, or keep no monitoring data, for one sandbox or for the whole account. - [Close your account](https://docs.boat.dev/data-retention/close-account.md): Close your account, reopen it within 30 days, or erase it for good for a GDPR request (right to erasure). ## Guides: Help - [Troubleshooting](https://docs.boat.dev/troubleshooting.md): Why a sandbox stopped by itself, what to do when a sandbox does not answer or is in error, out of memory (exit 137), out-of-disk emails, and what common error messages mean. - [FAQ](https://docs.boat.dev/faq.md): Short answers to the questions customers ask most: trial and billing, limits, sizes, stop and resume, snapshots, secrets, public URLs, SSH, agents, the API, teams, errors and security. - [Support](https://docs.boat.dev/support.md): How to reach the Boat team by email or Discord, and what to send so we can help on the first reply. - [Migrating from Box](https://docs.boat.dev/migrating-from-box.md): Box is now Boat, and a box is now a sandbox. Old Box API paths, keys, CLI, SDK packages and hosted URLs still work. What to change and how to know you are done. - [Migration steps](https://docs.boat.dev/migrating-from-box/steps.md): What to change to move from Box to Boat: the CLI, the SDKs, raw HTTP, webhooks, hosted URLs and the inside of a sandbox. - [Every renamed name](https://docs.boat.dev/migrating-from-box/renamed-names.md): The full list of Box names that changed to Boat: API paths, JSON keys, types, error codes, 6 webhook events, variables, headers, flags and files. ## Platform: Billing and limits - [Plans, credits and running out](https://docs.boat.dev/billing.md): How Boat spends your balance: included plan time, credit packs, prepaid balance and auto-refill. Billing commands, per-sandbox cost, how to control spend, and what happens when the balance reaches zero. - [Card, invoices and plan changes](https://docs.boat.dev/billing/plan-changes.md): Change your card, get invoices and receipts, add a VAT ID, upgrade or downgrade, cancel the plan, refunds, and move a plan between a personal account and an organization. - [Limits and errors](https://docs.boat.dev/limits.md): Every Boat limit per plan: sandboxes at once, starts per minute, hour and day, trial caps, command and output caps. The 402, 403, 429 and 503 error codes, how to retry, and how to raise a limit. ## Platform: Account and API keys - [Accounts and sign-in](https://docs.boat.dev/account.md): Sign-in methods, reinstalling or using a second computer, and which surface (CLI, API, SDKs, dashboard) does what. - [API keys](https://docs.boat.dev/api-keys.md): Create scoped, expiring Boat API keys, use them as bearer tokens, and revoke a leaked key. - [Scopes](https://docs.boat.dev/api-keys/scopes.md): What a scoped Boat API key can do: actions, presets, the in-sandbox API key and scope errors. - [Create and list keys](https://docs.boat.dev/api-keys/create-and-list.md): Create a scoped Boat API key, use it, list your keys and see the usage of one key. - [Store, rotate and revoke](https://docs.boat.dev/api-keys/store-rotate-revoke.md): Revoke a leaked Boat API key, store a key safely, and replace its secret with or without downtime. ## Platform: Events and monitoring - [Webhooks](https://docs.boat.dev/webhooks.md): Receive signed notifications when a sandbox becomes ready, finishes restoring, fails, stops, degrades or recovers. - [OpenTelemetry](https://docs.boat.dev/opentelemetry.md): Send sandbox and account metrics, and sandbox lifecycle events, to Datadog, Grafana Cloud, Honeycomb, or any OTLP collector. No traces, no agent or AI token data. ## Reference: Tools - [CLI reference](https://docs.boat.dev/cli-reference.md): Every Boat CLI command and flag: install, sign in, create, run, stop, resume, fork, snapshots, public URLs, environments, prompts, billing. JSON output for scripts and CI. - [SDKs](https://docs.boat.dev/sdks/overview.md): Use Boat from Python or TypeScript: install, configure, and a complete create, run, stop example. Other languages: generate a client from the OpenAPI file. - [Python SDK](https://docs.boat.dev/sdks/python.md): Install boat-sdk, create a sandbox, run a command and read stdout and the exit code, stream output, run background jobs, move files, prompt agents. Every method, by group. - [TypeScript SDK](https://docs.boat.dev/sdks/typescript.md): Install @boatdev/sdk, create a sandbox, run a command and read stdout and the exit code, stream output, run background jobs, move files, prompt agents. Every method, by group. ## Reference: API - [API overview](https://docs.boat.dev/api/v1.md): The Boat HTTP API: base URL, bearer authentication, a create-run-stop example, errors, limits and retries, pagination, idempotency, and every endpoint by group. ## API reference: Sandboxes - [api/reference/sandboxes/list-sandboxes](https://docs.boat.dev/api/reference/sandboxes/list-sandboxes.md) - [api/reference/sandboxes/create-sandbox](https://docs.boat.dev/api/reference/sandboxes/create-sandbox.md) - [api/reference/sandboxes/get-sandbox](https://docs.boat.dev/api/reference/sandboxes/get-sandbox.md) - [api/reference/sandboxes/update-sandbox](https://docs.boat.dev/api/reference/sandboxes/update-sandbox.md) - [api/reference/sandboxes/stop-and-archive-sandbox](https://docs.boat.dev/api/reference/sandboxes/stop-and-archive-sandbox.md) - [Get a stop](https://docs.boat.dev/api/reference/sandboxes/get-stop.md): `GET /sandboxes/{sandboxId}/stops/{stopId}`. CLI: `boat stop --status` - [api/reference/sandboxes/resume-sandbox](https://docs.boat.dev/api/reference/sandboxes/resume-sandbox.md) - [api/reference/sandboxes/fork-sandbox](https://docs.boat.dev/api/reference/sandboxes/fork-sandbox.md) - [Recover sandbox](https://docs.boat.dev/api/reference/sandboxes/recover-sandbox.md): `POST /sandboxes/{sandboxId}/recover`. CLI: `boat recover` - [Share sandbox with the organization](https://docs.boat.dev/api/reference/sandboxes/share-sandbox.md): `POST /sandboxes/{sandboxId}/share`. CLI: `boat share` - [Make an organization sandbox private](https://docs.boat.dev/api/reference/sandboxes/unshare-sandbox.md): `POST /sandboxes/{sandboxId}/unshare`. CLI: `boat unshare` - [Get sandbox usage](https://docs.boat.dev/api/reference/sandboxes/get-sandbox-usage.md): `GET /sandboxes/{sandboxId}/usage`. CLI: `boat usage` - [Delete sandbox](https://docs.boat.dev/api/reference/sandboxes/permanently-delete-sandbox-data.md): `DELETE /sandboxes/{sandboxId}`. CLI: `boat delete` ## API reference: Commands - [Run a command](https://docs.boat.dev/api/reference/agent/execute-sandbox-command.md): `POST /sandboxes/{sandboxId}/commands`. CLI: `boat exec` - [Get command status](https://docs.boat.dev/api/reference/agent/get-command-status.md): `GET /sandboxes/{sandboxId}/commands/{processId}`. CLI: `boat exec --status` - [Attach to a detached command](https://docs.boat.dev/api/reference/agent/attach-command.md): `GET /sandboxes/{sandboxId}/commands/{processId}/stream`. CLI: `boat exec --attach` - [Stop a detached command](https://docs.boat.dev/api/reference/agent/stop-command.md): `DELETE /sandboxes/{sandboxId}/commands/{processId}`. CLI: `boat exec --kill` - [List the command history](https://docs.boat.dev/api/reference/agent/list-command-history.md): `GET /sandboxes/{sandboxId}/command-history`. CLI: `boat history` - [Get a command from the history](https://docs.boat.dev/api/reference/agent/get-command.md): `GET /sandboxes/{sandboxId}/command-history/{commandId}`. CLI: `boat history ` - [Read command logs](https://docs.boat.dev/api/reference/agent/read-command-logs.md): `GET /sandboxes/{sandboxId}/command-history/{commandId}/logs`. CLI: `boat history ` - [List sandbox processes](https://docs.boat.dev/api/reference/agent/list-sandbox-processes.md): `GET /sandboxes/{sandboxId}/processes`. CLI: `boat ps` ## API reference: Files - [Read a file](https://docs.boat.dev/api/reference/agent/read-sandbox-file.md): `GET /sandboxes/{sandboxId}/files`. CLI: `boat scp` - [Write a file](https://docs.boat.dev/api/reference/agent/write-sandbox-file.md): `PUT /sandboxes/{sandboxId}/files`. CLI: `boat scp` - [Get a download URL for a sandbox file](https://docs.boat.dev/api/reference/agent/create-download-url.md): `POST /sandboxes/{sandboxId}/files/download-url` - [Get an upload URL for a sandbox file](https://docs.boat.dev/api/reference/agent/create-upload-url.md): `POST /sandboxes/{sandboxId}/files/upload-url` - [Download a file](https://docs.boat.dev/api/reference/agent/download-sandbox-artifact.md): `GET /sandboxes/{sandboxId}/artifacts` ## API reference: Agents - [api/reference/agent/prompt-sandbox-agent](https://docs.boat.dev/api/reference/agent/prompt-sandbox-agent.md) - [Get prompt run status](https://docs.boat.dev/api/reference/agent/get-prompt-run-status.md): `GET /sandboxes/{sandboxId}/prompts/{promptId}` - [api/reference/agent/list-sandbox-events](https://docs.boat.dev/api/reference/agent/list-sandbox-events.md) - [List conversations](https://docs.boat.dev/api/reference/agent/list-sandbox-conversations.md): `GET /sandboxes/{sandboxId}/conversations`. CLI: `boat conversations` - [Steer a running turn (API)](https://docs.boat.dev/api/reference/agent/steer-a-running-turn.md): `POST /sandboxes/{sandboxId}/steer`. CLI: `boat steer` - [api/reference/agent/interrupt-running-agent-work](https://docs.boat.dev/api/reference/agent/interrupt-running-agent-work.md) ## API reference: Access - [Expose a port on a public URL](https://docs.boat.dev/api/reference/agent/expose-a-port.md): `POST /sandboxes/{sandboxId}/host` - [api/reference/agent/configure-sandbox-ssh-key](https://docs.boat.dev/api/reference/agent/configure-sandbox-ssh-key.md) - [api/reference/agent/get-desktop-streaming-url](https://docs.boat.dev/api/reference/agent/get-desktop-streaming-url.md) ## API reference: Snapshots - [List snapshots](https://docs.boat.dev/api/reference/snapshots/list-snapshots.md): `GET /snapshots`. CLI: `boat snapshots` - [List snapshots of a sandbox](https://docs.boat.dev/api/reference/snapshots/list-sandbox-snapshots.md): `GET /sandboxes/{sandboxId}/snapshots`. CLI: `boat snapshots ` - [Get the latest snapshot of a sandbox](https://docs.boat.dev/api/reference/snapshots/get-latest-sandbox-snapshot.md): `GET /sandboxes/{sandboxId}/snapshots/latest`. CLI: `boat snapshot latest` - [Get snapshot file tree](https://docs.boat.dev/api/reference/snapshots/get-snapshot-tree.md): `GET /snapshots/{snapshotId}/tree`. CLI: `boat snapshot tree` - [Download a file or folder from a snapshot](https://docs.boat.dev/api/reference/snapshots/get-snapshot-file.md): `GET /snapshots/{snapshotId}/files` - [Get snapshot download](https://docs.boat.dev/api/reference/snapshots/get-snapshot-download.md): `GET /snapshots/{snapshotId}/download`. CLI: `boat snapshot pull` - [Delete snapshot](https://docs.boat.dev/api/reference/snapshots/permanently-delete-snapshot-data.md): `DELETE /snapshots/{snapshotId}`. CLI: `boat snapshot delete` - [Delete all snapshots of a sandbox](https://docs.boat.dev/api/reference/snapshots/delete-sandbox-snapshots.md): `DELETE /sandboxes/{sandboxId}/snapshots` ## API reference: Named snapshots - [List named snapshots](https://docs.boat.dev/api/reference/snapshots/list-named-snapshots.md): `GET /named-snapshots` - [Save a named snapshot](https://docs.boat.dev/api/reference/snapshots/save-named-snapshot.md): `POST /named-snapshots`. CLI: `boat snapshot ` - [Get a named snapshot](https://docs.boat.dev/api/reference/snapshots/get-named-snapshot.md): `GET /named-snapshots/{name}` - [Delete a named snapshot](https://docs.boat.dev/api/reference/snapshots/delete-named-snapshot.md): `DELETE /named-snapshots/{name}`. CLI: `boat snapshot rm` - [Share a named snapshot](https://docs.boat.dev/api/reference/snapshots/create-snapshot-share.md): `POST /named-snapshots/{name}/shares`. CLI: `boat snapshot share` - [List share codes of a named snapshot](https://docs.boat.dev/api/reference/snapshots/list-snapshot-shares.md): `GET /named-snapshots/{name}/shares`. CLI: `boat snapshot shares` - [Revoke a share code](https://docs.boat.dev/api/reference/snapshots/revoke-snapshot-share.md): `DELETE /named-snapshots/{name}/shares/{shareId}`. CLI: `boat snapshot unshare` ## API reference: Environments - [api/reference/environments/list-sandbox-environments](https://docs.boat.dev/api/reference/environments/list-sandbox-environments.md) - [api/reference/environments/create-sandbox-environment](https://docs.boat.dev/api/reference/environments/create-sandbox-environment.md) - [api/reference/environments/update-sandbox-environment](https://docs.boat.dev/api/reference/environments/update-sandbox-environment.md) - [api/reference/environments/delete-sandbox-environment](https://docs.boat.dev/api/reference/environments/delete-sandbox-environment.md) - [api/reference/environments/upgrade-sandbox-environment](https://docs.boat.dev/api/reference/environments/upgrade-sandbox-environment.md) - [Set environment variable](https://docs.boat.dev/api/reference/environments/set-environment-var.md): `PUT /environments/{environmentId}/vars/{key}`. CLI: `boat env set-var` - [Remove environment variable](https://docs.boat.dev/api/reference/environments/delete-environment-var.md): `DELETE /environments/{environmentId}/vars/{key}`. CLI: `boat env rm-var` - [Write environment secret file](https://docs.boat.dev/api/reference/environments/set-environment-secret-file.md): `PUT /environments/{environmentId}/secret-files`. CLI: `boat env set-file` - [Remove environment secret file](https://docs.boat.dev/api/reference/environments/delete-environment-secret-file.md): `DELETE /environments/{environmentId}/secret-files`. CLI: `boat env rm-file` - [Add environment repository](https://docs.boat.dev/api/reference/environments/add-environment-repo.md): `POST /environments/{environmentId}/repos`. CLI: `boat env add-repo` - [Remove environment repository](https://docs.boat.dev/api/reference/environments/delete-environment-repo.md): `DELETE /environments/{environmentId}/repos/{repositoryId}`. CLI: `boat env rm-repo` - [api/reference/account/list-github-repositories-available-to-sandbox](https://docs.boat.dev/api/reference/account/list-github-repositories-available-to-sandbox.md) - [api/reference/account/select-repository-for-sandboxes](https://docs.boat.dev/api/reference/account/select-repository-for-sandboxes.md) - [api/reference/account/get-boat-secrets-setup](https://docs.boat.dev/api/reference/account/get-boat-secrets-setup.md) - [api/reference/account/update-boat-secrets-setup](https://docs.boat.dev/api/reference/account/update-boat-secrets-setup.md) ## API reference: AI credentials - [List credential profiles](https://docs.boat.dev/api/reference/ai-credentials/list-credential-profiles.md): `GET /credential-profiles`. CLI: `boat ai profiles` - [Create a credential profile](https://docs.boat.dev/api/reference/ai-credentials/create-credential-profile.md): `POST /credential-profiles`. CLI: `boat ai profile new` - [Update a credential profile](https://docs.boat.dev/api/reference/ai-credentials/update-credential-profile.md): `PUT /credential-profiles/{profile}` - [Delete a credential profile](https://docs.boat.dev/api/reference/ai-credentials/delete-credential-profile.md): `DELETE /credential-profiles/{profile}`. CLI: `boat ai profile rm` - [Set a credential profile API key](https://docs.boat.dev/api/reference/ai-credentials/set-credential-profile-api-key.md): `PUT /credential-profiles/{profile}/keys/{credential}`. CLI: `boat ai profile set-key` - [Remove a credential profile credential](https://docs.boat.dev/api/reference/ai-credentials/remove-credential-profile-credential.md): `DELETE /credential-profiles/{profile}/keys/{credential}`. CLI: `boat ai profile rm-key` - [List the accounts of a credential](https://docs.boat.dev/api/reference/ai-credentials/list-credential-accounts.md): `GET /credential-profiles/{profile}/accounts/{credential}`. CLI: `boat ai accounts` - [Switch a credential to another account](https://docs.boat.dev/api/reference/ai-credentials/switch-credential-account.md): `PUT /credential-profiles/{profile}/accounts/{credential}/{account}/active`. CLI: `boat ai switch` - [Add another API key to a credential](https://docs.boat.dev/api/reference/ai-credentials/add-credential-account.md): `POST /credential-profiles/{profile}/accounts/{credential}`. CLI: `boat ai add-account` - [Forget an account of a credential](https://docs.boat.dev/api/reference/ai-credentials/forget-credential-account.md): `DELETE /credential-profiles/{profile}/accounts/{credential}/{account}`. CLI: `boat ai forget-account` - [Set a custom API](https://docs.boat.dev/api/reference/ai-credentials/set-custom-api.md): `PUT /credential-profiles/{profile}/custom-apis/{name}`. CLI: `boat ai profile set-api` - [Remove a custom API](https://docs.boat.dev/api/reference/ai-credentials/remove-custom-api.md): `DELETE /credential-profiles/{profile}/custom-apis/{name}`. CLI: `boat ai profile rm-api` - [Get AI credentials proxy](https://docs.boat.dev/api/reference/ai-credentials/get-ai-credentials-proxy.md): `GET /ai-proxy`. CLI: `boat ai proxy` - [Turn the AI credentials proxy on or off](https://docs.boat.dev/api/reference/ai-credentials/turn-the-ai-credentials-proxy-on-or-off.md): `PUT /ai-proxy`. CLI: `boat ai proxy` - [Get AI usage](https://docs.boat.dev/api/reference/ai-credentials/get-ai-usage.md): `GET /ai-usage`. CLI: `boat ai usage` - [Get sandbox AI usage](https://docs.boat.dev/api/reference/ai-credentials/get-sandbox-ai-usage.md): `GET /sandboxes/{sandboxId}/ai-usage`. CLI: `boat ai usage` - [Block or unblock sandbox AI access](https://docs.boat.dev/api/reference/ai-credentials/block-or-unblock-sandbox-ai-access.md): `PUT /sandboxes/{sandboxId}/ai-access`. CLI: `boat ai block / unblock` ## API reference: Account and organizations - [api/reference/account/get-current-boat-user](https://docs.boat.dev/api/reference/account/get-current-boat-user.md) - [List organizations](https://docs.boat.dev/api/reference/account/list-organizations.md): `GET /orgs`. CLI: `boat org list` - [Set the active organization](https://docs.boat.dev/api/reference/account/set-active-organization.md): `PATCH /orgs/active`. CLI: `boat org switch` - [Update organization settings](https://docs.boat.dev/api/reference/account/update-organization.md): `PATCH /orgs/{org}`. CLI: `boat org default-visibility` - [api/reference/account/get-boat-limits](https://docs.boat.dev/api/reference/account/get-boat-limits.md) ## API reference: API keys - [api/reference/account/list-api-keys](https://docs.boat.dev/api/reference/account/list-api-keys.md) - [Create a scoped API key](https://docs.boat.dev/api/reference/account/create-scoped-api-key.md): `POST /api-keys/scoped` - [Rotate an API key](https://docs.boat.dev/api/reference/account/rotate-api-key.md): `POST /api-keys/{apiKeyId}/rotate` - [Revoke an API key](https://docs.boat.dev/api/reference/account/revoke-api-key.md): `DELETE /api-keys/{apiKeyId}` - [Get API key usage](https://docs.boat.dev/api/reference/account/get-api-key-usage.md): `GET /api-keys/{apiKeyId}/usage`. CLI: `boat api-key usage` ## API reference: Webhooks and OpenTelemetry - [List webhooks](https://docs.boat.dev/api/reference/account/list-webhooks.md): `GET /webhooks`. CLI: `boat webhook list` - [Create webhook](https://docs.boat.dev/api/reference/account/create-webhook.md): `POST /webhooks`. CLI: `boat webhook create` - [Get webhook](https://docs.boat.dev/api/reference/account/get-webhook.md): `GET /webhooks/{webhookId}` - [Update webhook](https://docs.boat.dev/api/reference/account/update-webhook.md): `PATCH /webhooks/{webhookId}` - [Delete webhook](https://docs.boat.dev/api/reference/account/delete-webhook.md): `DELETE /webhooks/{webhookId}`. CLI: `boat webhook remove` - [Rotate webhook signing secret](https://docs.boat.dev/api/reference/account/rotate-webhook-signing-secret.md): `POST /webhooks/{webhookId}/rotate`. CLI: `boat webhook rotate` - [Get OpenTelemetry export](https://docs.boat.dev/api/reference/account/get-opentelemetry-export.md): `GET /telemetry`. CLI: `boat telemetry` - [Set OpenTelemetry export](https://docs.boat.dev/api/reference/account/set-opentelemetry-export.md): `PUT /telemetry`. CLI: `boat telemetry set` - [Remove OpenTelemetry export](https://docs.boat.dev/api/reference/account/remove-opentelemetry-export.md): `DELETE /telemetry`. CLI: `boat telemetry unset` ## API reference: Data retention - [Get account data-retention policy](https://docs.boat.dev/api/reference/account/get-account-data-retention-policy.md): `GET /account/data-retention`. CLI: `boat data-retention status` - [Update account data-retention policy](https://docs.boat.dev/api/reference/account/update-account-data-retention-policy.md): `PATCH /account/data-retention`. CLI: `boat data-retention enable` - [Get deletion operation](https://docs.boat.dev/api/reference/account/get-deletion-operation.md): `GET /deletion-operations/{operationId}`. CLI: `boat deletion status` ## Optional - [Full docs in one file](https://docs.boat.dev/llms-full.txt): every page, about 135k tokens.