Skip to main content

cua-driver Python SDK

Rust-backed Python SDK and bundled executable for Cua Driver.

Product boundary

This package is for client applications importing Cua Driver as an SDK:

from cua_driver import CuaDriver

It does not contain a Python MCP client. Agents already have runtime-neutral MCP clients and should configure the bundled server directly:

cua-driver mcp

The removed pre-release MCP facade used CuaDriver.stdio(), AsyncCuaDriver, *Args, and transport classes. Application code imports the typed Rust-backed SDK shown below; agent code supplies cua-driver mcp to its agent SDK.

Installation

Install and usage docs live at https://cua.ai/docs/how-to-guides/driver/install and https://cua.ai/docs/reference/cua-driver/mcp-tools.

The wheel contains generated UniFFI bindings, a platform-specific Rust SDK library, and the cua-driver executable. CuaDriver.create() loads the runtime in the importing process and does not require the executable or daemon.

SDK example

import asyncio

from cua_driver import (
    CaptureScope,
    CuaDriver,
    EndSessionInput,
    GetDesktopStateInput,
    StartSessionInput,
)

async def main() -> None:
    driver = CuaDriver.create()
    await driver.start_session(
        StartSessionInput(session="demo", capture_scope=CaptureScope.DESKTOP)
    )
    try:
        desktop = await driver.get_desktop_state(
            GetDesktopStateInput(session="demo", screenshot_out_file=None)
        )
        print(desktop.images[0].mime_type)
    finally:
        await driver.end_session(EndSessionInput(session="demo"))
        await driver.shutdown()


asyncio.run(main())

SDK operations are asynchronous. Desktop calls return a typed ToolResult with text, images, verification/error metadata, and structured_json / raw_json for platform-extensible results. Session lifecycle calls return dedicated generated records.

CuaDriver.connect(socket_path) remains available while existing applications migrate. It exposes the same methods over the installed daemon, but it does not provide a second SDK contract.

shutdown() closes admission, waits for already admitted operations to finish, and is idempotent. Calls started after shutdown fail with DriverError.Shutdown. Destroying a binding handle releases native resources, but orderly applications should still await shutdown().

Daemon-backed MCP host

Applications that must also expose MCP to an external agent can own a private daemon child. The child provides a stable permission identity and session lifetime for short-lived or external clients:

import asyncio

from cua_driver import CuaDriver, EmbeddedCuaDriverHost, get_binary_path


async def main() -> None:
    host = EmbeddedCuaDriverHost(
        binary_path=str(get_binary_path()),
        host_bundle_id="com.example.your-app",
    )
    connection = await host.start()
    driver = CuaDriver.connect(connection.socket_path)
    try:
        # Application calls use driver. An agent runtime can launch
        # connection.mcp.command with connection.mcp.args and environment.
        print(await driver.metadata())
    finally:
        del driver
        await host.stop()


asyncio.run(main())

start() coalesces concurrent callers, stop() cancels startup and is idempotent, and restart() returns a new generation/PID/endpoint. Destroy SDK clients and MCP proxies before stopping or restarting, then reconnect from the new connection. wait_for_exit(connection.generation) observes unexpected termination. Dropping the host closes its parent-liveness pipe and kills the child as a fallback, but orderly applications should still await stop().

Binary wrapper

The package also exposes the bundled executable:

from cua_driver import get_binary_path, run_cua_driver

print(get_binary_path())
exit_code = run_cua_driver(["mcp"])

Platform support

Platform Architecture Status
macOS 13+ Universal (ARM64 + x86_64) Supported
Linux x86_64 Supported
Windows x86_64 Supported
Windows ARM64 Supported

License

MIT License — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cua_driver-0.12.5-py3-none-win_arm64.whl (20.2 MB view details)

Uploaded Python 3Windows ARM64

cua_driver-0.12.5-py3-none-win_amd64.whl (21.9 MB view details)

Uploaded Python 3Windows x86-64

cua_driver-0.12.5-py3-none-manylinux_2_31_x86_64.whl (22.9 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ x86-64

cua_driver-0.12.5-py3-none-manylinux_2_31_aarch64.whl (23.1 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ ARM64

cua_driver-0.12.5-py3-none-macosx_13_0_universal2.whl (32.2 MB view details)

Uploaded Python 3macOS 13.0+ universal2 (ARM64, x86-64)

File details

Details for the file cua_driver-0.12.5-py3-none-win_arm64.whl.

File metadata

  • Download URL: cua_driver-0.12.5-py3-none-win_arm64.whl
  • Upload date:
  • Size: 20.2 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cua_driver-0.12.5-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7b56655c37470043130b2ae6408d194bdc6b74965e7a7dbae5b2f2b210008647
MD5 79922df1098da8222480b2864ae2ef26
BLAKE2b-256 f0879149871f1c5f99c83955d6aa17dc9fad3f466d1e11b340c0c5b2c6a0d887

See more details on using hashes here.

File details

Details for the file cua_driver-0.12.5-py3-none-win_amd64.whl.

File metadata

  • Download URL: cua_driver-0.12.5-py3-none-win_amd64.whl
  • Upload date:
  • Size: 21.9 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cua_driver-0.12.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b97dc6c4bb046bf1ad1ac4157be62e55550680b7d79c207ad43dc240ea5b681f
MD5 1adedd63430744a45156f31552f7862d
BLAKE2b-256 68f16537a5a194f4e4486ebcbb1c84a3557126ae60d0d82040c6339a95f07d52

See more details on using hashes here.

File details

Details for the file cua_driver-0.12.5-py3-none-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for cua_driver-0.12.5-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 1abf9ecefbb22e9c258b4a7b1a00b5314d34c14d46f17bdcb428a75ad2512bb8
MD5 8eebdd4ddeb08aca8d03653b6d2d91c1
BLAKE2b-256 fe789d19c2cc9ce2aac972f6bf6112e61516e517fd786c74aa51cbe4b909e591

See more details on using hashes here.

File details

Details for the file cua_driver-0.12.5-py3-none-manylinux_2_31_aarch64.whl.

File metadata

File hashes

Hashes for cua_driver-0.12.5-py3-none-manylinux_2_31_aarch64.whl
Algorithm Hash digest
SHA256 d230093a959a2cf9439d100e5051e7f9b2a101d4f53111c86ee37843461a7a3c
MD5 e63d228e45785df14de7b9ab01380e60
BLAKE2b-256 52a556a75954d603e36c00121d1a23b9ac83cfd2ccb5a1c15a36cbe388bf8760

See more details on using hashes here.

File details

Details for the file cua_driver-0.12.5-py3-none-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for cua_driver-0.12.5-py3-none-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 4ae54b2ec4b5bee75c4599cc2049fca1495bab846891d2950dc35a6644ec5213
MD5 cf8558d85eb2afcee39c7087bc4178d5
BLAKE2b-256 651245e973bee7a93364f2c618e3f27e1123c4f54ab4837328a883393dd06e4d

See more details on using hashes here.

Release history Release notifications | RSS feed

0.28.1

5 files

0.28.0

5 files

0.27.0

5 files

0.26.1

5 files

0.26.0

5 files

0.25.0

5 files

0.24.0

5 files

0.23.2

5 files

0.22.2

5 files

0.22.1

5 files

0.22.0

5 files

0.21.0

5 files

0.20.0

5 files

0.19.3

5 files

0.19.2

5 files

0.19.1

5 files

0.19.0

5 files

0.18.0

5 files

0.17.0

5 files

0.16.0

5 files

0.14.2

5 files

0.14.1

5 files

0.14.0

5 files

0.13.1

5 files

0.13.0

5 files

This release

0.12.5 This release

5 files

0.12.4

5 files

0.12.3

5 files

0.12.2

5 files

0.11.0

5 files

0.10.0

5 files

0.9.1

5 files

0.9.0

5 files

0.8.3

5 files

0.8.2

5 files

0.8.1

5 files

0.8.0

5 files

0.7.1

5 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