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

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

Total release size: 422.5 MB

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

Download URL cua-0.4.2-py3-none-win_arm64.whl
Size 61.5 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
dc76afc80c4cf5632853bfed5258f31c29075826cca058264c58ed18d2c08fbe
BLAKE2b-256 checksum
How to use checksums
392c37751c7c678596921f44e8a6577853ad1b3ee7dc5388fb01e18c08ccbb03
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.2-py3-none-win_amd64.whl

Download URL cua-0.4.2-py3-none-win_amd64.whl
Size 66.4 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
4a8276547ca8583e7130cba2924a8f804795131e4b38a8cfb4f5e4cf419d121e
BLAKE2b-256 checksum
How to use checksums
add223538703a98ffc488bf79b0cb968ed5d2d52d497e1abdf51b494a6a18f47
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.2-py3-none-manylinux_2_31_x86_64.whl

Download URL cua-0.4.2-py3-none-manylinux_2_31_x86_64.whl
Size 77.2 MB
Tags Linux glibc 2.31+ x86-64 Python 3
SHA-256 checksum
How to use checksums
de50b8c51c9e5322fd6796b72d6dfcbe312c4205d14228891c61d7fe1cf0dfdb
BLAKE2b-256 checksum
How to use checksums
f7fa613c7a08d820a19a64ee99b985f509fc0db5311eb65ffa653435cbee7612
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.2-py3-none-manylinux_2_31_aarch64.whl

Download URL cua-0.4.2-py3-none-manylinux_2_31_aarch64.whl
Size 78.4 MB
Tags Linux glibc 2.31+ ARM64 Python 3
SHA-256 checksum
How to use checksums
f45c985d5e6662d234ad2257c44a8882e948ade183b1ffe53d7c4afdb1d65af2
BLAKE2b-256 checksum
How to use checksums
8911a0e8b0a0e635030f83fa0984b17670a5c64ac40ffcc4a867eceb62c335b4
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.2-py3-none-macosx_11_0_arm64.whl

Download URL cua-0.4.2-py3-none-macosx_11_0_arm64.whl
Size 67.0 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
334817d36054c0814b7116da8369482c677a21f18d2f61267930ff968f5db467
BLAKE2b-256 checksum
How to use checksums
a99c937d62d90b79bc1aeb9bf14644599a3e8ac66e293fbb368ea6654caebcda
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.2-py3-none-macosx_10_12_x86_64.whl

Download URL cua-0.4.2-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
32af5855c880074425bf5ce8be99c545f04475377099ef5845df84a46654baeb
BLAKE2b-256 checksum
How to use checksums
1c542ca92e9acdc73f5008d45b4228c74716bd6569665430c03b571302247f9f
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

This release

0.4.2 This release

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