Skip to main content

cua (Python)

The cua SDK for Python: a thin, generated binding over the Rust cua-sdk crate (libs/cua/crates/cua-sdk). The same API runs embedded in your process or against a cua daemon that shares sandboxes, spacesd connections and credentials across processes.

import asyncio, cua

async def main():
    c = cua.embedded()
    sb = await c.sandboxes().connect_url("http://127.0.0.1:3211", "token", "dev")
    env = await sb.spacesd(None)
    print((await env.run(cua.SpacesdCommand(program="uname", args=["-a"]))).stdout.decode())
    png = await env.screenshot(None)

asyncio.run(main())

Sandboxes: any image, local or cloud

c = cua.embedded()
sb = await c.sandboxes().create(cua.SandboxCreateOptions(
    on="local",                                   # or "cloud": same options
    image="python:3.12-slim",
    command=["python", "-m", "my_mcp", "--port", "8765"],
    env={"FOO": "bar"},
    services={"mcp": 8765},
    wait_for=[cua.ReadinessProbe(port=0, service="mcp", http_path="/health")],
    cloud=cua.CloudOptions(warm=True),            # optional, ignored locally
))
svc = sb.service("mcp")
r = await svc.request("POST", "/mcp", body, None, [cua.HttpHeader(name="accept", value="application/json, text/event-stream")])
url = await svc.url()                             # usable from this machine
share = await sb.public_url("mcp", 3600, None)    # shareable, expires
fwd = await sb.forward(8765)                      # loopback URL: fwd.url()
info = sb.info()  # id, phase, location, services, expires_at_unix, provider_details

public_url is a signed URL in the cloud and a loopback URL with its own token locally, served by the cua daemon (started on demand with the bundled CLI). await sb.mcp("mcp", None) is an MCP client for a server the sandbox serves and await sb.mcp_config("mcp", None) its URL and headers for any MCP client; neither needs cua-spacesd. cua.canonical_image("linux", None) returns ghcr.io/trycua/linux:24.04. Cloud env, sidecars (addressed by name, on gVisor and KubeVirt) and registry secrets work like local ones; cloud image layers (a remote build) are not available yet and fail with a clear error.

High-level API (optional extras)

cua replaces the former cua meta-package (0.1.x). Its convenience imports resolve lazily from optional extras:

pip install "cua[sandbox]"   # cua-sandbox: Sandbox, Image, Pool, QEMURuntime, ...
pip install "cua[agent]"     # cua-agent: ComputerAgent, cua.callbacks, cua.tools
pip install "cua[all]"       # both (the `cua` command is the Rust CLI in libs/cua)
from cua import Sandbox, Image            # cua_sandbox.Sandbox / Image
async with Sandbox.ephemeral(Image.linux(), local=True) as sb:
    print((await sb.shell.run("uname -a")).stdout)

With cua-sandbox installed, cua.Sandbox is the high-level cua_sandbox.Sandbox; the SDK's own handle type (what sandboxes().create() returns) is always cua.SandboxHandle.

  • cua._native is generated by libs/cua/scripts/generate-uniffi-bindings.mjs and must not be edited; --check fails CI when it drifts.
  • Wheels are platform wheels (build_wheel.py), one per OS/arch, each with the libcua_sdk library next to _native.py.

Development

cd libs/cua
cargo build --release -p cua-sdk
scripts/build-test-fixtures.sh
node scripts/stage-uniffi-library.mjs          # copies the library here
cd python && uv run --with pytest pytest -q    # smoke tests against fixtures
CUA_E2E_FLEET=1 uv run --with pytest pytest -q tests/test_live_fleet.py  # live Fleet

Metadata

Release files for cua 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for cua 0.2.0
File
cua-0.2.0-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
cua-0.2.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
cua-0.2.0-py3-none-manylinux_2_31_x86_64.whl Python 3 none Linux glibc 2.31+ x86-64 Details
cua-0.2.0-py3-none-manylinux_2_31_aarch64.whl Python 3 none Linux glibc 2.31+ ARM64 Details
cua-0.2.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
cua-0.2.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 409.1 MB

Release files / cua-0.2.0-py3-none-win_arm64.whl

Download URL cua-0.2.0-py3-none-win_arm64.whl
Size 59.3 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
7f0f99ee581507e9dd336aa3128206defe483a28814247c40cc69f5dbf18d48d
BLAKE2b-256 checksum
How to use checksums
3c80b4cc237925f7a25a0458e34fe3613cd52c835896dbbfb806ebff6453f4e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cua-0.2.0-py3-none-win_amd64.whl

Download URL cua-0.2.0-py3-none-win_amd64.whl
Size 64.1 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
6748239c0fc54841932d9dea976c10b589aac4b8dfdf436106fabdacb989634b
BLAKE2b-256 checksum
How to use checksums
16407d7a4790abc22ba72847dc1f3cfc8c8981f71117eecf311c09339ee5e096
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cua-0.2.0-py3-none-manylinux_2_31_x86_64.whl

Download URL cua-0.2.0-py3-none-manylinux_2_31_x86_64.whl
Size 74.9 MB
Tags Linux glibc 2.31+ x86-64 Python 3
SHA-256 checksum
How to use checksums
d1f80d2de1aeda4bdeaf1a3c75f2424b1b5427383f6321a01dc9e4466b7f6016
BLAKE2b-256 checksum
How to use checksums
cfea079346891ddde635c429c3591fcafa13a8d478d520bddfb954d152ac15bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cua-0.2.0-py3-none-manylinux_2_31_aarch64.whl

Download URL cua-0.2.0-py3-none-manylinux_2_31_aarch64.whl
Size 76.2 MB
Tags Linux glibc 2.31+ ARM64 Python 3
SHA-256 checksum
How to use checksums
07a8b0fc678f378476f694496418750df1d74a039be2a988ff806b6aed20b05a
BLAKE2b-256 checksum
How to use checksums
821ef4b92c4a664d416263c62b59e1f3fd9ad283231b4ea9f971ef5745812a15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cua-0.2.0-py3-none-macosx_11_0_arm64.whl

Download URL cua-0.2.0-py3-none-macosx_11_0_arm64.whl
Size 64.9 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fae50fa4614b2a870dab4fed7951ea62712b551b0c290030a42907dc1ed5bc08
BLAKE2b-256 checksum
How to use checksums
327fbf6fb9d891dd6262468c9c415a59e9f0805a34394d910248726febe2023a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cua-0.2.0-py3-none-macosx_10_12_x86_64.whl

Download URL cua-0.2.0-py3-none-macosx_10_12_x86_64.whl
Size 69.8 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
863e0641bcf5e76a566212b0dd8ec515767476a3d87825c839679edcded4c94b
BLAKE2b-256 checksum
How to use checksums
5944d9ef98a452097f85645315517b43c9bec75de7012c8e4fa7a5e5388450fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.2.0 This release

6 release files

0.1.6

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page