Recent newsAnnouncing the First Multi-Player Computer-Use — Live from ClawConRead
Open source13.3k

Cua — The Computer Use Agent Platform. Give every agent
a cloud desktop

Built for Claude Code, Codex, OpenClaw, and computer-use agents.

Trusted by 50,000+ engineers at your favorite companies

Hugging Face
Google
Datadog
Meta

EC2 wasn't built for agents.

Run any OS in the cloud

macOS, Windows, Linux, and Android sandboxes. Prebuilt images designed for computer-use agents.

#!/bin/bash
# 1. Boot up a cloud desktop
cua sb create --os ubuntu
# 2. Open a live GUI session
cua sb vnc curious-fox-123
# 3. Control mouse, keyboard, bash
cua sb shell curious-fox-123
# (interactive shell)

Configure, snapshot, and fork

Define your environment with custom dependencies, snapshot it, and fork into parallel runs instantly.

XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Provisioning
Paused
Snapshot Saved
Configure
Snapshot
Fork
XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Build Succeeded | Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Blinky
XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Build Succeeded | Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Dropbear
XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Build Succeeded | Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Gumnut
XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Build Succeeded | Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Snugglepot
XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Build Succeeded | Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Cuddlepie
XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Build Succeeded | Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Wombat
XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Build Succeeded | Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}
Wallaby

Evaluate on real desktops

Test your agent on pre-built tasks across macOS, Linux, Windows, and Android. Compare models side by side.

XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Today at 9:41 AM
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}

From recordings to training

Record agent sessions, curate the best runs, and feed them straight into your training pipeline.

XcodeFileEditView
Tue Apr 1 9:41 AM
KoalaSpots
README
KoalaSpots
Views
Helpers
Regions
Spots
Spot Map View
SpotMapView
SpotDetailView
+
Filter
KoalaSpots|iPhone 16 Pro
Building...
KoalaSpotsViewsSpot Map ViewSpotMapView
343536373839404142434445464748495051
struct SpotMapView: View {
var body: some View {
Map(coordinateRegion: $region,
annotationItems: spots) { spot in
MapAnnotation(coordinate: spot.coordinate) {
SpotPin(spot: spot)
}
}
.mapStyle(.imagery(elevation: .realistic))
.overlay(alignment: .bottom) {
if let spot = selectedSpot {
SpotDetailView(spot: spot)
} else {
Text("Tap a koala spot")
}
}
}
}
#Preview {
SpotMapView()
.environment(SpotData())
}

Screenshot Annotations

navigation_header
active_menu_item
action_btn
Complex app layout with hierarchical UI element annotations.
Dense CaptionsElement AnnotationsOCR

Human-annotated screenshots with bounding boxes, dense captions, and element metadata.

Task Environments

Task: Send a message in #general
Real web app replicas with task definitions and eval harnesses.
SlackSpotifyWhatsAppBanking

Full web app replicas with verifiable tasks, reward signals, and multi-step compositions. Desktop and mobile.

Sandboxes, agents, evals.

Sandboxes

Cloud desktops

Linux, Windows, macOS, Android sandboxes with a display, browser, and root access. Hot-start under 1s. Cloud or self-hosted.

Agents

Agent runtime

Claude, Gemini, Qwen, UI-TARS, and more. Compose a local grounding model with a cloud planner.

Cua-Bench

Evals & RL training

Verifiable tasks on real desktop sandboxes. Programmatic rewards, oracle solutions, RL dataloader. Bring your own agent.

Lume

Local macOS Sandboxes

Native macOS sandboxes on Apple Silicon. Near-native speed, headless mode, same Computer SDK. MIT licensed.

CLI

Create, open, and manage sandboxes from the terminal.

Computer SDK

Screenshots, clicks, typing, shell commands, file I/O, Playwright.

Agent SDK

Observe-reason-act loops, budget limits, trajectories, custom tools.

MCP Server

Use Cua agents as tools in Claude Desktop, Cursor, or any MCP client.

VLM Router

One API key for Anthropic, OpenAI, Google, Microsoft, Alibaba.

Snapshot API

Save and restore full sandbox state. Hot-start in under 1 second.

Cua Cloud

Cloud desktops for AI agents

Linux, Windows, macOS, Android.

Try Cua.

Your first sandbox runs are on us. Sign up now.