For self-driving and robot teams. Mutational breaks your system on purpose, inside the simulator you already run, and shows which tests notice - which pass no matter what, which you can retire, and what a release quietly stopped catching.

Runs against

4,959 26
scenario readings needed to decide deletions by hand, narrowed to a shortlist. Measured on a production self-driving corpus mid-migration.
9 of 20
scenarios a capable model wrote that caught no fault at all - and all of them looked fine. A sweep said so in seconds.
12 of 16
failures a twin rehearsal said "go" on before the robot moved, in a stand-in for a model-driven home humanoid.
1 exit code
is the whole contract with your simulator. CARLA, Isaac Lab, MuJoCo and a production AV stack already speak it.

Green is not proof.

A simulation suite is the evidence a release is safe. Three things make it evidence of less than it looks - and none of them turns anything red.

01

Tests that cannot fail

A scenario whose checks no fault can trip still passes on every merge. On fifty Meta-World tasks, every one of 265 caught faults failed through a single check - did the task finish - while an arm could sweep through anything else on the table.

02

A better system erases coverage

When the stack improves, the scenario kept for last year's weakness stops testing it - and still passes. Every other gate fires when the system gets worse. This one fires when the suite did.

03

Generated tests look fine

Models now write scenarios faster than anyone can read them. Close to half of what a capable model proposes tests nothing and passes. Only a sweep can tell which half.

Built for the teams that ship on simulation.

Self-driving teams

Delete scenarios with evidence. Gate releases on coverage.

  • Mid-migration triage. An architecture change broke scenarios in bulk. Each gets KEEP, DELETE or CANNOT TELL, with the defects only it catches named. 4,959 readings down to 26, measured on a production corpus.
  • A release gate on lost coverage. CI fails the build that stopped catching something - by name - not the one whose pass rate moved.
  • Evidence your safety case can cite. Coverage indexed by hazard, which hazards rest on one scenario, and which no fault in your catalogue can reach. ISO 26262 names fault injection as a verification method.
  • Your stack, untouched. CARLA's scenario runner, or a profile-driven adapter for a simulator with a separate autonomy stack. Scenarios never leave your network.
Book a self-driving pilot

Robot teams

Qualify every model update before it reaches the hardware.

  • Every policy, skill or memory update is a new system. Gate each one on what your suite still catches, and see which scenarios the better model outgrew.
  • Can you trust the rehearsal, and the success judge? mutational standin measures where a twin rehearsal says go, or a judge says done, and the real run fails. In a stand-in for a model-driven home humanoid, the robot's own report claimed success on every false grasp.
  • Model-written scenarios, accepted only by a sweep. An agent works the list of what your suite does not prove; nothing it writes counts until it catches something.
  • Adapters for the simulators you use. Isaac Lab, MuJoCo and Meta-World, ManiSkill - and one exit code for anything else.

From January 2027 the EU Machinery Regulation requires a notified body to assess machinery whose safety functions rely on self-evolving machine learning. Every Mutational report can be replayed from its recording by someone who was not there.

Book a robotics pilot

When can the simulator stand for the robot?

Evidence

Calibrate the simulator, decide with intervals, sign what you decided.

  • Calibration, sim against real. The same systems and scenarios on both sides: how far the success rates agree and rank alike, each with its interval, and a verdict - trusted, screen only, untrusted, or cannot tell.
  • Accept, reject or defer. A new system against the old on an interval for the difference, and how many trials it takes to tell - so "no difference" is never a sample too small to see one.
  • Signed evidence packs. The calibration, the decision and the clauses they answer, in one document signed where it was made, and checked by anybody with the public key and nothing of ours.
How it works

SimCloud Twins

Start from a robot model somebody checked.

  • Certified robot models. One spec, exported to URDF, MJCF and USD, checked for consistency and across engines.
  • Fitted to recorded data. System identification from LeRobot episodes, and a fidelity report card that says how closely the twin tracks the real arm.
  • A fault catalogue to sweep it with. Each twin ships the catalogue Mutational sweeps it with, and a check that your policy's inputs and outputs fit it.
See SimCloud Twins

Try it here.

No install, no simulator, no sign-in. The real binary, compiled to WebAssembly, replaying a real sweep: six Meta-World manipulation tasks in MuJoCo, 542 simulator runs.

  1. 01
    Read a real sweep542 recorded MuJoCo runs of six Meta-World tasks, replayed into the full report.
  2. 02
    The loop, on a known answerThree releases of a driving stack against one unchanged corpus. Watch a scenario go dark.
  3. 03
    What if I delete these?KEEP, DELETE or CANNOT TELL for each scenario, from what that sweep observed.
Everything else, in the playground
mutational - the real binary, running in this tab
542 recorded MuJoCo runs of six manipulation tasks. Nothing is uploaded: there is nothing to upload to.
====================================================================
MUTATIONAL REPORT
====================================================================
runner            replay: 542 recorded runs

discrimination    31.9%  (23 of 72 injected defects detected)
scenarios         6 scored, 0 skipped, 10 inconclusive defects
undeliverable     26 defects could not be expressed in the scenarios aimed at,
                  and are excluded: not exposed, and not missed either.

PER SCENARIO
? reach-v3                                   0.0%   0/10  flake 0%
  drawer-close-v3                           15.4%   2/13  flake 0%
  door-open-v3                              16.7%   2/12  flake 0%
  button-press-v3                           45.5%   5/11  flake 0%
  pick-place-v3                             50.0%   7/14  flake 0%
  push-v3                                   58.3%   7/12  flake 0%

Press "Run it here" to load the binary (3.7 MB) and produce this report
yourself, from the recording, in this tab.

From green to proven. In three steps.

01

Inject a fault.

A catalogue of ways your system gets worse - a blinded sensor, a stale picture, a weak grip, a skill that reports success it did not have - delivered through your own adapter.

02

Watch which tests object.

Each scenario's own pass/fail checks are the oracle. Verdicts are held against that scenario's own flake rate, so noise is never read as a catch.

  • junction_unprotected_leftKEEP
  • highway_merge_denseDELETE
  • parked_van_occlusionKEEP
  • empty_route_no_actorsDELETE
  • legacy_roundabout_v2CANNOT TELL
03

Keep what earns its place.

Keep, delete, or cannot tell - each with the evidence behind it. And it says plainly when it cannot tell.

What your tests prove. All in one place.

Hazards

  • Collision4 scenarios
  • Bystander contactrests on 1
  • Object droppedunevidenced

Evidence by hazard

A catch counts for the check that actually failed - not for what a fault was aimed at. See which hazards rest on a single scenario.

$ mutational gate --fingerprint v3
against arm-v1

  heavy_mug_far_edge
    no longer catches  weak-grip x0.5
    no longer catches  weak-grip x0.75

exit 1 - the corpus lost coverage

A gate on lost coverage

Release after release, the gate fires on what a build stopped catching - not on a rate that moved. An unanswered question is never a pass.

Replay without a simulator

Record a sweep once where the simulator lives. Replay it anywhere into the full report - in CI, on a laptop, or in this browser.

Worklist

  • P1Bystander contact has no evidence
  • P2weak-grip is caught by nothing
  • P21 scenario set aside: harness

A worklist, most urgent first

What to do to the corpus next, for whoever - or whatever - is improving it. Field incidents raise demand; only a sweep is evidence.

POST  /v1/sweeps

curl https://collector.mutational.in/v1/sweeps
  --header 'Authorization: Bearer mutational_...'
  --json @sweep.json

API & MCP access

Everything the CLI does is an API call or an MCP tool. Post sweeps from CI, ask the gate from a pipeline, drive it all from an agent.

This tab's worker removed

fetchXMLHttpRequestWebSocketcachesEventSource+ more

Private by construction

In the browser your files never leave the tab: the worker that reads your files deletes its own network first. On the collector, adapter output is never stored.

A loop your team, or your agent, can run.

Your simulator stays where it is and your scenarios stay in your checkout. Mutational says what they do not prove yet, and is the one thing in the loop that decides whether a new scenario helped.

Anyone may propose. Only a sweep accepts.

  1. 01

    The worklist

    What your tests do not prove yet, most urgent first: a hazard with nothing behind it, a fault nothing catches, a scenario that stopped testing what it was kept for. Field incidents raise an item. Only a sweep closes one.

  2. 02

    Someone writes a scenario

    An engineer, or a coding agent working in your checkout through mutational mcp. Either way it is a claim: describing a scenario differently changes nothing, and changing what it asserts does.

  3. 03

    Your machines sweep

    On your laptop, in CI, or on a worker next to the simulator that dials out, behind your VPN. It runs the adapter its own project file pins, and nothing the cloud sends can change your corpus.

  4. 04

    The sweep decides

    accept answers from that sweep: earns its place, duplicate, or catches nothing. Close to half of what a capable model writes tests nothing and looks fine; this is where it is found out.

  5. 05

    Every release is held to it

    The gate fails the build that stopped catching something, by name, and not the one whose pass rate moved - including the build where the system got better and a scenario quietly stopped testing anything.

Built for agents. Meet Mutational MCP.

Coding agents

Any agent that speaks MCP: over stdio beside the simulator, or over HTTP to the cloud with an agent token.

Scenario engineers

A model reads the worklist, writes a scenario, and asks a sweep whether it earned its place.

Field models

The model operating the real robot gets three tools and no more: to say what happened.

.mcp.json
{
  "mcpServers": {
    "mutational": {
      "command": "mutational",
      "args": ["mcp", "--project", "mutational.project.json"]
    }
  }
}

tools  orient · next · sweep_start · job_status · accept · gate
       triage · asserts · catalogue · history · field_add · ...

One history. Every build measured against it.

suite.json

  • arm-v142.9%
  • arm-v242.9%
  • arm-v3lost 2

A shared, hosted history

Every CI build posts its sweep to one collector. Two builds line up as one series, whatever machine ran them.

API tokens

  • github actionsfull
  • scenario engineeragent

An agent's token adds. It cannot delete, or replace a sweep with one that catches less.

Tokens an agent cannot abuse

Give the model that keeps your corpus a token that cannot rewrite the history its work is gated on.

DELETE /v1/sweeps/swp_2fb1...
200  the sweep, its rows, its recording

at rest, per run:
  key · injected · outcome · reason

Yours to take back

What the adapter printed - paths, serial numbers - is stripped before upload. Delete a sweep and its recording goes with it.

A pilot, on your simulator, results in two weeks.

You keep your simulator, your scenarios and your stack where they are. We connect to them, measure them, and hand you what we found. The pilot's workspace runs at Programme's limits for 56 days, so there is time to use it.

  1. Days 1-3

    Connect your simulator

    We write the adapter with you: one script that runs a scenario with a fault and exits 0 or 1. mutational doctor proves it injects before a campaign is spent.

  2. Week 1

    Sweep your suite

    Every scenario against your fault catalogue, on your machines. You get what each one catches, what nothing catches, and what can go.

  3. Week 2

    Gate it in CI

    The gate on lost coverage in your pipeline, a hosted history every build is measured against - and, for robots, your rehearsal or success judge measured against the real run.

What you get at the end looks like this: a sample pilot report, made on a stand-in for a humanoid home robot, with every figure linked to the run that produced it.

What a first sweep costs

The bound mutational doctor prints for your real suite, from guesses. Every scenario runs its clean baselines, the canary, and every fault variation its trials.

Runs, at most
20,000
Simulator time
13.9 days
Wall clock
20.8 h
Compute
$233

An upper bound: a caught fault settles in fewer trials, and a scenario whose clean runs fail costs nothing more. Runs your adapter refuses come on top. After the first sweep, a cache re-runs only scenarios that changed.

Talk about a pilot

Or write to admin@mutational.in. Tell us your simulator and roughly how many scenarios you run.

Priced by the corpus.

You pay for how much of a corpus is under measurement - never per seat, and never per finding. A tool paid for every regression it reports is paid to report regressions. Billed yearly; the binary runs beside your simulator and checks its licence offline.

Open

$0

Sign in with your email · no card

Universities, open source, evaluation.

  • Up to 100 scenarios a sweep, no licence needed
  • 1 corpus, 1 system gated
  • Hosted history, gate and dashboard
  • The CLI, local MCP and the playground

Team

$180 /year

One validation team

One corpus, measured whole.

  • Up to 1,000 scenarios under measurement
  • 1 corpus, 2 systems gated
  • A signed licence for the CLI, offline
  • Triage, the worklist and a CI gate
For a programme

Programme

$600 /year

An AV or robotics programme

Several corpora, and models driving them.

  • Up to 5,000 scenarios under measurement
  • 3 corpora, 10 systems gated
  • Campaigns run from the cloud by your workers
  • The collector's MCP endpoint for remote agents

Enterprise

From $1,500

A year, organisation-wide

Air-gapped if it has to be.

  • Unlimited corpora, scenarios and systems
  • Licences for air-gapped machines
  • A collector in your own cloud
  • SSO, audit and a support SLA

Add-ons, on Team or Programme: another corpus for $150 a year; 1,000 more scenarios for $60 a year.

Start with a pilot: $200 once, for 56 days at Programme's limits on your own simulator - your triage report and a CI gate at the end - and what it cost comes off your first year of Team or Programme. Buy a pilot or talk to us first. No account? The playground runs every read-only command in your browser.

Frequently Asked Questions

Can't find what you are looking for? Write to us.

What does Mutational actually measure?

Whether your simulation scenarios would fail if the system under test got worse. It injects faults from a catalogue - a blinded sensor, a lagging picture, a weak grip - and watches whether each scenario's own pass/fail checks object. A scenario that no fault can fail costs compute on every merge and is evidence of nothing.

We already have a simulation platform. Does this replace it?

No. It sits over whatever you run - CARLA, Isaac Lab, MuJoCo, an in-house simulator, a vendor platform - through one script, and asks it a question it cannot ask itself: if the system got worse, would any of these scenarios fail? It simulates nothing, and your simulator stays where it is.

Does it certify our system as safe?

No, and it never says so. It measures what your tests would catch, against a fault catalogue it prints the limits of, and records it so that someone else can check it: every report replays from its recording. Deciding what that evidence is worth is your safety team's, or your assessor's - not ours.

What is a stand-in, and why measure one?

A check that decides from something cheaper than the world: a rehearsal of the plan in a digital twin before the robot moves, or a judge - a skill's own result, a vision-language model looking at the scene - that says the task succeeded. Both can say go, or done, when the real run fails. mutational standin sweeps the stand-in beside the real run and names every fault where the two disagree.

What do I need to integrate it?

One script that runs a scenario and honours an exit code: 0 if it passed, 1 if it failed, 3 if the fault means nothing in that scenario, anything else if the harness broke. The fault arrives as JSON in an environment variable. It has been run through reference adapters for CARLA, Isaac Lab and Meta-World on MuJoCo, written this way.

Do my scenarios or recordings leave my machine?

Sweeps run where your simulator is, and scenario source never leaves it: the collector refuses it by name, along with your adapter's command line, its environment and any path. What --post sends is a summary - scenario names, scores, which faults were caught - and, if you ask, the recording with everything your adapter printed stripped out.

A hosted worklist needs more than a summary, and gets it only when you say so: mutational project push sends the fault catalogue, what each scenario asserts and the format a model may write in, and says what it is sending every time it runs.

In the browser, nothing leaves the tab. The worker that reads your files deletes its own network access before it accepts one, and this site's account API refuses any request larger than four kilobytes - there is nowhere here to send a file.

What does Open include, and when is a licence needed?

Open is free: a sweep of up to 100 scenarios runs with no licence, and a workspace keeps 1 corpus, 500 sweeps posted a month, 5 GB at rest - recordings, full records and project documents together - 5 API tokens and 365 days of history. Past 100 scenarios a sweep needs a licence: a file your dashboard issues once a plan is paid for, which the binary checks offline against a key built into it and never phones home about. Universities and open-source maintainers can ask for a free academic licence. A sweep refused for a limit is still on the machine that ran it, and can be posted later from its recording.

How do I get the command-line tool?

Sign in with your email and download it from your dashboard: one static binary for macOS or Linux, on Apple silicon, Intel or Arm, with its checksum. There is an install one-liner for CI.

Can an AI agent drive it?

Yes. mutational mcp serves everything over the Model Context Protocol beside your simulator, and the collector serves the same tools over HTTP for an agent that is somewhere else. The rule both enforce is the product: a model may propose anything, and only a sweep accepts it. A coding agent working in your checkout can read the worklist, write a scenario and ask a sweep whether it earned its place. Give it an agent token and it can add to your history and queue campaigns - and cannot delete anything, or replace a build's sweep with one that catches less. Nothing here holds a model key of yours.

How do I delete my data?

Delete any sweep through the API and its recording goes with it. Delete your account from the dashboard and the whole workspace goes: recordings first, then every row.

Find out what your tests prove.

Results in two weeks, on your simulator, with your scenarios where they are. Or sign in and start on your own: Open is free, and measures up to 100 scenarios a sweep with no licence.