Can AI agents run a factory?

AI agents write the PLC programs for 100 factory cells. A simulated plant runs every program and grades it on success and safety.

Watch the replays

Best on Hard 72%, GPT-6 Astra / 13 models / 476 test conditions

cell MOT-H01 / Shared motion line01/05
6 conditions / best run 100% / 7 of 13 models passedWatch this cell
Figure 1. Five Hard task cells, drawn from the simulator’s own geometry and seen as their replays open. Each then plays a stretch of a passing agent run, moved by the PLC program shown beside it. Yellow marks what the program moves.

# leaderboard

→

On the 30 Hard tasks the best model passes 72% of its runs. 8 of 13 models pass fewer than half.

#ModelHard pass rateCost per Hard run
1
GPT-6 Astra
OpenAI · Codex
72%
$0.98
2
GPT-6.1 Sol
OpenAI · Codex
70%
$0.25
3
Opus 5.5
Anthropic · Claude Code
60%
$0.87
4
GPT-6.1 Terra
OpenAI · Codex
58%
$0.036
5
Fable 5.1
Anthropic · Claude Code
56%
$5.61
6
Sonnet 5.5
Anthropic · Claude Code
45%
$0.39
7
DeepSeek V4.1 Flash
DeepSeek · mini-swe-agent
21%
$0.019
8
Haiku 5.5
Anthropic · Claude Code
11%
$0.049
9
GPT-6 Luna
OpenAI · Codex
9%
$0.013
10
Nemotron 3.5 Super VL
NVIDIA · mini-swe-agent
6%
$0.070
11
GLM-5.3 Flash
Z.ai · mini-swe-agent
4%
$0.019
12
Solar Pro 4
Upstage · mini-swe-agent
0%
$0.27
12
Solar Mini 4
Upstage · mini-swe-agent
0%
$0.20
0255075100%

Table 1. Results as of 28 October 2026. 13 models, 3 runs per task. A run passes only if every condition succeeds with no safety violation. Bars: pass rate over the scored runs on the 30 Hard tasks, with a 95% interval (bootstrap over tasks). All tasks: pass rate on all 100. Cost: mean API spend per Hard run.

# results

Capable, but not yet consistent

With three runs per task, up to 87% of the Hard tasks are passed at least once (GPT-6.1 Sol and Opus 5.5). Passing all three runs is rarer: at most 60% (GPT-6 Astra).

Best pass rate, 1 run
72%
GPT-6 Astra
Best within 3 runs
87%
GPT-6.1 Sol and Opus 5.5
Best in all 3 runs
60%
GPT-6 Astra
Never passed
3 of 30
Hard tasks, in 117 runs
Hard pass^3, pass@1 and pass@3 per model
Modelpass^3pass@1pass@3
GPT-6 Astra60%72%83%
GPT-6.1 Sol57%70%87%
Opus 5.521%60%87%
GPT-6.1 Terra47%58%67%
Fable 5.137%56%80%
Sonnet 5.525%45%63%
DeepSeek V4.1 Flash13%21%37%
Haiku 5.57%11%20%
GPT-6 Luna3%9%17%
Nemotron 3.5 Super VL0%6%10%
GLM-5.3 Flash0%4%13%
Solar Pro 40%0%0%
Solar Mini 40%0%0%
Figure 2. Pass rates on the 30 Hard tasks per model when all three runs must pass, when one run must, and when any of three may. The yellow bar is the gap between the first and the last: tasks a model can solve but does not solve every time.

Spending more buys little

GPT-6.1 Sol passes within 2.2 points of GPT-6 Astra and costs 4 times less per Hard run. The most expensive model, Fable 5.1 at $5.61 a Hard run, passes 16.7 points fewer than GPT-6 Astra.

Hard pass@1 against the cost of a Hard run, per model
ModelHard pass@1Cost per Hard run
GPT-6 Astra72%$0.98
GPT-6.1 Sol70%$0.25
Opus 5.560%$0.87
GPT-6.1 Terra58%$0.036
Fable 5.156%$5.61
Sonnet 5.545%$0.39
DeepSeek V4.1 Flash21%$0.019
Haiku 5.511%$0.049
GPT-6 Luna9%$0.013
Nemotron 3.5 Super VL6%$0.070
GLM-5.3 Flash4%$0.019
Solar Pro 40%$0.27
Solar Mini 40%$0.20
Figure 3. Hard pass@1 against the mean API cost of a Hard run, with 95% intervals (bootstrap over tasks). A model is on the frontier when no other model is both cheaper and better. Claude Code and Codex costs are the harnesses’ reported API list prices; mini-swe-agent costs are tokens at the provider’s price.

The full leaderboard: safety and the index →

# tasks

100 tasks in two suites, each at three levels: Easy, Medium and Hard. A task is one factory work cell: its devices, an I/O map with exact addresses, an operating spec, a completion condition and safety rules. All come from PLCWorld; we audited and fixed them before ranking any model.

50 tasks

Motion control

Lifts, hoists, rotary tables, gantries and servo axes. In the Hard tasks, independent requests share equipment such as one shuttle or one reference axis: the program schedules it, holds each position and brings every fixture back without a collision.

50 tasks

Material handling

Conveyors with stops, grippers, carriages and robots that move real parts. The Hard tasks add kits, filling lines that share a tank, packing and winding: the program has to know which part is where, not just switch outputs.

MAT-H09, Material handling

Two filling lines, one tank

Two filling lines share one tank and one capping head. The program times refills, container arrivals and hand-offs at the exit, and keeps track of what each container actually received and which cap it got.

6 conditions. 7 of 13 models passed at least one of their runs (43 runs in all).

Watch the replays →

MOT-H01, Motion control

Two hoists, one shuttle

Two hoist cells take requests on their own but share one shuttle and one rotary approach cell. The program serves both, prepares the next job, and returns every moving fixture to its place without a collision.

6 conditions. 7 of 13 models passed at least one of their runs (39 runs in all).

Watch the replays →

MOT-H02, Motion control

Holding position through a reference change

A lift, a gantry and a reference axis serve alignment requests one after another. When the reference changes, every request must still hold its true target position, before the change and after it.

3 conditions. No model has passed it: 0 of 39 runs.

Watch the replays →

All 100 tasks, with replays →

# grading

A program grades every run: no LLM judge and no human grading. Each model works through its own harness (Codex, Claude Code, mini-swe-agent), three runs per task, and leaves one file. Here is one Hard task, MAT-H02, from the brief to the verdict.

  1. 01

    The brief

    Each task describes one work cell: its devices, the I/O map with exact addresses, the operating spec, the completion condition and the safety rules.

    Brief

    MAT-H02

    Maintain accessibility of bypass storage in situations where the FIFO lead and the required types of two kits differ, and transfer actual parts as kit members of the current order.

    Inputs

    Outputs

    Conditions
    9
    Scan
    10 ms
    Signals
  2. 02

    The program

    The agent leaves one IEC 61131-3 Structured Text file, /app/program.st. It gets no PLC compiler and no plant simulator, so the program has to be right before it ever runs.

    program.st

    GPT-6.1 Terra

    156CASE state OF157    0:158        IF NOT X11 AND D1 = 0 AND gen <= 2 THEN159            source := 0;160            dest := 0;161            IF D5 <> 0 AND X15 AND D13 < 2 AND D6 = D11 THEN162                source := 2; dest := 4;163            ELSIF D5 <> 0 AND X16 AND D14 < 2 AND D6 = D12 THEN164                source := 2; dest := 5;165            ELSIF D7 <> 0 AND X15 AND D13 < 2 AND D8 = D11 THEN166                source := 3; dest := 4;167            ELSIF D7 <> 0 AND X16 AND D14 < 2 AND D8 = D12 THEN168                source := 3; dest := 5;169            ELSIF X10 AND D3 <> 0 THEN
    Lines 156–169 of 237, as submitted for MAT-H02: choosing where the next part comes from and where it goes. This program passed every condition.
  3. 03

    The plant

    A separate verifier compiles the file and runs it scan by scan, every 10 ms of plant time, in closed loop with a simulated plant.

    1. 1Sample the inputs
    2. 2Run the program
    3. 3Write the outputs
    4. 4Move the plant

    every 10 ms of plant time

    Repeated under 9 conditions for this task (476 across the benchmark), with device parameters, timings and disturbances varied inside the published ranges.

  4. 04

    The verdict

    Task success and safety are judged separately in every condition. A run passes only if every condition reaches the goal with no safety violation; anything less scores 0.

    ConditionGoalSafety
    1
    2
    3
    4
    5
    6
    7
    8
    9

    Run Pass

    Replay →

    ConditionGoalSafety
    1
    2
    3
    4
    5
    6
    7
    8
    9

    Run Fail

    Replay →

    Two runs of MAT-H02: the replays on its task page.

# access

Run it, or add your model

The tasks, the verifier and the reference programs are public. Send us a model for the leaderboard, or a flaw you found in a task.