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

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

Total release size: 423.0 MB

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

Download URL cua-0.4.4-py3-none-win_arm64.whl
Size 61.4 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
e12aa079c497a609ae2c35300f1db2b57e00e4a5a982f65a2a388b02e3d4c96f
BLAKE2b-256 checksum
How to use checksums
7f3f6517660a98982868fdcb52f8b3bd7de3f06dc15ffcbd0c485f5ffb71cf57
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.4-py3-none-win_amd64.whl

Download URL cua-0.4.4-py3-none-win_amd64.whl
Size 66.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
5722d5b85e9c72d5015bb79bf82cb50ada52d3e35cf42f9b8697596d133adcac
BLAKE2b-256 checksum
How to use checksums
23ebca13046954c75564b7bfae50abad4936000b0749fc4aa92ddb318daa6902
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.4-py3-none-manylinux_2_31_x86_64.whl

Download URL cua-0.4.4-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
b14e893caaa1f42d9f2addde9e077dff79f2433acecb0dcbc7f10be961b89367
BLAKE2b-256 checksum
How to use checksums
5f5a04dd2b9f1546e0e84ab1acf75cc6457fcbcf6ebecba0ef522b154c2c0d34
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.4-py3-none-manylinux_2_31_aarch64.whl

Download URL cua-0.4.4-py3-none-manylinux_2_31_aarch64.whl
Size 78.6 MB
Tags Linux glibc 2.31+ ARM64 Python 3
SHA-256 checksum
How to use checksums
89240a7b36c80854a5a67a1ced5c319db0c64c2331725c3de7ef27b20ace60a4
BLAKE2b-256 checksum
How to use checksums
a89a08f7b9a91596a2d2da2439a8fdbb6bf0115a52efb3438b6a0c5265637ba3
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.4-py3-none-macosx_11_0_arm64.whl

Download URL cua-0.4.4-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
fa3258dbcc5f5b6ba8d42f7c8a2a7be68df8f1b69142b47c1dc5be69df3a0be0
BLAKE2b-256 checksum
How to use checksums
018a4b64754ddefd4c08074cd88c1e43cae0a41d38418796dc498f789f272982
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.4-py3-none-macosx_10_12_x86_64.whl

Download URL cua-0.4.4-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
36cd198143caca8fb9cf7024c19bd9e0f689c5d542e370bfa844ab87dc13567a
BLAKE2b-256 checksum
How to use checksums
e39eaabc908fee95b98c16c3b875033bc692f14e1aa0e3d80e21fcefe1a2eb7d
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.4.4 This release

6 release files

0.4.3

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