Downloads · 30 days
22
17% of all-time downloads
sujitvasanth/OpenCUA7BQfp164bit
OpenCUA7BQfp164bit is a image-text-to-text model from sujitvasanth. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as mit.
<h1 style=" font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif; font-size:48px; font-weight:700; line-height:1.25; text-align:center; margin:0 0 24px;" OpenCUA: quantised bnb4 7Gb VRAM…
Downloads · 30 days
22
17% of all-time downloads
All-time downloads
128
Public
Parameters
8.5B
5.9 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors5.9 GB · 100%
How the weights are stored.
U87.4B · 87%
From the Hugging Face model README
<a href="https://opencua.xlang.ai/" style=" display:inline-block; padding:8px 24px; background:#2b2b2b; color:#ffffff; border-radius:36px; text-decoration:none; font-weight:600; font-size:16px;"> 🌐 Website </a>
<a href="https://arxiv.org/abs/2508.09123" style=" display:inline-block; padding:8px 24px; background:#2b2b2b; color:#ffffff; border-radius:36px; text-decoration:none; font-weight:600; font-size:16px;"> 📝 Paper </a>
<a href="https://github.com/xlang-ai/OpenCUA" style=" display:inline-block; padding:8px 24px; background:#2b2b2b; color:#ffffff; border-radius:36px; text-decoration:none; font-weight:600; font-size:16px;"> 💻 Code </a>
</div> <div style="max-width:900px;margin:0 auto;">OpenCUA models (OpenCUA-7B and OpenCUA-32B) are end-to-end computer-use foundation models than can produce executable actions in the computer environments. They are based on the weights of Qwen2.5-VL-7B-Instruction and Qwen2.5-VL-32B-Instruction. They demonstrate superior performance across CUA benchmarks. In particular, <b>OpenCUA-32B</b> achieves an average success rate of 34.8% on OSWorld-Verified, establishing a new state-of-the-art (SOTA) among open-source models and surpassing OpenAI CUA (GPT-4o). Both models also have strong grounding performance, OpenCUA-32B achieves 59.6% on OSWorld-G and 55.3% on Screenspot-Pro.
</div>OpenCUA models achieves strong performance on OSWorld-Verified. OPENCUA-32B achieves the best performance among all open-source models with an average success rate of 34.8%, outperforming prior baselines by large margins. It also closes the gap to proprietary Claude models.
<div align="center">| Model | 15 Steps | 50 Steps | 100 Steps |
|---|---|---|---|
| Proprietary | |||
| OpenAI CUA | 26.0 | 31.3 | 31.4 |
| Seed 1.5-VL | 27.9 | — | 34.1 |
| Claude 3.7 Sonnet | 27.1 | 35.8 | 35.9 |
| Claude 4 Sonnet | 31.2 | 43.9 | 41.5 |
| Open-Source | |||
| Qwen 2.5-VL-32B-Instruct | 3.0 | — | 3.9 |
| Qwen 2.5-VL-72B-Instruct | 4.4 | — | 5.0 |
| Kimi-VL-A3B | 9.7 | — | 10.3 |
| UI-TARS-72B-DPO | 24.0 | 25.8 | 27.1 |
| UI-TARS-1.5-7B | 24.5 | 27.3 | 27.4 |
| OpenCUA-7B (Ours) | 24.3 | 27.9 | 26.6 |
| OpenCUA-32B (Ours) | 29.7 | 34.1 | 34.8 |
OpenCUA scores are the mean of 3 independent runs.
| Model | OSWorld-G | ScreenSpot-V2 | ScreenSpot-Pro |
|---|---|---|---|
| Qwen2.5-VL-7B | 31.4 | 88.8 | 27.6 |
| Qwen2.5-VL-32B | 46.5 | 87.0 | 39.4 |
| UI-TARS-72B | 57.1 | 90.3 | 38.1 |
| OpenCUA-A3B | 48.6 | 91.4 | 28.5 |
| OpenCUA-Qwen2-7B | 45.7 | 88.5 | 23.7 |
| OpenCUA-7B | 55.3 | 92.3 | 50.0 |
| OpenCUA-32B | 59.6 | 93.4 | 55.3 |
| Model | Coordinate Actions | Content Actions | Function Actions | Average |
|---|---|---|---|---|
| Qwen2.5-VL-7B | 50.7 | 40.8 | 3.1 | 48.0 |
| Qwen2.5-VL-32B | 66.6 | 47.2 | 41.5 | 64.8 |
| Qwen2.5-VL-72B | 67.2 | 52.6 | 50.5 | 67.0 |
| OpenAI CUA | 71.7 | 57.3 | 80.0 | 73.1 |
| OpenCUA-7B | 79.0 | 62.0 | 44.3 | 75.2 |
| OpenCUA-32B | 81.9 | 66.1 | 55.7 | 79.1 |
To align with our training infrastructure, we have modified the model in two places:
<ul style="margin-top: 8px;"> <li>1. Multimodal Rotary Position Embedding (M-RoPE) has been replaced with 1D RoPE</strong>.</li> <li>2. Using the same Tokenizer and ChatTemplate as Kimi-VL.</li> <li>Do not use the default transformers and vllm classes to load the model. Tokenizer and Chat Template should be aligned if training the models.</li> </ul> </div>First, install the required transformers dependencies:
conda create -n opencua python=3.10
conda activate opencua
pip install -r requirement.txt
Download the model weight from huggingface:
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="xlangai/OpenCUA-7B",
local_dir="OpenCUA-7B",
local_dir_use_symlinks=False
)
The following code demonstrates how to use OpenCUA models for GUI grounding tasks:
import base64
import torch
from transformers import AutoTokenizer, AutoModel, AutoImageProcessor
from PIL import Image
import json
def encode_image(image_path: str) -> str:
"""Encode image to base64 string for model input."""
with open(image_path, "rb") as f:
return base64.b64encode(f.read()).decode()
def load_opencua_model(model_path: str):
"""Load OpenCUA model, tokenizer, and image processor."""
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_path,
torch_dtype="auto",
device_map="auto",
trust_remote_code=True
)
image_processor = AutoImageProcessor.from_pretrained(model_path, trust_remote_code=True)
return model, tokenizer, image_processor
def create_grounding_messages(image_path: str, instruction: str):
"""Create chat messages for GUI grounding task."""
system_prompt = (
"You are a GUI agent. You are given a task and a screenshot of the screen. "
"You need to perform a series of pyautogui actions to complete the task."
)
messages = [
{"role": "system", "content": system_prompt},
{
"role": "user",
"content": [
{"type": "image", "image": f"data:image/png;base64,{encode_image(image_path)}"},
{"type": "text", "text": instruction},
],
},
]
return messages
def run_inference(model, tokenizer, image_processor, messages, image_path):
"""Run inference on the model."""
# Prepare text input
input_ids = tokenizer.apply_chat_template(
messages, tokenize=True, add_generation_prompt=True
)
input_ids = torch.tensor([input_ids]).to(model.device)
# Prepare image input
image = Image.open(image_path).convert('RGB')
image_info = image_processor.preprocess(images=[image])
pixel_values = torch.tensor(image_info['pixel_values']).to(
dtype=torch.bfloat16, device=model.device
)
grid_thws = torch.tensor(image_info['image_grid_thw'])
# Generate response
with torch.no_grad():
generated_ids = model.generate(
input_ids,
pixel_values=pixel_values,
grid_thws=grid_thws,
max_new_tokens=512,
temperature=0
)
# Decode output
prompt_len = input_ids.shape[1]
generated_ids = generated_ids[:, prompt_len:]
output_text = tokenizer.batch_decode(
generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
return output_text
# Example usage
model_path = "OpenCUA/OpenCUA-7B" # or other model variants
image_path = "screenshot.png"
instruction = "Click on the submit button"
# Load model
model, tokenizer, image_processor = load_opencua_model(model_path)
# Create messages and run inference
messages = create_grounding_messages(image_path, instruction)
result = run_inference(model, tokenizer, image_processor, messages, image_path)
print("Model output:", result)
<div style="border-left: 6px solid #9ca3af; background: #f5f5f5; padding: 12px 16px; margin: 16px 0;">
<em>Expected result:</em> ```python
pyautogui.click(x=1443, y=343)
```
</div>
You can also run the five grounding examples in OpenCUA/model/inference/huggingface_inference.py:
cd ./model/inference/
python huggingface_inference.py
OpenCUAAgent is developed in the OSWorld environment based on OpenCUA models. It iteratively perceives the environment via screenshots, produces reflective long CoT as inner monologue, and predicts the next action to be executed. OpenCUAAgent uses 3 images in total and L2 CoT format in default.
Command for running OpenCUA-7B and OpenCUA-32B in OSWorld:
python run_multienv_opencua.py \
--headless \
--observation_type screenshot \
--model OpenCUA-32B \
--result_dir ./results --test_all_meta_path evaluation_examples/test_all_no_gdrive.json \
--max_steps 100 \
--num_envs 30 \
--coordinate_type qwen25
<div style="border-left: 6px solid #9ca3af; background: #f5f5f5; padding: 12px 16px; margin: 16px 0;">
<em>Currently we only supports huggingface inference. We are implementing the vLLM supports of OpenCUA models. Please stay tuned.</em>
</div>
AgentNet is the first large-scale desktop computer-use agent trajectory dataset, containing 22.6K human-annotated computer-use tasks across Windows, macOS, and Ubuntu systems.
👉 AgentNet Huggingface Dataset
Download the dataset here:
pip install -U huggingface_hub
huggingface-cli download xlangai/AgentNet --repo-type dataset --local-dir ./AgentNet
Collecting computer-use agent training data requires 3 steps:
Our AgentNetTool is a cross-platform GUI recorder that runs unobtrusively on annotators’ machines. It captures synchronized screen video, mouse/keyboard events, and accessibility trees, then provides an in-browser UI for reviewing, trimming, and submitting demonstrations. AgentNet Tool is available on Windows, macOS and Ubuntu.
Raw demonstrations can contain thousands of low-level events that are too dense for model training.
The DataProcessor module (./data/data-process/) performs two key steps:
These processed trajectories underlie all downstream training and evaluation.
To boost robustness and interpretability, we augment each trajectory with reflective long Chain-of-Thought (CoT) reasoning.
The CoTGenerator pipeline (./data/cot-generator/) synthesizes step-level reflections that:
Empirically, models trained with these rich CoTs scale better with data and generalize across unseen applications.
AgentNetBench (./AgentNetBench/) provides a realistic offline evaluator for OS agent trajectories. It compares model-predicted low-level actions (click, moveTo, write, press, scroll, terminate, etc.) against ground-truth human actions and reports detailed metrics.
👉 See AgentNetBench/README.md for usage instructions.
We are actively working with the vLLM team to add support for OpenCUA models.
Workaround: For now, please use the standard transformers library as shown in the examples above. We will update this section once vLLM support becomes available.
OpenCUA models are developed based on the training infrastructure of Kimi Team. We are developting the training pipeline based on the open-source infrastructure as well.
This project is licensed under the MIT License - see the LICENSE file in the root folder for details.
OpenCUA models are intended for research and educational purposes only.
OpenCUA models use different coordinate systems depending on the base model:
OpenCUA-Qwen2-7B: Outputs relative coordinates (0.0 to 1.0 range)
# Example output: pyautogui.click(x=0.5, y=0.3)
# x=0.5 means 50% from left edge, y=0.3 means 30% from top edge
# Convert to absolute coordinates:
def qwen2_relative_to_absolute(rel_x, rel_y, original_width, original_height):
abs_x = int(rel_x * original_width)
abs_y = int(rel_y * original_height)
return abs_x, abs_y
OpenCUA-7B and OpenCUA-32B (Qwen2.5-based): Output absolute coordinates after smart resize
# Example output: pyautogui.click(x=960, y=324)
# These are coordinates on the smart-resized image, not the original image
# Convert to original image coordinates:
# Please refer to the smart_resize function in: https://github.com/huggingface/transformers/blob/67ddc82fbc7e52c6f42a395b4a6d278c55b77a39/src/transformers/models/qwen2_vl/image_processing_qwen2_vl.py#L55
def qwen25_smart_resize_to_absolute(model_x, model_y, original_width, original_height):
# First, calculate the smart-resized dimensions
resized_height, resized_width = smart_resize(original_height, original_width, factor = 28, min_pixels = 3136, max_pixels = 12845056)
# Convert model output to relative coordinates on original image
rel_x = model_x / resized_width
rel_y = model_y / resized_height
# Then convert to absolute coordinates on original image
abs_x = int(rel_x * original_width)
abs_y = int(rel_y * original_height)
return abs_x, abs_y
If you use OpenCUA models in your research, please cite our work:
@misc{wang2025opencuaopenfoundationscomputeruse,
title={OpenCUA: Open Foundations for Computer-Use Agents},
author={Xinyuan Wang and Bowen Wang and Dunjie Lu and Junlin Yang and Tianbao Xie and Junli Wang and Jiaqi Deng and Xiaole Guo and Yiheng Xu and Chen Henry Wu and Zhennan Shen and Zhuokai Li and Ryan Li and Xiaochuan Li and Junda Chen and Boyuan Zheng and Peihang Li and Fangyu Lei and Ruisheng Cao and Yeqiao Fu and Dongchan Shin and Martin Shin and Jiarui Hu and Yuyan Wang and Jixuan Chen and Yuxiao Ye and Danyang Zhang and Dikang Du and Hao Hu and Huarong Chen and Zaida Zhou and Haotian Yao and Ziwei Chen and Qizheng Gu and Yipu Wang and Heng Wang and Diyi Yang and Victor Zhong and Flood Sung and Y. Charles and Zhilin Yang and Tao Yu},
year={2025},
eprint={2508.09123},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2508.09123},
}
</div>