Focus on your robot. We run the cloud.

Worlds to test in, generated by a frontier 3D world model. Compute that runs on our pools or on your own machines. Campaigns of thousands of scenarios, retried, deduplicated and indexed. And, if you want it, a measure of whether your tests would notice your robot getting worse.

Runs on

17,000
tasks dispatched a second on one pool, measured on Cloudflare's edge.
55 ms
median lease latency at the edge.
100,000
tasks accepted in a single request, each quoted before it is.
$0
for every run in a world you already built. A world is paid for once.

One command. A thousand runs.

Each tile is one task: a scenario, a world, a verdict. The dispatcher hands them out, a managed pool or your own machines run them, and every verdict lands in the index with whatever decided it.

  1. 01
    Every task is a row firstBefore it is a queue entry. Leases carry a token and a deadline; a runner that dies hands its work back.
  2. 02
    Up to 256 shards a campaignStriped in blocks, so a 100,000-task sweep is leased as fast as it is asked for.
  3. 03
    Every outcome on recordSpec, output, duration and exit code, queryable per workspace for as long as you keep them.
What a run costs
seed sweep 001-024 · nightly-regression

24 tasks, one world each, simulated in this pageFAIL: a time to collision under 1.2 s

Your robot is the hard part. The cloud should not be.

You build the robot. We handle the places it is tested in, the machines that run the tests, and the record of what happened.

Worlds without a 3D artist

Describe a scenario; a frontier world model builds the place: splats, a collider mesh and, on the standard tier, a metric scale. Built once, reused for free.

Compute that is not yours to run

Managed pools run each task on RunPod Serverless and scale to zero when idle. We are rolling these out now.

Or your own machines

When a test needs your simulator, your robot's stack, a GPU or data that must not leave the lab, one runner binary pulls work over HTTPS. Nothing connects in.

Verdicts you decide

No model judges your robot. A verdict comes from your checker or an expression you wrote, and says whether it could have failed at all.

What it does not do yet, said plainly: a generated world is static, with no dynamics or moving actors, so it tests perception, not closed-loop control. And whether a score in a generated world predicts one on the bench or the road has not been measured.

Submit, run, query.

Three moves from a JSON file to thousands of verdicts, with nothing to operate in between.

# nightly.json
{ "pool": "lab-cpu", "dedupe": true,
  "tasks": [{ "spec": {
    "world": {
      "scenario": "cut-in.xosc",
      "model": "draft" } } }, ...] }
01

Describe a campaign.

A pool, a priority, and up to 100,000 task specs per request. Every submission is quoted before it is accepted, and scenarios from the catalogue become signed inputs.

$ runner --pool=lab-cpu \
    --dispatcher=$SIMCLOUD_URL \
    --token=$SIMCLOUD_TOKEN

leased   c_7q2f.0.118   attempt 1
heartbeat ok
completed succeeded   41.2 s
02

Choose where it runs.

A managed pool, where each task runs on RunPod Serverless and nothing idles. Or your own machines: one runner binary that pulls leases, runs each task as a local process, and reports back.

  • succeeded12,480
  • parked3
  • retried17
  • duplicates0
  • expired0
03

SimCloud does the rest.

Leases with tokens and TTLs, retries with backoff, parking after repeated failures, fair scheduling between teams, and a queryable result index.

On your own machines, any simulator runs.

On a self-hosted pool a task is any command that reads a spec and writes a run summary. Exit 75 to ask for a retry; everything else is yours. Managed pools run the world-model engine. Ask for the task contract.

CARLA
esmini
Gazebo
Isaac Sim
AirSim
BeamNG
Webots
MuJoCo
Unity
Unreal
ROS 2
yours

Run campaigns with zero ops.

Durable rows, fair leases, admission control and a queryable index, all on the edge near your runners.

One task, five states

queued
leased
retry
leased
done

Dispatch that survives everything

Every task is a row before it is a queue entry. Leases carry a token and a deadline, heartbeats extend them, and a runner that dies simply hands its work back.

Pool lab-gpu

  • P9urgent smoke testnext
  • P5nightly regressionfair share

Fair between teams

A campaign joins the pool at its current virtual time, so a 100,000-task sweep never starves the ten-task smoke test submitted after it - and priority still jumps the queue when you need it to.

maxInflight 50 · 31 leased

Admission control per campaign

Cap in-flight tasks so a single campaign cannot flood a GPU pool. Releases are asynchronous, so the cap costs nothing on the hot path.

Re-submitted, dedupe on

skipped 11,900accepted 600

Skip what already passed

Turn on dedupe and re-submitting last night's campaign only runs the scenarios that changed or failed. Keys are content hashes of the canonical spec.

cut-in.xosc

entities 2events 1valid

OpenSCENARIO in, a model out

Upload .xosc files, get strict validation and an engine-neutral JSON model with entities, triggers and actions your tooling can reason about.

GET /v1/results?where=
  spec.map=rotterdam,
  output.summary.metrics.collisions>0
  &state=succeeded

Query results like a database

Every terminal task lands in an index with its spec, output and duration. Filter with a small expression language and page through millions of rows.

Infrastructure for simulation engineers.

Everything a regression pipeline needs, without a platform team to run it.

Bring your own simulator

On a self-hosted pool, any process that reads a spec and writes a summary. No SDK inside it is required.

Runs where you choose

Managed RunPod Serverless pools, or a single runner binary on your own machines.

Placed near you

Workspaces can pin campaign state to the Asia-Pacific region.

Live in the browser

Counters for every campaign in the console, polling less as a campaign goes quiet.

Idempotent everything

Idempotency keys on submissions; duplicate tasks are rejected, not run twice.

Result index in SQL

Durations, exit codes, outputs and specs, queryable per tenant.

Scenario catalogue

Content-addressed uploads, tags, search and signed download links.

Metered per world generated

Usage by day, pool or campaign, priced per provider credit; a world served from cache is free.

Secure and resilient by default.

Credentials stay where the compute is, never in a task spec. On a self-hosted pool the control plane sees only specs and summaries.

Self-hosted means self-hosted

On your own runners, only task specs and summaries cross the boundary; artefacts stay where you put them.

Scoped tokens

Runner tokens can be limited to named pools; user tokens cannot manage the workspace.

Signed scenario links

Inputs are fetched with HMAC-signed, expiring URLs, never bearer tokens.

Sessions done right

HttpOnly, same-site cookies with cross-site writes refused at the edge.

Auditable billing

Every credit and charge is a ledger row, and a charge comes from the provider's own receipt.

Residency on request

Workspaces can pin state to the Asia-Pacific region.

Optional add-on

Would your tests notice your robot getting worse?

A thousand passing scenarios prove nothing if none of them would fail. Mutational injects faults into the system under test, sweeps your corpus, and says which scenarios actually guard against which failures.

A separate product, with its own account and pricing. SimCloud works without it.

  1. 01

    What each scenario guards

    Which faults each scenario catches, through which check, and which scenarios catch nothing at all.

  2. 02

    What to add, what to delete

    A worklist of the gaps, most urgent first, and which scenarios are safe to remove.

  3. 03

    A gate for CI

    Did this build lose coverage? Asked of a shared history, with an exit code your pipeline understands.

  4. 04

    On your machines, or ours

    Run it on your own machines today. In preview, a whole sweep runs as one task on a SimCloud managed pool.

Visit mutational.in

Mutational and SimCloud are both made by Mutational. Each has its own account; neither needs the other.

Put your robot through a thousand places.

Free credit on every new workspace, enough for a few dozen draft worlds, and unlimited runs inside them.

  • No subscription and no seats.
  • Every run priced before it starts.