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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

cua_driver-0.12.2-py3-none-manylinux_2_31_x86_64.whl (22.8 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ x86-64

cua_driver-0.12.2-py3-none-manylinux_2_31_aarch64.whl (23.0 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ ARM64

cua_driver-0.12.2-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.2-py3-none-win_arm64.whl.

File metadata

  • Download URL: cua_driver-0.12.2-py3-none-win_arm64.whl
  • Upload date:
  • Size: 19.9 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.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 69ce4c5c54c54a70e3fb7e8baeb8b476cc151277a6ba6dab0eda052faf2918ff
MD5 4d19c08c4d2bc539bf1352bdcae917c8
BLAKE2b-256 35e598707a7d45744510c863417d2b859aaab9d35e6bc18e6e4660e52ab2cdee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cua_driver-0.12.2-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.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f1b5f05174720fd63a8797ab34d4227f1169a59ef1e04c54d1db2596a8e10f55
MD5 8244dcb683c10523096f7d33cf917005
BLAKE2b-256 2b9af9280da9bbdad5e7596e1ab7e77bcb8f18efe71ee2d33cfe3aa278cfa57a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.12.2-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 ce58c405f677d73f34f60c5e5f622a4426225517c15e55094f145b1f1e47a7db
MD5 89f068e181d7a1f42adb4eac609bd67c
BLAKE2b-256 2b346f4ba52bbc23f114546987c7e59851769af334e6e70975a3616f5c82e017

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.12.2-py3-none-manylinux_2_31_aarch64.whl
Algorithm Hash digest
SHA256 dc494710c3cf13139d715f3c117be46fabf6a388afdad71cb9a4f08ee8b2b4e5
MD5 375b799b438167848d0b976d869abc78
BLAKE2b-256 32c565facce8ae822e9c756a0aa4339496f88bb2a708ce7b40786b4da8673797

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cua_driver-0.12.2-py3-none-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 be45a102f92031b424e84dbfeba7afa3fcc6cd957bee0276f0e3a26f2d3efc58
MD5 0dc38348ac6b35f9a0ea2c267ff8c51c
BLAKE2b-256 1f9ab77097f4dd4ee0f0a6a92ea9fb9bd7acabdeb134fe10a76440ebe3cccb8e

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

This release

0.12.2 This release

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