# Introduction

agental gives your agent a Linux VM over HTTP.

Each sandbox is a virtual machine of its own, running Ubuntu 24.04 with Docker installed, and you are root on it. One request creates it, another runs a command in it, and another stops it. Its disk is kept while it is stopped.

- [Quickstart](https://agental.io/docs/quickstart): Create, run and stop a sandbox in three requests.
- [Sandbox lifecycle](https://agental.io/docs/lifecycle): Statuses, time limits, archiving and deletion.
- [Agent skills](https://agental.io/docs/agent-brief): Teach your agent the whole API, move your repository into a sandbox, run agents in parallel, and give sandboxes your keys.
- [API endpoints](https://agental.io/docs/endpoints): Every call, its method and what it does.

## Guides by pillar

The guides are filed under the same five pillars as the features on the site.

- **Execution**: A shell, a browser and a screen, over HTTP. [Running commands](https://agental.io/docs/commands), [GitHub Actions](https://agental.io/docs/github-actions), [Languages and tools](https://agental.io/docs/tools), [Files](https://agental.io/docs/files), [Browser](https://agental.io/docs/browser), [Desktop](https://agental.io/docs/desktop), [Agent skills](https://agental.io/docs/agent-brief), [OpenAI Agents SDK](https://agental.io/docs/openai-agents), [Schedules](https://agental.io/docs/schedules)
- **Persistence**: Stop it, and the whole disk is kept. [Sandbox lifecycle](https://agental.io/docs/lifecycle), [Snapshots](https://agental.io/docs/snapshots), [Forking](https://agental.io/docs/fork), [Templates and secrets](https://agental.io/docs/templates), [Regions](https://agental.io/docs/regions)
- **Connectivity**: Ways in for people, mail, and events out. [SSH](https://agental.io/docs/ssh), [Public URLs](https://agental.io/docs/ports), [Email](https://agental.io/docs/email), [Webhooks](https://agental.io/docs/webhooks)
- **Observability**: What each sandbox uses, and what it costs. [Metrics](https://agental.io/docs/metrics), [Usage](https://agental.io/docs/usage), [OpenTelemetry](https://agental.io/docs/opentelemetry), [Tags and metadata](https://agental.io/docs/tags), [Billing](https://agental.io/docs/billing)
- **Security**: Keys, allowlists, and no runaway machines. [Outbound rules](https://agental.io/docs/outbound-rules), [API keys](https://agental.io/docs/api-keys), [Retries and idempotency](https://agental.io/docs/retries), [Your account and data](https://agental.io/docs/account), [Two-factor sign-in](https://agental.io/docs/two-factor)

## Base URL

```text
https://agental.io/v1
```

## Sizes

| Size | vCPU | Memory | Disk | Per hour |
| --- | --- | --- | --- | --- |
| `tiny` | 1 | 2 GiB | 20 GiB | $0.0135 |
| `small` | 2 | 4 GiB | 40 GiB | $0.027 |
| `medium` | 4 | 8 GiB | 80 GiB | $0.054 |
| `large` | 8 | 16 GiB | 160 GiB | $0.108 |

Leave `size` out to get `small`. Time is billed by the second: running at the full price, and stopped at 5% of it until the sandbox is deleted. The free plan makes tiny and small sandboxes, the $100 plan makes medium ones too, the $500 plan makes every size, the $2,000 plan makes every size. `tiny` has one vCPU, so one busy process holds up everything else in it: it suits work that mostly waits, such as an agent calling a model, a bot or a small service. Builds, Docker images and a browser want `small` or larger.

## Conventions

- Plain HTTP and JSON. Send bodies with `Content-Type: application/json`.
- Every error has the same shape: `{"error":{"code":"...","message":"..."}}`. Branch on `code`.
- A command that exits non-zero is still HTTP 200. Read `exitCode` in the body.
- Creates and forks carry an `Idempotency-Key`, so retrying them is always safe.

---

Every page of these docs as Markdown: [llms.txt](https://agental.io/llms.txt)
