00Persistent Linux machines

A computer that stays where you left it.

Not a sandbox that disappears when the request ends. A real Linux machine with a disk that survives a stop, a desktop you can watch live, and one keyboard that either your agent or you are holding, never both.

Start a machineor read the quickstart, about four minutes.

$ computer attach research

research · ubuntu 24.04 · small · up 4d 2h · disk kept

the agent holds the keyboard. ctrl+k takes it back.

> open example.com and screenshot the pricing table

browser.open https://example.com · 320ms

screen.screenshot 1512x982 · saved ~/work/pricing.png

>

read-only · ~/work
A session on a machine that was created four days ago and has not been recreated since. The agent is holding the keyboard; ctrl+k takes it.

01Two drivers

One machine, and only ever one keyboard.

An agent and a person can both work on the same computer without fighting for it, because the product never lets them type at once.

It boots, and it stays booted
Create a machine and it runs until you stop it. Stopping keeps the disk; starting brings it back with your files where they were.
Watch it work
A live desktop in the browser at the machine's own resolution. Read-only by default, so watching costs nothing and takes nothing away.
Take the keyboard
One input lease per machine. Take control and the agent stops typing that instant; hand it back and it resumes.
Bring your own agent
No model provider is assumed and no framework is adopted. The API speaks machines, screens, keyboards and terminals, and nothing else.

02The interface

Drive it from code, in whichever framework you already chose.

No substrate vocabulary leaks through the API. There is no pod, no container and no sandbox in it, because none of those are things you asked for.

import { Client } from "@raster/sdk";

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

await machine.waitForDesktop();
await machine.browser.open("https://example.com");
await machine.keyboard.type("hello");

const shot = await machine.screen.screenshot();
The whole surface: create, wait, drive, capture. Everything else in the SDK is a variation on these four.

03Where this is

Half of this is built. Here is which half.

Machines, the live desktop, the terminal, files, organizations, API keys and sessions work today. Snapshots, templates, port previews, usage and billing are being built, and every screen for them says so rather than showing a number nobody measured.

Start a machine and see which is which.