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

Uploaded Python 3Windows ARM64

cua_driver-0.12.3-py3-none-win_amd64.whl (21.8 MB view details)

Uploaded Python 3Windows x86-64

cua_driver-0.12.3-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.3-py3-none-manylinux_2_31_aarch64.whl (23.0 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ ARM64

cua_driver-0.12.3-py3-none-macosx_13_0_universal2.whl (32.1 MB view details)

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

File details

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

File metadata

  • Download URL: cua_driver-0.12.3-py3-none-win_arm64.whl
  • Upload date:
  • Size: 20.0 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.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 70387c52ef6092823bbbb9d904a5db20eb4eb4785f18d5d641b74ca09f669763
MD5 13e99d1a75ab7061022a1ef88b76917b
BLAKE2b-256 684a65de06b5c12f92d7e35133b93851414b21bdccc4c8893c39dd615f42944b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cua_driver-0.12.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 21.8 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.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4fafe5e7dd9342495cd526014e15ac702967fa9ad8cbe2f9f7b28521ea957b44
MD5 a144e66dacb9ff0e45aa03bab230f9c7
BLAKE2b-256 27e3d58ddfccce9bd0c30762bf4cd05a8629be4aeda7848eb278d6c08ca8757b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.12.3-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 397d65bdc5662f65413f248e81297f186c07bd48ef2c906d94f55aec05aff0f7
MD5 0b2b8852aafa2e65367dbce5561c8a97
BLAKE2b-256 0e27c9e58cf1f393f2823b0a1cc5f40e41a526c5ce82b9de5e7c17193bd286b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.12.3-py3-none-manylinux_2_31_aarch64.whl
Algorithm Hash digest
SHA256 04fb0c1d6882071e70db95a20504880ead863d90ab99ef1bbe7e56c1ce0ceee8
MD5 11478e78b8c7f90c7e07dcafd4f2dcbd
BLAKE2b-256 035ed7f61ff8eaf07ea2edd0446b1959f933cf82de523711b6b112af60c7a7d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.12.3-py3-none-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 5a6e7931cfc522b87b71820ab363dc476c0fa33678e04b6111465fa494ebcd9a
MD5 0fdcbaba3bce135894a8c841577a1fe1
BLAKE2b-256 68dce80b13321316a91192c10cbbc6cc43fc93b081a6f2d4335a7fb554006b1a

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

This release

0.12.3 This release

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