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 migrates to the synchronous Rust-backed methods shown below; agent code removes the Cua package import and 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. The daemon must be running and have the required OS permissions before SDK calls are made.

SDK example

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

driver = CuaDriver.connect(None)  # or pass an explicit daemon socket path
driver.start_session(
    StartSessionInput(session="demo", capture_scope=CaptureScope.DESKTOP)
)
try:
    desktop = driver.get_desktop_state(
        GetDesktopStateInput(session="demo", screenshot_out_file=None)
    )
    print(desktop.images[0].mime_type)
finally:
    driver.end_session(EndSessionInput(session="demo"))

The SDK is currently synchronous. 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.

Embedded application host

Python applications can own the same Rust lifecycle object as Node clients. The regular CuaDriver interface is unchanged; only the socket comes from the embedded host:

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(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 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.11.0-py3-none-win_arm64.whl (14.1 MB view details)

Uploaded Python 3Windows ARM64

cua_driver-0.11.0-py3-none-win_amd64.whl (15.4 MB view details)

Uploaded Python 3Windows x86-64

cua_driver-0.11.0-py3-none-manylinux_2_31_x86_64.whl (13.1 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ x86-64

cua_driver-0.11.0-py3-none-manylinux_2_31_aarch64.whl (12.9 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ ARM64

cua_driver-0.11.0-py3-none-macosx_11_0_universal2.whl (18.8 MB view details)

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

File details

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

File metadata

  • Download URL: cua_driver-0.11.0-py3-none-win_arm64.whl
  • Upload date:
  • Size: 14.1 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.11.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 ed515c76d640d704d42baeba5148bdeeb26e1c0b7cd4d5397032bf75d28bdda3
MD5 ee895046bd5bb7efc848c61f912afc17
BLAKE2b-256 b97c382ea33014ca8e5fb790c69e419385c02e82eb36dadc04d71d9b808781f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cua_driver-0.11.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 15.4 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.11.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f153088237511ba16342fb1bb1183ffd92708161ad5114c250644fcb8ece2e95
MD5 af4c47b87c32c99e474639c6877e205f
BLAKE2b-256 689dde5706d115bcdb33430033ef259e7e4ebc3cdd15bbb2a4949108853d29b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.11.0-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 c5a492cb84c75af1376554025f2e273bea9d955f3dd2bdad10215c3a3dba7563
MD5 310f450abebc00a7c060285bd456c2e0
BLAKE2b-256 2070d648e53b26216b0aa927f855f435cb4c72f0cf37c0f3cb1b897b46607028

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.11.0-py3-none-manylinux_2_31_aarch64.whl
Algorithm Hash digest
SHA256 bd83e8ea515b4b03572475578c87cc114e024232a36c22c3aa62f6d727d03fef
MD5 174f08a9a67ea27d04d00b5710d18861
BLAKE2b-256 99eebcea2257b6d7247d4ee1ed5c7fceb954e9d9d21ffe8d935ad2be96e6bc5d

See more details on using hashes here.

File details

Details for the file cua_driver-0.11.0-py3-none-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for cua_driver-0.11.0-py3-none-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 6f16ff60a5fb6b71a52b5d748fa66e14b8108732073b8bc7bd83fc854e99f318
MD5 3c7b26acbe20e4ba8a30d3db966d5a1b
BLAKE2b-256 71463c3bc14ff78c631f417fa9b8b4e77066aef5b3db313f0738dbb12e83b162

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

0.12.5

5 files

0.12.4

5 files

0.12.3

5 files

0.12.2

5 files

This release

0.11.0 This release

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