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

Total release size: 422.0 MB

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

Download URL cua-0.4.0-py3-none-win_arm64.whl
Size 61.4 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
41210c3edb9aac7cecb8a7870bd88dcc0218d90be7445fe4ab6d4f88ed6d5ff7
BLAKE2b-256 checksum
How to use checksums
b1855520db0023739e35f246decc20949b19737c8a9dc0ad52e36163d2c1feda
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.0-py3-none-win_amd64.whl

Download URL cua-0.4.0-py3-none-win_amd64.whl
Size 66.4 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
63c3c67b9bd1bd9184039eb21df17427934af520b6a0f42fb812ed0f54ea69ef
BLAKE2b-256 checksum
How to use checksums
4a638eea3fe807e3389e69202dcdbfc74f4411cd8f89c3ede9c53202acd36082
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.0-py3-none-manylinux_2_31_x86_64.whl

Download URL cua-0.4.0-py3-none-manylinux_2_31_x86_64.whl
Size 77.1 MB
Tags Linux glibc 2.31+ x86-64 Python 3
SHA-256 checksum
How to use checksums
d00ef59892dfb896ad61fe805d6fe9a17a08b8d7a6d3bae58309b97b25b38d51
BLAKE2b-256 checksum
How to use checksums
fa8715cf4fed55805454b96d9808cd5d3bc84e74d295297a1ed1c218e481c1e3
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.0-py3-none-manylinux_2_31_aarch64.whl

Download URL cua-0.4.0-py3-none-manylinux_2_31_aarch64.whl
Size 78.3 MB
Tags Linux glibc 2.31+ ARM64 Python 3
SHA-256 checksum
How to use checksums
8b99c968bc64015fbc98b18769f10a0a04ad5c2fc03dbc81b264de6cdbf49214
BLAKE2b-256 checksum
How to use checksums
e21d77cd639e9c9a0a92ef7025dabedf36de0b8af190c555517f427f0e2da95e
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.0-py3-none-macosx_11_0_arm64.whl

Download URL cua-0.4.0-py3-none-macosx_11_0_arm64.whl
Size 66.9 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
db177d62183170e3d7fe25db9dd7900005e871ed28fb635b9884969ed6ca0da7
BLAKE2b-256 checksum
How to use checksums
cf01aaa9ad50d6f5556020afce08a552896c266e2af4222fa0cf6f25f320c8e9
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.0-py3-none-macosx_10_12_x86_64.whl

Download URL cua-0.4.0-py3-none-macosx_10_12_x86_64.whl
Size 72.0 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c9d4412b663d9f6391aaa6c705f3cec78c348372b57ea283ea922e67da8e9292
BLAKE2b-256 checksum
How to use checksums
caa979c9bafd0ad18d3f0fba61ba62af802d4d0d75edc9a04a97618a91e80b19
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

0.4.3

6 release files

0.4.2

6 release files

0.4.1

6 release files

This release

0.4.0 This release

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