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.4.3

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.4.3
File
cua-0.4.3-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
cua-0.4.3-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
cua-0.4.3-py3-none-manylinux_2_31_x86_64.whl Python 3 none Linux glibc 2.31+ x86-64 Details
cua-0.4.3-py3-none-manylinux_2_31_aarch64.whl Python 3 none Linux glibc 2.31+ ARM64 Details
cua-0.4.3-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
cua-0.4.3-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 422.9 MB

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

Download URL cua-0.4.3-py3-none-win_arm64.whl
Size 61.5 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
c3ae1d78f5029d6c0a81776ef48f78c105f72a90f2c5620e82db4e536276de24
BLAKE2b-256 checksum
How to use checksums
b09658851e65acdd925762d85ce584daed3fe1cc53b1534b7362825ab3af9e14
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.4.3-py3-none-win_amd64.whl

Download URL cua-0.4.3-py3-none-win_amd64.whl
Size 66.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
a5b16a6415b80a616aed8d5929a977a2ce9d5fc1220a6741b1cf996554a4222b
BLAKE2b-256 checksum
How to use checksums
4ea6196f04b6b55a9041bbaf0f5864bb2dd801696c736362e5224556af291b67
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.4.3-py3-none-manylinux_2_31_x86_64.whl

Download URL cua-0.4.3-py3-none-manylinux_2_31_x86_64.whl
Size 77.3 MB
Tags Linux glibc 2.31+ x86-64 Python 3
SHA-256 checksum
How to use checksums
c26ae962e48920c135f5e059191a2e1fbf7f71d684415e781b945d2d52db5f18
BLAKE2b-256 checksum
How to use checksums
de8e920bddc35e29563f8f4ef4087190049ae5b26e242b04af42bef779645746
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.4.3-py3-none-manylinux_2_31_aarch64.whl

Download URL cua-0.4.3-py3-none-manylinux_2_31_aarch64.whl
Size 78.5 MB
Tags Linux glibc 2.31+ ARM64 Python 3
SHA-256 checksum
How to use checksums
11a64d867d3a89f4b40b32421100147ce8a950602c58bc26caa45826327ac6dc
BLAKE2b-256 checksum
How to use checksums
ed20650939a97ecf73609ff3b9a9b58484c7cd59ae08f78fa17a389a11590be6
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.4.3-py3-none-macosx_11_0_arm64.whl

Download URL cua-0.4.3-py3-none-macosx_11_0_arm64.whl
Size 67.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
77fd383d66ce93a54f9991c1f70a5802e85a123ccd3e468c74cab4e79defe915
BLAKE2b-256 checksum
How to use checksums
becbfdd94cc6f6ec8e9672c1e132262040844dde38a41e75d76115ef56f2a3b3
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.4.3-py3-none-macosx_10_12_x86_64.whl

Download URL cua-0.4.3-py3-none-macosx_10_12_x86_64.whl
Size 72.1 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
8a64bff44bf54bdcf60b7bd028d6985e3061d3e121bf76487048f6bf1af70948
BLAKE2b-256 checksum
How to use checksums
54ef9418278288006435e055c7d31d94877f8753516e67ce005da6e6ee65e20f
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

0.4.4

6 release files

This release

0.4.3 This release

6 release files

0.4.2

6 release files

0.4.1

6 release files

0.4.0

6 release files

0.3.1

6 release files

0.3.0

6 release files

0.2.0

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