CADWorld: Computer-Use Benchmark for Long-Horizon Computer-Aided Design
Organizations: Georgia Institute of Technology · North Carolina State University · Marquette University · Saros Lab ·
Abstract
Computer-use agents are increasingly evaluated in realistic desktop environments, but existing benchmarks provide limited coverage of professional engineering workflows whose outputs are persistent, structured artifacts. Mechanical computer-aided design (CAD) is a particularly demanding setting: an agent must manipulate geometry and constraints over long interaction horizons while producing a native project whose dimensions, construction structure, and downstream engineering state remain valid. We introduce CADWorld, a benchmark for long-horizon computer use in FreeCAD. CADWorld contains 200 tasks spanning 11 mechanical-CAD workflow categories, including sketching, part modeling, assembly, CAM, FEM, measurement, mesh processing, and technical drawing. Agents operate through screenshots and GUI actions, while success is determined by task-specific executable checks over saved FreeCAD artifacts and auxiliary outputs, covering geometric properties, parametric structure, constraints, manufacturing state, and simulation results. Across seven current agents on the full benchmark, the strongest agent achieves 17.5% success, compared with an 87.0% expert reference pass. We find that weaker agents often fail before producing a valid artifact, whereas stronger agents increasingly fail on structural, geometric, and construction-process requirements. CADWorld therefore exposes a gap between general GUI competence and reliable execution of persistent, verifiable engineering workflows. Project accessible at https://cad-world.github.io.
Figures & tables
| CAD Artifact | Evaluation | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Benchmark | #Eval. Units | Interact. | Inputs | Native Editable | Precise CAD | Human- Auth. | Task- Specific | Diagnostic Eval. | Horizon |
| OSWorld 2.0 Yuan et al. (2026) | 108 workflows | / | T | – | – | ✓ | ✓ | ✗ | III |
| ALE Sun et al. (2026) | 1,490 inst. | / | T | – | – | ✓ | ✓ | ✗ | III |
| CADPrompt Alrashedy et al. (2024) | 200 prompts | T | ✗ | ✓ | ✓ | ✗ | ✗ | I | |
| CADBench Doris et al. (2026) | 18,000 samples | I/Mesh | ✗ | ✓ | ✗ | ✗ | ✗ | I | |
| BenchCAD Zhang et al. (2026) | 2400QA+748Edit | T/I/Code | ✗ | ✓ | ✗ | ✗ | ✗ | I | |
| Category | #T | #C | #Pre | #Img | Evaluator | Concept Group | Representative Knowledge Points / Operations |
|---|---|---|---|---|---|---|---|
| Sketch | 63 | 60 | 8 | 21 | Sketch geometry/constraints | Primitives, curves, constraints, and sketch editing | Point, line, polyline, rectangle, polygon, slot, arcs, circles, ellipses, B-splines, dimensional and geometric constraints, construction geometry, fillet, chamfer, trim, split, extend, projection, carbon copy, move, rotation, offset, mirror, and B-spline editing. |
| Part | 77 | 61 | 35 | 30 | Part/model metadata | 3D creation, subtractive features, transformations, patterns, and surfaces | Pad, pocket, hole, revolve, groove, additive/subtractive loft, pipe and helix, box, cylinder, sphere, cone, ellipsoid, torus, prism, wedge, extrusion, face from wires, ruled surface, sweep, fillet, chamfer, draft, thickness, mirror, linear/polar pattern, multi-transform, scale, section, offset, and surface projection. |
| Assembly | 25 | 12 | 25 | 50 | Assembly joints/ metadata info | Relationships and joints type | Fixed, revolute, cylindrical, slider, ball, distance, parallel, perpendicular, angle, rack-and-pinion, screw, and gear/belt joints. |
| CAM | 15 | 23 | 15 | 15 | Boolean stock-removal | Setup, machining operations, simulation, and verification | Tool-bit setup, profile, pocket, face, helix, adaptive, slot, drilling, engraving, 3D pocket, operation copy and array, dress-up operations, toolpath inspection, stock simulation, sanity checking, and post-processing. |
| FEM | 3 | 3 | 3 | 2 | Model + CSV checks | Simulation conditions | Constraints, loads, and temperature conditions. |
| Appearance | 3 | 3 | 2 | 0 | Material/model metadata | Material definition, visual and surface properties | Material assignment, material appearance, and color. |
| Model | Success | Finish | Avg. In (K) | Avg. Out (K) | Avg. Cost | Fin. In (K) | Fin. Out (K) | Avg. Act. | Fin. Act. | Succ. Act. | Rank |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Human Expert | 87.0% | 100% | – | – | – | – | – | 26.5 | 26.5 | 26.5 | – |
| GPT5.4 (CUA) | 17.5% | 62.5% | 3182.4 | 22.6 | N/A | 2608.8 | 12.0 | 104.6 | 74.1 | 46.9 | 1 |
| Opus4.8 (CUA) | 16.0% | 49.5% | 1452.1 | 25.0 | 10.00 | 1292.5 | 10.4 | 71.8 | 43.4 | 31.3 | 2 |
| Kimi K2.6 | 7.5% | 20.5% | 654.6 | 31.5 | 0.60 | 257.7 | 13.9 | 93.6 | 57.2 | 45.7 | 3 |
| OpenCUA | 1.5% | 8.0% | 878.9 | 8.6 | N/A | 535.1 | 7.1 | 90.2 | 71.8 | 59.7 | 4 |
| Holo 3.1 | 0.5% | 21.5% | 686.7 | 14.5 | N/A | 300.2 | 9.4 | 85.4 | 56.7 | 79.0 | 5 |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| Action | Description |
|---|---|
| moveTo(x, y) | Moves the mouse to , optionally over a specified duration. |
| click(x, y) | Clicks at the specified coordinates with an optional mouse button and click count. |
| doubleClick(x, y) / tripleClick(x, y) | Performs repeated clicks at the specified coordinates. |
| rightClick(x, y) | Performs a right click at the specified coordinates. |
| dragTo(x, y, button=b) | Drags to with the specified mouse button. |
| scroll(n) / hscroll(n) / vscroll(n) | Scrolls by units along the requested axis. |
| Model | Model class | Model identifier | Reasoning, interface, adapter, and deployment setting |
|---|---|---|---|
| GPT5.4 | Proprietary CUA | gpt-5.4 | OpenAI Responses API. Known GPT5.4 computer-use model path uses tools=[{type: computer}] . Requested think_level=medium , mapped to reasoning.effort=medium . |
| Opus4.8 | Proprietary CUA | claude-opus-4-8 | Anthropic Messages beta computer tool. For Opus4.8, CADWorld selects computer-use-2025-11-24 and computer_20251124 . Requested think_level=medium , mapped to adaptive thinking with output_config.effort=medium . |
| Kimi K2.6 | Open CUA | kimi-k2.6 | Moonshot hosted API. Requested think_level=none , mapped to {"thinking": {"type": "disabled"}} . top_p=0.95 . Decimal 0..1 mouse coordinates are accepted and scaled to screenshot pixels. |
| MiniMax M3 | Open MLLM | MiniMax-M3 | MiniMax OpenAI-compatible hosted chat API. Requested think_level=none , mapped to {"thinking": {"type": "disabled"}} . top_p=0.95 . Decimal 0..1 coordinates are scaled to screenshot pixels. |
| Holo 3.1 | Open CUA | Hcompany/Holo-3.1-35B-A3B | Self-hosted serving. No native thinking control is exposed. Adapter requests structured JSON output and scales Holo’s integer 0..1000 mouse coordinates to screenshot pixels. |
| Qwen3.6 | Open MLLM | Qwen/Qwen3.6-35B-A3B | Self-hosted serving. Requested think_level=none , mapped to enable_thinking=false in chat_template_kwargs . Actions use original screenshot pixel coordinates. |
| Setting | Value | Source and notes |
|---|---|---|
| VM image | vm_data/FreeCAD-Ubuntu.qcow2 | Passed by every baseline experiment script through --path_to_vm . |
| Provider | Docker/QEMU/KVM | run_cadworld.py supports the Docker provider, which boots the Ubuntu FreeCAD VM from the .qcow2 image. |
| Screen resolution | Default --screen_width 1920 --screen_height 1080 ; screenshots and pyautogui coordinates are interpreted in this frame unless an adapter rescales model-native coordinates. | |
| VM resources | 64G disk, 8G RAM, 8 CPU cores | Defaults are OSWORLD_DOCKER_DISK_SIZE=64G , OSWORLD_DOCKER_RAM_SIZE=8G , and OSWORLD_DOCKER_CPU_CORES=8 ; all merged run args.json files record these values. |
| Action loop | 100 maximum GUI steps per task | Baseline scripts pass --max_steps 100 . Each trajectory record corresponds to one model step. |
| Trajectory context | 10 recent turns | Baseline scripts pass --max_trajectory_length 10 ; the prompt inserts compact JSON Lines for the recent turns after step 1. |
| ID | Stage | Exact outcome class | Meaning |
|---|---|---|---|
| F1 | Saving | claimed_done_without_saving | The model says that it has finished the task, but no saved FCStd file is found. |
| F2 | Saving | no_output_file | The run ends without a saved FCStd file, and the model does not claim that the task is complete. |
| F3 | File integrity | corrupt_or_incomplete_file | The model saves a file, but the file is damaged or incomplete and cannot be read as a valid FreeCAD document. |
| F4 | Starting file | precondition_not_used | The task provides a starting file, but the result does not retain the objects that should have been carried over from it. |
| F5 | Project setup | wrong_document_structure | The file opens, but its project structure is wrong, such as missing required bodies, sketches, features, or other objects. |
| F6 | Geometry | geometry_close_but_out_of_tolerance | The result is similar to the target shape, but its dimensions, volume, area, or placement fall outside the allowed tolerance. |
| CAD software | Deployment / license profile | GUI workflow | Macro / API | Public benchmark packaging | CADWorld implication |
|---|---|---|---|---|---|
| FreeCAD | Open-source; local Linux VM; no paid benchmark license | ✓ | ✓ | ✓ | Best fit for reproducible GUI-agent evaluation; saves editable .FCStd files and supports workbenches from sketching to CAM/FEM. |
| Fusion 360 | Commercial/cloud-connected product | ✓ | ✓ | ✗ | Strong professional workflow coverage, but public redistribution and automated benchmark deployment require license/account management. |
| SolidWorks | Commercial Windows desktop product | ✓ | ✓ | ✗ | Industry-standard mechanical CAD, but difficult to package in a public VM benchmark because of paid licensing and Windows deployment constraints. |
| Siemens NX | Commercial professional CAD/CAM/CAE suite | ✓ | ✓ | ✗ | High-fidelity industrial workflows, but license cost and compliance constraints make open benchmark reproduction difficult. |
| Onshape | Browser/cloud CAD platform | Partial | ✓ | Partial | Easier web access, but cloud state, account policies, network dependence, and service changes complicate offline reproducibility. |
| Row | Completed / success | Avg. steps | Median steps | Avg. time (s) | Median time (s) |
|---|---|---|---|---|---|
| Human expert demonstrations | 10 recorded | 14.6 | 12.5 | 71.7 | 63.8 |
| GPT5.4 (CUA) | 7/10 | 44.5 | 38.5 | 213.5 | 177.5 |
| Opus4.8 (CUA) | 7/10 | 33.5 | 31.0 | 270.6 | 226.4 |
| Kimi K2.6 | 4/10 | 47.8 | 40.0 | 288.7 | 242.1 |
| Holo 3.1 | 0/10 | 66.6 | 78.0 | 166.1 | 177.1 |
| OpenCUA | 0/10 | 84.1 | 100.0 | 761.5 | 795.1 |
| Category | Task ID | Completed task | Human steps/time | Model | Agent steps/time |
|---|---|---|---|---|---|
| Appearance | appearance-003 | Create a torus and set a wood material appearance | 16 / 68.3s | GPT5.4 | 53 / 163.7s |
| Cloud point | cloudpoint-003 | Create a cube and convert it to a point cloud while retaining the source cube | 16 / 57.8s | GPT5.4 | 32 / 149.4s |
| Macro | macro-003 | Run a macro workflow that generates an in-document material and measurement spreadsheet | 32 / 101.0s | GPT5.4 | 50 / 205.4s |
| Measure | measure-003 | Create a torus, measure its surface area, and store the measurement in the file | 11 / 147.0s | Kimi K2.6 | 36 / 215.4s |
| Part | part-038 | Create a Part workbench cylinder with radius 9 mm and height 30 mm | 10 / 34.2s | GPT5.4 | 19 / 82.8s |
| Sketch | sketch-062 | Sketch one normal-geometry circle with radius 10 mm in the XY plane | 8 / 37.5s | GPT5.4 | 40 / 160.4s |
| Case | Final observed state | Trajectory evidence |
|---|---|---|
| File-dialog localization loop: freecad-assemble-004 | The run ends at 100 steps with score 0.0 and no downloaded .FCStd . The agent recognizes that it needs to find Precondition_Unnamed.FCStd , but it repeatedly clicks in the file list rather than successfully scrolling or selecting the file: 68 clicks at (1056,630) and 23 clicks at (1056,648) dominate the trajectory. | |
| Spatial orientation failure: freecad-sketch-009 | The run ends after 83 steps with score 0.0. The agent creates and saves a seven-sided polygon, but the task requires the heptagon to be rotated so that the rightmost side is vertical. The final artifact is visually plausible but fails the orientation-sensitive sketch evaluator. |
| Task Category | Task ID | Task Description | Screenshot |
|---|---|---|---|
| Appearance | freecad-appearance-002 | Set the working part appearance to Steel-C10. | |
| Assembly | freecad-assemble-019 | Complete an assembly using Revolute, Cylindrical, and Slider joints with the correct physical joint behavior. | |
| Assembly | freecad-assemble-022 | Complete the target assembly by grounding the yellow base and applying a Slider Joint for the intended motion. | |
| CAM | freecad-cam-001 | Use the fixed supplied stock to cut the target shape, allowing two-sided machining for the bottom button when needed. | |
| Cloud Point | freecad-cloudpoint-001 | Convert the supplied part to a point cloud with maximum distance 1. | |
| FEM | freecad-fem-001 | Run a 200 N Y-axis FEM analysis with AlMg3F24, Gmsh, CalculiX, and exported min/max CCX results. |
Computer-Use Agent Benchmarks
Computer-use agent benchmarks test whether AI systems can operate graphical interfaces, terminals, and applications reliably, safely, and efficiently.
See all 121 papers