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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed515c76d640d704d42baeba5148bdeeb26e1c0b7cd4d5397032bf75d28bdda3
|
|
| MD5 |
ee895046bd5bb7efc848c61f912afc17
|
|
| BLAKE2b-256 |
b97c382ea33014ca8e5fb790c69e419385c02e82eb36dadc04d71d9b808781f4
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f153088237511ba16342fb1bb1183ffd92708161ad5114c250644fcb8ece2e95
|
|
| MD5 |
af4c47b87c32c99e474639c6877e205f
|
|
| BLAKE2b-256 |
689dde5706d115bcdb33430033ef259e7e4ebc3cdd15bbb2a4949108853d29b1
|
File details
Details for the file cua_driver-0.11.0-py3-none-manylinux_2_31_x86_64.whl.
File metadata
- Download URL: cua_driver-0.11.0-py3-none-manylinux_2_31_x86_64.whl
- Upload date:
- Size: 13.1 MB
- Tags: Python 3, manylinux: glibc 2.31+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5a492cb84c75af1376554025f2e273bea9d955f3dd2bdad10215c3a3dba7563
|
|
| MD5 |
310f450abebc00a7c060285bd456c2e0
|
|
| BLAKE2b-256 |
2070d648e53b26216b0aa927f855f435cb4c72f0cf37c0f3cb1b897b46607028
|
File details
Details for the file cua_driver-0.11.0-py3-none-manylinux_2_31_aarch64.whl.
File metadata
- Download URL: cua_driver-0.11.0-py3-none-manylinux_2_31_aarch64.whl
- Upload date:
- Size: 12.9 MB
- Tags: Python 3, manylinux: glibc 2.31+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd83e8ea515b4b03572475578c87cc114e024232a36c22c3aa62f6d727d03fef
|
|
| MD5 |
174f08a9a67ea27d04d00b5710d18861
|
|
| BLAKE2b-256 |
99eebcea2257b6d7247d4ee1ed5c7fceb954e9d9d21ffe8d935ad2be96e6bc5d
|
File details
Details for the file cua_driver-0.11.0-py3-none-macosx_11_0_universal2.whl.
File metadata
- Download URL: cua_driver-0.11.0-py3-none-macosx_11_0_universal2.whl
- Upload date:
- Size: 18.8 MB
- Tags: Python 3, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f16ff60a5fb6b71a52b5d748fa66e14b8108732073b8bc7bd83fc854e99f318
|
|
| MD5 |
3c7b26acbe20e4ba8a30d3db966d5a1b
|
|
| BLAKE2b-256 |
71463c3bc14ff78c631f417fa9b8b4e77066aef5b3db313f0738dbb12e83b162
|