lcu
amontlabs · amontlabs/lcu
Give your agent control over your desktop and browser to click, type, and read screens natively.
Codex computer use, decoupled from the app, for usage inside any harness.
Preview
What you can do with it
- Automate repetitive UI tasks
- Test desktop applications
- Extract data from legacy software
Safety check
No risky patterns found in the files we scanned.
Automated scan of the repo files. Always review code you run.
From the README
LCU
Codex computer use, decoupled from the Codex app.
https://github.com/user-attachments/assets/bd9d0809-8a6c-4931-a51c-b98daf05cb5f
LCU exposes Codex's original computer-use runtime to your harness without requiring Codex authentication. The official ChatGPT desktop app must still be installed locally: it supplies the runtime and instructions, while LCU handles setup and harness integration.
Quick start
Copy this into your agent:
Install and configure LCU for this harness using the latest release.
Follow https://raw.githubusercontent.com/amontlabs/lcu/main/docs/INSTALLATION.md
Check my OS, architecture, and prerequisites, then guide me through any required permissions.
In Claude Code on an Apple Silicon Mac, two commands do the same through its plugin manager; see Claude Code plugin:
claude plugin marketplace add amontlabs/lcu
claude plugin install lcu@lcu
Features
- Desktop apps: read windows, click, type, and take screenshots.
- Chrome, when enabled: read and control tabs through the official extension, with site approval.
- In your harness: adapters are available for Pi, Codex CLI, and Claude Code, with experimental Oh My Pi and Hermes integrations. See setup and verification limits.
Approve apps from Claude, natively
The first time an agent controls an app (Zed, Notes, Safari), the computer-use runtime asks you to allow it. The Claude app's Code tab used to fail that request with "Computer Use was not approved". lcu setup --agent claude-code now installs a small Claude Code mod, lcu-approve, that asks the question natively: as a question card in the Claude app, which flags the session as needing input, and as a Computer use approval pane in the terminal.
- Allow this conversation for the current chat only.
- Always allow to remember the app (offered only when the runtime allows it).
- Deny to refuse.
The /computer-use-apps command opens an Approved apps panel in the same place: one line per always-allowed app with Revoke (macOS asks for Touch ID or your password), apps that are no longer installed grouped below, this conversation's grants, and an Allow field.
Only you can answer: the model cannot see, press or fake the pane. High-risk apps show the runtime's own warning (reworded to say "computer use" and "the agent"), and the app hosting the agent is never approved. Needs the Claude app or Claude Code 2.1.287+. How it works, how to remove it.
In the Claude app, register LCU through Claude Code (lcu setup --agent claude-code), not through Settings > Connectors; see installation.
Manage approved apps with Touch ID
"Always allow" is remembered. Review and change that list from the terminal (macOS), without opening the Codex app:
lcu apps # what is always allowed today
lcu apps allow Zed # Touch ID (or your password), then Zed is allowed
lcu apps revoke Zed # take it back
- Pass an app name, a bundle identifier or an
.apppath. - Listing is free;
allowandrevokeneed you at the machine, so an agent running them is stopped by the prompt. - Running sessions pick the change up immediately.
- Browsers, password managers and other high-risk apps come with a warning; apps Computer Use refuses outright (Terminal, iTerm2) are declined.
Keep Computer Use across turns (Claude Code)
In Claude Code, Computer Use normally ends with the turn that started it. A background subagent still working after that turn ended, or a turn that reuses an ended turn id, is told "Computer Use is unavailable because the current turn ended." An opt-in setting keeps it available for every turn of the session:
lcu cross-turn # status
lcu cross-turn on # Touch ID (or your password) on macOS
lcu cross-turn off # no prompt
- Off by default.
lcu setup --cross-turn on|offsets it too; interactive setup asks once. - It affects only the Claude Code relay; Codex, Pi, Oh My Pi and Hermes ignore it. Per-app approvals (macOS and Windows) and your harness's tool approvals still apply.
- A foreground subagent finishing no longer ends the parent's Computer Use, with the setting on or off.
- A guard against accidents, not a security boundary: anything running as your account can edit the file or pass
--unattended(for disposable sandbox machines, where nobody can answer the prompt).
Permissions
Your harness decides whether the agent may call LCU's tools (Claude's "don't ask again" on the first card, Codex's tool approval, and so on). LCU decides, per app, whether that agent may touch it, in every permission mode. lcu setup --approval auto is optional and meant for unattended machines (VMs, CI): it pre-allows LCU's two model tools in the harness, and leaves per-app approval in force. See approval mode.
Requirements
Install the official ChatGPT desktop app and your harness first. LCU needs nothing else: no Python on any platform. It runs on the Node that ships inside the app, checks the installed app for compatibility and uses its original runtime. For Codex CLI, update before setup to get the required hook support.
| Platform | Requirements |
|---|---|
| Linux ARM64 or x86-64 | Ubuntu 24.04-compatible glibc system, an active X11 desktop, and D-Bus |
| macOS on Apple Silicon | The signed ChatGPT app, with Accessibility and screen-recording permissions approved during first use |
Windows 11 x64 remains a [candidate](docs/INSTALLATION.md#windows-11-x64-candidate-deferred-from-this-delive