---
title: Raster
description: A machine is a persistent Linux computer. You create one, it boots, and it keeps its disk until you delete it.
---

A machine is a persistent Linux computer with a desktop, a shell and a browser. You create
one, it boots, and it keeps its disk until you delete it. Everything in these docs is a call
the API answers today.

```ts
const machine = await client.machines.create({ name: "research", size: "small" });
await machine.waitForDesktop();

await machine.browser.open("https://example.com");
await machine.mouse.click({ at: { x: 640, y: 400 } });
const shot = await machine.screen.screenshot({ format: "png" });
```

<CardGroup cols={2}>
  <Card
    title="Create your first machine"
    href="/docs/tutorial/create-your-first-machine"
    icon="rocket"
  >
    Install an SDK, boot a machine, and drive it, start to finish.
  </Card>
  <Card title="What a machine can do" href="/docs/reference" icon="layers">
    Every capability the product ships, and the limits on each.
  </Card>
  <Card title="SDKs" href="/docs/sdk" icon="code">
    TypeScript, Python, and the command line.
  </Card>
  <Card title="Integrations" href="/docs/integrations" icon="plug">
    Anthropic, OpenAI, MCP, and opencode.
  </Card>
  <Card title="API reference" href="/docs/api" icon="terminal">
    Every operation, generated from the contract the API implements.
  </Card>
  <Card title="How machines behave" href="/docs/explanation/how-machines-behave" icon="book-open">
    The reasoning behind sizes, readiness, coordinates, and exit codes.
  </Card>
</CardGroup>

## The shape of it

One resource matters: a **machine**. Everything else is either a way to drive one
([the desktop](/docs/reference/desktop), [a terminal](/docs/reference/terminal),
[files](/docs/reference/files), [the browser](/docs/reference/browser)), a way to keep one
([snapshots, forks and templates](/docs/reference/persistence)), or a way to reach one
([published ports](/docs/reference/ports), [the realtime gateway](/docs/reference/realtime)).

Two SDKs and a CLI sit on the same API, and four integrations map a vendor's tool vocabulary
onto it. None of them can do anything an API key cannot.
