However you want.
Choose the machines, their operating systems and apps, the network between them and the services they reach. Start from a built-in world or define your own.
Create a worldEvery machine above is running in your browser.
Choose the machines, their operating systems and apps, the network between them and the services they reach. Start from a built-in world or define your own.
Create a world
1 desktop



5 machines, 17 services









9 workstations
















16 people, 16 phones
Each person has a phone or a computer, sees only their own screen and acts on it. A script, a language model or your own agent decides what they do. One built-in society is a company and its buyers on launch day: 21 people.
Read about societies16 people, 16 phones, 1 rumor
Real work crosses people, machines and days. Each job here was done through the screen, with pointer and keyboard, and judged by checks on the world’s state.
See the expert workFork the world at a checkpoint and change a rule, a setting or an action. Every branch starts from the same state, and the same actions always reach the same state. A fork takes 35 µs.
The checker forks at every action an agent may take, to the depth you set, and returns the shortest sequence that breaks a policy. On the reference world it checked 77,748 states and broke 9 of 15 policies.
See the benchmark

Holds: no policy broken

Breaks: policy P12

Breaks: policy P15
Each expert procedure runs twice: through the screen, and through tool calls that reach the same verified state. Across 260 episodes the screen takes 4.8× the actions.
Every domain and episodeThe chart draws from data/expert.json.
We record an application at work, label every frame with its text, its controls and their bounds, rebuild it as a deterministic simulation, and align the two step by step.
Match to the real application
Must be lawfully acquired, Sega v. Accolade (1992) and Google v. Oracle (2021)
Ask for a simulator
Put a product, a price or a pitch in front of simulated buyers, readers and executives, and measure what they choose. Each one has a persona, a budget and a screen of its own.
All researchAn agent that uses your own computer while you watch. It does the work that has no API, in any app you already have.
Download Computatrum
One handle takes actions and returns a scene, a frame and a state hash, in Python, JavaScript and Rust.
Run a first episodepip install computerworld==0.3.0 --find-links https://github.com/ComputaCo/computerworld/releases/expanded_assets/engine-v0.3.0
from computerworld import World
world = World(definition, seed=42)
env = world.environment({"actor": "alice", "machines": ["alice-mac"],
"actions": ["pointer.v1", "keyboard.v1", "application.v1"],
"observations": ["semantic.v1"]})
env.step([{"family": "application.v1", "op": "launch",
"machine": "alice-mac", "payload": {"kind": "code"}}])
scene = env.scene(1440, 900) # roles, names, geometry — no pixels needed
frame = env.render(1440, 900) # or exact RGBA, if your model wants pixels
import init, { World } from "computerworld";
await init();
const world = new World(definition, 42n);
const env = world.environment({ actor: "alice", machines: ["alice-mac"],
actions: ["pointer.v1", "keyboard.v1", "application.v1"],
observations: ["semantic.v1"] });
env.step([{ family: "pointer.v1", op: "click",
machine: "alice-mac", payload: { x: 480, y: 620, width: 1440, height: 900 } }]);
const scene = env.scene(1440, 900);
const snapshot = world.snapshot(); // fork it, replay it, diff it
use computerworld::{reference_world, ActionEnvelope, EnvironmentConfig, World};
let mut world = World::new(reference_world(), 7)?;
let session = world.environment(EnvironmentConfig::desktop("alice", "alice-mac"))?;
world.step(&session, vec![ActionEnvelope::new(
"terminal.v1", "execute", "alice-mac",
serde_json::json!({ "command": "python3 primes.py" }),
)])?;
let checkpoint = world.snapshot();
let branch = world.fork(&checkpoint)?; // explore both futures