Computer-Use 2.0 — sandboxes aislados, control de escritorio y benchmarks multiplataforma.
Aprende Cua, la plataforma open-source (respaldada por Y Combinator) para construir agentes que operan ordenadores de verdad: clic, teclado, lectura de pantalla y árbol de accesibilidad. Recorrerás el stack completo — sandboxes, Cua Driver, MCP, Lume, Cua Bench — con comandos reales y criterios de producción.

Un agente computer-use no se limita a llamar APIs: mira una pantalla, decide dónde pulsar y escribe como lo haría una persona. Cua es la infraestructura que hace eso posible de forma segura y reproducible, en lugar de dejar al modelo suelto sobre tu escritorio.
La idea central del proyecto es Computer-Use 2.0: un agente moviéndose entre código, APIs e interfaces gráficas dentro de la misma tarea. Cuando existe una API, la usa; cuando no, opera la interfaz. Esa mezcla es lo que convierte a un asistente en algo capaz de completar trabajo real.
| Enfoque | Qué controla | Límite típico |
|---|---|---|
| Solo APIs | Servicios con endpoint | Se rompe si no hay API |
| Automatización de scripts | Rutas fijas | Frágil ante cambios de UI |
| Computer-use (Cua) | Escritorio real + APIs | Necesita permisos y aislamiento |
El valor no está en "hacer clic", sino en el aislamiento: el agente trabaja en un sandbox o una VM, no sobre tu sesión personal. Esa es la promesa de Cua.
Cua no es una sola herramienta, sino un conjunto coordinado. Reconocer cada pieza te evita instalar de más y ayuda a elegir la capa correcta para tu caso.
| Pieza | Para qué sirve |
|---|---|
| Cua Spaces | App que da escritorios completos (VMs macOS/Linux) a los agentes, con teletransporte de apps y multijugador. |
| Cua Driver | Controla apps nativas y navegadores en macOS, Windows y Linux vía CLI, MCP o SDK. |
| Lume | VMs macOS y Linux locales sobre Apple Silicon (Virtualization.Framework). |
SDK y CLI cua | Sandboxes locales y en la nube; API en Python, TypeScript, Swift y Kotlin. |
| CUA-S1 | Modelos pequeños y especializados para decisiones acotadas (p. ej. qué valor va en un campo). |
| Cua Bench | Crea tareas, evalúa agentes y exporta trayectorias para entrenamiento. |
La arquitectura de una ejecución típica es siempre la misma:
modelo -> harness del agente -> Cua Driver (MCP, CLI o SDK)
-> accesibilidad + entrada del SO -> aplicacionesConfundir Cua Driver con un agente. Driver no llama a ningún modelo: solo convierte cada paso propuesto en una observación o una acción. El modelo y el bucle los pone tu harness (Claude Code, Codex, Hermes…).
El instalador de Cua muestra una checklist y añade el CLI, el MCP de Cua Driver y las instrucciones de agente que correspondan. No necesitas permisos de administrador para el driver.
Python 3.11+ para el SDK de sandboxes y Node.js para la CLI de npm. Cua Driver pide macOS 14+, Windows 10/11 o un Linux x86_64 con X11/XWayland y AT-SPI 2.
Ejecuta curl -fsSL https://cua.ai/install.sh | sh. En Windows: irm https://cua.ai/install.ps1 | iex.
Necesitas Docker, Podman o Colima. Compruébalo y configúralo con cua runtime doctor y cua runtime setup.
Ejecuta cua --version y cua auth status. Los sandboxes locales funcionan sin cuenta; el cloud y los Spaces sí requieren cua auth login.
# macOS / Linux
curl -fsSL https://cua.ai/install.sh | sh
# Windows (PowerShell)
irm https://cua.ai/install.ps1 | iex
# Comprobar host y runtime
cua runtime doctor
cua runtime setup
cua --versionPara instalar solo el driver en todos los agentes detectados: curl -fsSL https://cua.ai/install.sh | sh -s -- --select cua-driver.
Un sandbox es una máquina aislada y efímera donde tu agente ejecuta comandos, abre servicios y controla un escritorio. El SDK de Python expone una API asíncrona muy directa: Sandbox.ephemeral crea, arranca y destruye el entorno al salir del bloque.
pip install cua-sandboximport asyncio
from cua_sandbox import Image, Sandbox, http
async def main():
async with Sandbox.ephemeral(
Image.from_registry("python:3.12-slim"),
command=["python", "-m", "http.server", "8000"],
services={"web": 8000},
wait_for=http("web", "/"),
) as sb:
print((await sb.service("web").request("GET", "/")).status_code)
print(await sb.service("web").url())
asyncio.run(main())El mismo arranque desde la CLI, útil para depurar sin escribir código:
$ cua sb create python:3.12-slim --name web \
--service web=8000 --wait http:web/ \
-- python -m http.server 8000
$ cua sb url web web
200
http://127.0.0.1:53817Sandbox.ephemeral borra el sandbox al cerrar el bloque. Un sandbox creado por CLI persiste hasta que lo elimines con cua sb rm web -f. La primera vez que usas una imagen, se descarga y puede tardar unos minutos.
Cua Driver es la capa que convierte instrucciones en acciones concretas sobre aplicaciones de escritorio. Su tutorial canónico es contundente: pedir al agente que abra la calculadora, compute 6 × 7 y lea el resultado (42) desde una captura nueva.
# macOS: instala y arranca el daemon
/bin/bash -c "$(curl -fsSL https://cua.ai/driver/install.sh)"
open -n -g -a CuaDriver --args serve
cua-driver permissions grant
# Linux
/bin/bash -c "$(curl -fsSL https://cua.ai/driver/install.sh)"
cua-driver serveCon el daemon en marcha, comprueba que ve tus aplicaciones:
$ cua-driver call list_appsUna lista vacía significa que el driver no llega al escritorio: ejecuta cua-driver doctor. Después conecta tu agente e indica:
Usando Cua Driver, abre la calculadora, calcula 6 × 7
y lee el resultado desde una captura nueva.Concede a CuaDriver acceso en Accesibilidad y Grabación de pantalla y audio del sistema. Si solo aparece un aviso, vuelve a ejecutar cua-driver permissions grant.
La limpieza es explícita: cua-driver stop detiene el daemon cuando terminas.
El driver sigue un ciclo observar → actuar → verificar. La herramienta get_window_state(pid, window_id) devuelve en una sola llamada el árbol de accesibilidad (roles, etiquetas y un element_token por elemento) y una captura. El árbol dice qué es accionable; la imagen dice cuál y muestra lo que el árbol omite.
Cada acción apunta a un destino explícito y sigue una escalera de precisión:
element_token (la única ruta que el driver puede verificar por sí mismo).delivery_mode: "foreground" (juegos, canvas, apps que exigen foco).| Campo de respuesta | Valores | Qué significa |
|---|---|---|
effect | confirmed / unverifiable / suspected_noop / partial / refused | Si el cambio se aplicó de verdad |
escalation | px / page / foreground | Siguiente peldaño recomendado |
verified | true / false | Solo true cuando se leyó de vuelta por accesibilidad |
Electron, Catalyst y el contenido web pueden "ecos" de una escritura que no aplicaron; el driver los marca como unverifiable. Tras cualquier resultado distinto de confirmed, vuelve a observar y comprueba antes de continuar.
Un agente llega a Cua Driver de dos formas: un cliente MCP lanza cua-driver mcp, o una skill enseña a un agente con shell a ejecutar cua-driver call <tool>. En ambos casos el harness conserva el modelo y el bucle.
# Imprime el comando o JSON exacto para tu cliente
cua-driver mcp-config --client <cliente>
# Instala la skill de agente (y comprueba)
cua-driver skills install
cua-driver skills status| Harness | Puesta en marcha |
|---|---|
| Claude Code | claude mcp add --transport stdio cua-driver -- cua-driver mcp |
| Codex | cua-driver mcp-config --client codex imprime codex mcp add … |
| Cursor | --client cursor; pégalo en ~/.cursor/mcp.json |
| Hermes | Integrado: hermes tools enable computer_use --platform cli |
| OpenClaw | --client openclaw imprime openclaw mcp set … |
Para cualquier otro cliente MCP estándar basta con esta configuración:
{
"mcpServers": {
"cua-driver": {
"command": "cua-driver",
"args": ["mcp"]
}
}
}Puedes usar un modelo local (por ejemplo con Ollama o llama.cpp) y filtrar las herramientas para ahorrar contexto con cua-mcp-filter --allow …. Usa al menos una ventana de 64K tokens.
Lume crea y gestiona VMs de macOS y Linux sobre Apple Silicon usando el Virtualization.Framework de Apple. Es la base para dar a un agente un macOS completo y aislado sin tocar tu máquina.
/bin/bash -c "$(curl -fsSL https://cua.ai/lume/install.sh)"
lume --version
# macOS Tahoe desde la imagen de restauración más reciente
lume create macos-tahoe --ipsw latest --unattended tahoe
lume run macos-tahoe
# Conectar por SSH
lume ssh macos-tahoe 'sw_vers; id -un'El preset tahoe prepara el invitado sin conexión a red externa: usuario lume con contraseña lume, SSH activado y autologin.
Necesitas un Mac con Apple Silicon, macOS 13+ y ~50 GB libres. Cambia la contraseña por defecto antes de usar la VM para algo sensible. Borra el entorno con lume stop macos-tahoe && lume delete macos-tahoe.
El proyecto incluye lumier, una interfaz compatible con Docker para las VMs de Lume, y cua sb create macos para lanzar un sandbox macOS desde la CLI.
Cua publica imágenes canónicas para Linux, Windows, macOS y Omarchy. Cada una se ofrece como contenedor (rápido, con gVisor si está instalado) o como VM (más fiel al escritorio real). El mismo código escala de tu portátil a la nube.
| Imagen | Sistema | Local | Cloud |
|---|---|---|---|
linux:24.04 | Ubuntu 24.04 | Contenedor (gVisor) | Contenedor gVisor |
linux:24.04-disk | Ubuntu 24.04 (VM) | VM QEMU | VM KubeVirt |
windows:2022 | Windows Server 2022 | VM QEMU | VM KubeVirt |
macos:26 | macOS Tahoe 26 | VM Lume (Apple silicon) | Aún no disponible |
omarchy:edge | Omarchy | VM QEMU | VM KubeVirt |
Puedes ejecutar los mismos sandboxes en la nube de Cua o en tu propia cuenta:
# Tu propia nube
cua sb create --on aws ...
cua sb create --on gcp ...
cua sb create --on modal ...cua cache du muestra cuánto ocupan imágenes y sandboxes. En Linux las imágenes se ejecutan con el usuario cua y sudo sin contraseña; abre el escritorio en el navegador con cua sb view NOMBRE.
Para saber si un agente de computer-use mejora de verdad, hay que medirlo. Cua Bench crea tareas, las puntúa con un oráculo y exporta trayectorias para entrenamiento. El arranque no necesita clave de API ni VM.
uv tool install 'cua-bench[browser]'
uv tool run --from 'cua-bench[browser]' playwright install chromium
# Listar y ejecutar una tarea del registro con su oráculo
cb dataset list
cb run cua-bench-basic --task-filter click-button --max-variants 1
# Resolverla tú mismo, o pasársela a un agente
cb interact click-button --dataset cua-bench-basic
cb run cua-bench-basic --agent cua-agent \
--model anthropic/claude-sonnet-4-20250514 -j 4Cada variante deja result.json, run.log y trajectory.json en ~/.local/share/cua-bench/runs/. El registro incluye benchmarks conocidos como OSWorld-Verified (369 tareas de escritorio Ubuntu) y WebVoyager (643 sitios en vivo).
get_window_state con max_elements y max_depth.pid y window_id entre llamadas en vez de reindexar cada vez.type_text.ok no es evidencia; vuelve a observar tras cada acción.Un sandbox aislado es tu red de seguridad. Evita dar a un agente computer-use acceso a tu sesión personal o a credenciales de larga vida; usa secretos de alcance corto y máquinas desechables.
No para lo esencial. Cua Driver y los sandboxes Linux funcionan en macOS, Windows y Linux. Las VMs macOS de Lume sí requieren Apple Silicon.
No. Cua aporta el ordenador y las herramientas de automatización; tú traes tu agente y tu modelo. CUA-S1 es opcional, para decisiones acotadas.
Por defecto, no. El driver entrega las acciones "en segundo plano" sin subir la ventana ni mover tu puntero real: el cursor que ves en los demos es una superposición del agente.
Todo fuera de Cua Spaces es MIT. Spaces es source-available (FSL-1.1-MIT) y gratuito para uso individual; cada release pasa a MIT dos años después.