# Getting started

caas.sh runs your code in sandboxes: isolated, persistent virtual machines that deploy like containers. Give a coding agent its own machine, put an MCP server online behind an authenticated endpoint, or run a multistep workflow with one sandbox per step. You pay for what they use from a prepaid balance.

This guide takes you from a new account to your first running sandbox, all in the console.

## Sign in

1. Go to [console.caas.sh](https://console.caas.sh/) and choose **Sign up**.
2. Enter your email address and a password, and choose **Create account**. If the page offers **Continue with GitHub** or **Continue with Google**, you can use that instead.
3. If you signed up with email, open the link in the verification email. It verifies your address and signs you in.

You start with a personal workspace, and you are its owner. Sandboxes, MCP servers, workflow runs, API keys and the balance all belong to a workspace. To create another workspace or invite people to one, open **Settings**.

## Add funds

caas.sh is prepaid: usage draws down the workspace's balance, and sandboxes run only while the balance is above $0 and a card is on file.

1. Open **Usage & billing**.
2. In the **Auto-recharge** section, enter an **Amount** from $5 to $2,000, and choose **Add funds**.
3. The first time, Stripe Checkout opens to take the payment and save your card. Later top-ups charge the saved card.

To keep the balance from running out, turn on **Auto-recharge** in the same section: when the balance falls below the amount you set, your card is charged to bring it back up to your target.

A sandbox bills for vCPU only while it computes, and for memory and disk while it runs. See [pricing](/pricing.html) for the rates, and [Billing and usage](/docs/billing) for how the balance works.

## Create your first sandbox

1. Open **Sandboxes** and choose **New sandbox**.
2. Under **1. Choose an image**, keep **Default**: Alpine Linux with bash, coreutils, Node and Docker. In **Command**, enter the command the sandbox runs when it starts:

   ```text
   node --version
   ```

   To work on your own code, also enter a **Repository**, and a **Branch** if it isn't the default one. The repository is cloned into `/workspace` before the command runs.

3. Under **2. Configure**, optionally enter a **Name**, such as `first-sandbox`: lowercase letters, digits and hyphens, unique in the workspace. Keep the **Size** at **M** (1/2 vCPU, 4 GiB of memory, 8 GB of disk). The estimate beside the form shows what the size costs.
4. Leave **Allowed outbound hosts** empty for now. A sandbox reaches only the hosts listed there, one per line, so add any your command needs, such as `registry.npmjs.org`.
5. Keep **Keep state between restarts** checked, so the files in `/workspace` survive stops and restarts.
6. Choose **Create sandbox**.

The sandbox's page opens, and its status changes from **Starting** to **Running**.

## Use the sandbox

On the sandbox's page:

- **Inspect initial run** shows what the command it started with printed.
- **Run a command** runs another command, with a time limit from 1 minute to 2 hours. It runs one executable with its arguments, without a shell, so quote arguments that contain spaces.
- **Take snapshot** saves the workspace. The **Snapshots** card lists your snapshots, and restores one onto a stopped sandbox.
- **Outbound activity** lists the requests the sandbox tried to make, and whether its network policy allowed them.
- **Stop** stops the sandbox, and **Start** starts it again.

A running sandbox stops by itself after 15 minutes without activity: no command running and no requests to it. While it is stopped, it bills for no vCPU, memory or disk, only for storing its snapshots.

When you no longer need the sandbox, delete it from its row's menu in **Sandboxes**.

## Next steps

- [The CLI](/docs/cli): install `caas`, connect it to your workspace, and run sandboxes from a terminal.
- [Sandboxes](/docs/sandboxes): sizes, commands, snapshots, sandbox URLs and the rest of a sandbox's life.
- [Images and the registry](/docs/images): push your own image to `registry.caas.sh` and run it.
- [MCP servers](/docs/mcp): put an MCP server online behind an authenticated endpoint.
- [Workflows](/docs/workflows): run multistep jobs with one sandbox per step, and resume from the step that failed.
- [Credentials and outbound access](/docs/credentials): choose the hosts a sandbox may reach, and add your API keys and tokens to its requests.
- [Billing and usage](/docs/billing): the balance, auto-recharge, spend alerts and the usage report.
- [The API](/docs/api): automate all of this with an API key.
