Cua Driver runs on Windows 10/11 and x86_64 Linux with X11 or XWayland. On both platformsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/trycua/cua/llms.txt
Use this file to discover all available pages before exploring further.
cua-driver mcp owns its runtime directly — there is no separate app bundle with its own OS permission grants the way CuaDriver.app works on macOS. This page covers the platform-specific installation, session model, MCP setup, autostart, and common troubleshooting steps for each OS.
Windows
Install
Run the one-line PowerShell installer from an interactive session:%USERPROFILE%\.cua-driver\packages\releases\, exposes cua-driver.exe from %LOCALAPPDATA%\Programs\Cua\cua-driver\bin, and appends that directory to your User-scope Path. It detects whether the host is x64 or arm64. No administrator privileges are required.
Verify the install:
doctor runs the Windows session probe and reports whether the daemon is running in an interactive session. A result like [warn] interactive session: running in Session 0 means window-driving tools will return empty results — see the SSH section below.
The Windows session model
Windows window APIs (EnumWindows, UIA, BitBlt) are scoped to the caller’s WindowStation and Desktop. Interactive sessions (Session 1+) have an attached desktop; the services session (Session 0) does not. A process that runs in Session 0 — including shells launched from OpenSSH — cannot see the user’s windows.
On Windows, cua-driver mcp owns its runtime directly. This means the MCP process must run in an interactive session for GUI tools to work. There is no app bundle that holds grants on the process’s behalf.
Set up autostart
Register a Scheduled Task withLogonType: Interactive so the daemon always runs in the correct session:
enable registers the task. kick starts it immediately without waiting for the next logon. Both commands must be run from an interactive session (RDP or local console) — running them from SSH fails with a confusing error about account-name mapping.
Check the task state:
Disc state and is still a live interactive session. The daemon stops only on explicit logoff or reboot.
Run cua-driver mcp on Windows
After the daemon is running in an interactive session,cua-driver mcp in any session (including SSH) proxies to it over the named pipe:
--socket keeps the MCP process as a protocol proxy to the interactive daemon. Bare cua-driver mcp on Windows owns a direct runtime and therefore fails closed in Session 0 — it never silently falls back to another session.
Set a permission mode on Windows
cua-driver autostart enable registers a bare serve command with no mode flags. Configure the mode using User-scope environment variables that the Scheduled Task inherits at logon:
setx affects new processes only. Restart the daemon for the change to take effect:
Driving Windows apps over SSH
Windows OpenSSH runs in Session 0, the non-interactive services session.list_windows and other window-driving tools return empty results from Session 0 because they cannot see the user’s interactive desktop.
The solution is to run a cua-driver serve daemon in your interactive session via the autostart Scheduled Task, and have the SSH-side CLI or MCP adapter connect to that daemon through the named pipe.
From an interactive session (RDP or local console), set up autostart
Windows troubleshooting
Iflist_windows returns an empty array or tools behave unexpectedly:
- Run
cua-driver --versionfrom SSH and confirm it reports the current installed version. - Run
cua-driver statusand confirm a running daemon is reported. - Run
query sessionand confirm your user has a row inActiveorDiscstate. - Run
cua-driver doctorfrom RDP and check for[ok] interactive session: session N has an attached interactive desktop. - Confirm the MCP command includes
--socket \\.\pipe\cua-driver.
cua-driver autostart enable fails with an account-name mapping error, you are running it from a non-interactive context. Switch to RDP or the local console and try again.
Linux
Install
On a minimal or server image, install the required runtime libraries first (this step needssudo; the installer itself does not):
~/.cua-driver/packages/releases/, points ~/.cua-driver/packages/current at that release, and creates the ~/.local/bin/cua-driver symlink.
Verify the install:
doctor checks the AT-SPI bus and display server. It flags missing dependencies and Wayland compositor compatibility before you connect an agent.
X11 and Wayland support
X11 is fully supported. Cua Driver can discover windows, capture them, deliver background input through AT-SPI, and route foreground input through XTest — all proven across GTK, Electron, and Tauri applications. Native Wayland support is opt-in and compositor-specific:| Compositor | State | Notes |
|---|---|---|
| X11/Xorg | Supported | Full background AX and PX, foreground input, desktop scope |
| Sway (wlroots) | Supported with limits | Complete typed Electron, Tauri, and GTK catalog; focus-bound raw input refused |
| GNOME/Mutter | Supported with limits | Requires the WinRects Shell helper for geometry; portal video recording incomplete |
| KDE/KWin | Experimental | No target-addressable activation adapter yet; focus-bound input refused |
| XWayland | Supported with limits | X11 routes used when the app exposes a real X11 window |
Run cua-driver mcp on Linux
On Linuxcua-driver mcp owns its runtime directly — no separate daemon is required for MCP use, though a persistent daemon is useful for clients that reconnect frequently:
Set up autostart with systemd
cua-driver autostart is Windows-only. On Linux, create a systemd user unit:
graphical-session.target, also change the [Install] section to WantedBy=default.target so the unit has something to hook into at boot.
Set a permission mode on Linux
Add flags directly toExecStart in the unit file:
Linux troubleshooting
AT-SPI tools return empty results or fail:element_index) for background work, or escalate to foreground delivery for apps that only accept focused input. Check cua-driver doctor for compositor-specific notes.
Display not found:
Xvfb:
Next steps
Installation
Full installation steps including macOS TCC permissions.
Connect Agent
Register cua-driver with Claude Code, Codex, Cursor, and other MCP clients.
Background Delivery
How Cua Driver acts without stealing focus, and platform-specific limits.
Permission Modes
Standard, bounded, and unrestricted authorization for agents.