> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sailresearch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create

> Start a Sailbox from an image or a checkpoint

`Sailbox.create()` boots a fresh VM and lists it under an App. Apps group Sailboxes within
your organization. The VM is ready to use as soon as it returns.

```bash CLI theme={null}
sail box create --app my-app --name worker
```

```python Python theme={null}
import sail

app = sail.App.find(name="my-app", mint_if_missing=True)
sb = sail.Sailbox.create(app=app, name="worker")
print(sb.run("echo hello").stdout)
```

```typescript TypeScript theme={null}
import { App, Sailbox } from "@sailresearch/sdk";

const app = await App.find("my-app", { mintIfMissing: true });
const sb = await Sailbox.create({ app, name: "worker" });
console.log((await sb.run("echo hello")).stdout);
```

Save the Sailbox ID to [connect again](https://docs.sailresearch.com/sailboxes-connect.md) later. Disconnecting
your client does not terminate the Sailbox.

## Resource limits

You do not need to choose a size. By default, each Sailbox has:

| Resource | Default |
| - | - |
| CPU | 8 vCPUs |
| Memory | Up to 64 GiB |
| Disk | Up to 256 GiB |

> [!WARNING]
>
> 64-vCPU Sailboxes are in public beta. If you are interested, reach out to us
> in the [community
> Slack](https://join.slack.com/t/sailresearchcrew/shared_invite/zt-41pdcym9j-UU0Ey~A~r6n2H0DQVQsQHQ).

These are limits, not reserved resources. You pay for
[actual usage](https://docs.sailresearch.com/sailboxes-pricing.md).

Set [resource limits on an image](https://docs.sailresearch.com/sailboxes-images#set-resource-limits)
to reuse them across creates. To override those limits for one create, pass `vcpu_count`, `memory_limit_gib`, or `disk_limit_gib`
in Python; `vcpuCount`, `memoryLimitGib`, or `diskLimitGib` in TypeScript;
or `--vcpus`, `--memory-limit-gib`, or `--disk-limit-gib` in the CLI.
See [create options](https://docs.sailresearch.com/sailbox-sdk.md#sailbox-create) for supported ranges.
Explicit limits round up to powers of two. CPU, memory, and disk limits
are independent. You can also [change limits later](https://docs.sailresearch.com/sailboxes-lifecycle.md#set-limits).

## Common options

| Option | Use it to |
| - | - |
| `image` | Start from a [custom image](https://docs.sailresearch.com/sailboxes-images). |
| `env` | Set environment variables for commands. |
| `ingress_ports` / `ingressPorts` | Expose [HTTP, TCP, or UDP ports](https://docs.sailresearch.com/sailboxes-networking.md). |
| `egress_policy` / `egressPolicy` | Restrict outbound connections or [inject credentials](https://docs.sailresearch.com/sailboxes-egress-policy.md). |
| `auto_sleep` / `autoSleep` | Choose when an idle Sailbox [sleeps](https://docs.sailresearch.com/sailboxes-autosleep). |
| `max_lifetime_seconds` / `maxLifetimeSeconds` | Terminate it after a fixed [wall-clock lifetime](https://docs.sailresearch.com/sailboxes-lifecycle.md#limit-the-lifetime). |
| `visibility` | Choose [organization or private access](https://docs.sailresearch.com/sailboxes-access-control). |

See [create options](https://docs.sailresearch.com/sailbox-sdk.md#sailbox-create) for limits, defaults, and all
supported arguments.

## Use a custom image

```python Python theme={null}
image = sail.Image.debian_amd64.pip_install("requests")
sb = sail.Sailbox.create(app=app, name="worker", image=image)
```

```typescript TypeScript theme={null}
import { Image } from "@sailresearch/sdk";

const image = Image.debian("amd64").pipInstall("requests");
const sb = await Sailbox.create({ app, name: "worker", image });
```

The first create may wait for the image to build. Later creates reuse it.
See [Custom images](https://docs.sailresearch.com/sailboxes-images) for Dockerfiles and Compose projects.

## Copy an existing Sailbox

Take a checkpoint and start a new Sailbox from it. The copy has its own disk
and identity. See [Snapshots and forks](https://docs.sailresearch.com/sailboxes-forking.md).

## Clean up

```bash CLI theme={null}
sail box terminate <id>
```

```python Python theme={null}
sb.terminate()
```

```typescript TypeScript theme={null}
await sb.terminate();
```

Termination permanently deletes the Sailbox. Use [sleep or pause](https://docs.sailresearch.com/sailboxes-lifecycle.md)
when you want to keep it.
