lcu is a free, open source data extraction & web scraping project written in Python and released under MIT. It has 735 GitHub stars, 34 forks and 1 open issues, and was last pushed 13 hours ago. On this registry it ranks #122 of 134 tracked projects in Data Extraction & Web Scraping, with 5 head-to-head comparisons available.

What is lcu?

LCU is a Python tool that exposes Codex's computer-use runtime to any agent harness — Claude Code, Codex CLI, Pi, and others — for people who want desktop and browser control without running the Codex app's own agent.

What it is

LCU is an MIT-licensed Python project that decouples Codex's computer-use runtime from the Codex application, making that runtime available to whatever harness an operator already uses. It handles setup and harness integration itself, and adapters exist for Pi, Codex CLI, and Claude Code, with experimental integrations for Oh My Pi and Hermes. The project targets Linux and macOS (including Apple Silicon), works over X11, and is positioned around accessibility, agent skills, and MCP.

The concrete problem it solves is harness lock-in: computer-use capability was previously available only inside the Codex app, so an agent running in Claude Code or another harness could not read windows, click, type, or take screenshots. LCU removes that coupling — while the official ChatGPT desktop app must still be installed locally because it supplies the runtime and instructions, LCU decouples the runtime from Codex authentication and wires it into the harness instead. It also fixes a specific failure where the Claude app's Code tab rejected computer-use requests with "Computer Use was not approved".

Key capabilities

  • Reads windows, clicks, types, and takes screenshots of desktop applications such as Zed, Notes, and Safari.
  • Controls Chrome tabs through the official extension when enabled, with per-site approval.
  • Ships harness adapters for Pi, Codex CLI, and Claude Code, plus experimental Oh My Pi and Hermes integrations.
  • Installs a Claude Code mod named lcu-approve via lcu setup --agent claude-code, rendering approvals as a native Computer use approval pane rather than the failing request path.
  • Provides the /computer-use-apps command, which opens an Approved apps panel listing always-allowed apps with Revoke, uninstalled apps grouped separately, and this conversation's grants.
  • Offers terminal approval management on macOS: lcu apps lists what is always allowed, lcu apps allow Zed and lcu apps revoke Zed change it, accepting an app name, a bundle identifier, or an .app path.
  • Supports lcu setup --approval auto, which pre-allows LCU's two model tools in the harness for unattended machines such as VMs and CI while leaving per-app approval in force.

Who uses it and how

  • Developers running Claude Code on an Apple Silicon Mac, where two plugin-manager commands install it: claude plugin marketplace add amontlabs/lcu then claude plugin install lcu@lcu.
  • Operators of unattended machines — VMs and CI — who use lcu setup --approval auto so the harness does not prompt while per-app approval still applies.
  • People using the Claude app's Code tab, who register LCU through lcu setup --agent claude-code rather than through Settings > Connectors.
  • Users who review and revoke standing permissions at the terminal with Touch ID or a password, so allow and revoke are blocked when an agent runs them, while running sessions pick up changes immediately.

Getting started

Paste the README's quick-start prompt into your agent to install and configure LCU for that harness, following https://raw.githubusercontent.com/amontlabs/lcu/main/docs/INSTALLATION.md, which checks OS, architecture, prerequisites, and permissions; the prerequisites are the official ChatGPT desktop app, Python 3.12+, and your harness.

How it compares

No comparable third-party tool is named in the available facts, so LCU stands alone in this registry as the piece that hands Codex's computer-use runtime to a harness of the user's choosing rather than to the Codex app itself.

When to use it — and when not

A self-hoster must still install and maintain the official ChatGPT desktop app locally, since LCU supplies setup and integration but not the runtime, and permission work spans both the harness's tool approval and LCU's own per-app gate. It is a poor fit for anyone who cannot or will not install that app, and some surfaces are provisional: the Oh My Pi and Hermes integrations are experimental, the native approval pane requires the Claude app or Claude Code 2.1.287+, and the README points to docs/ADAPTERS.md for setup and verification limits rather than promising full coverage.

project readme (upstream, from github) — read inline

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 shows the question as a native Computer use approval pane in the Claude app, and 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 .app path.
  • Listing is free; allow and revoke need 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.

Details.

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, Python 3.12+, and your harness first. LCU 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. Intel Macs, native Wayland, and musl Linux are unsupported. See verification and limits for tested behavior.

Install manually

Download the archive and matching .sha256 file from the latest release:

Platform Archive
macOS on Apple Silicon lcu--darwin-arm64.tar.gz
Linux ARM64 lcu--linux-arm64.tar.gz
Linux x86-64 lcu--linux-x64.tar.gz

Follow the installation guide to verify the checksum, extract the archive, and register LCU in your harness. Setup offers an agent chooser and desktop-readiness guidance. Chrome and computer-audio recording are opt-in.

For development, see building from source.

Enable Chrome

Ask your agent:

Enable Chrome control in my LCU setup using the installation guide:
https://raw.githubusercontent.com/amontlabs/lcu/main/docs/INSTALLATION.md#desktop-and-browser

Enable the official extension in your Chrome profile and restart your harness. Then restart Chrome, or turn the ChatGPT extension off and on in chrome://extensions; an extension that was already connected keeps the original native host until it reconnects. Then ask your agent to use LCU to list Chrome tabs. Sites still require approval. Claude Code's Chrome support remains experimental because some interruptions do not trigger tab cleanup; see adapter limitations. If Chrome calls fail with requires caller identity, see Chrome troubleshooting.

Enable computer-audio recording

Pass --audio when setting up a maintained harness, for example:

~/.local/share/lcu/current/bin/lcu setup --agent pi --audio

The installer does not add lcu to your PATH; run its installed path (/opt/lcu/current/bin/lcu on Linux). See the lcu command.

This enables the installed original runtime's optional computer-audio recording API and its original approval flow. LCU does not add audio-specific instructions, and a saved recording is not audio delivered to the model. See the audio opt-in verification record.

Pi commands

In interactive Pi, /lcu stop requests original Computer Use Stop for a selected app during the active LCU turn (macOS only). /lcu pick selects an original app or browser target and appends it to the editor draft while Pi is idle; review and submit the draft yourself. See adapter command behavior and limits.

Documentation

  • Installation: downloads, harness setup, permissions, sessions, and upgrades. Update with lcu update; update notices can be turned off with LCU_NO_UPDATE_CHECK=1.
  • Harness adapters: custom clients, approvals, lifecycle, and result handling.
  • Verification: tested behavior and remaining gaps.
  • Development: source builds and isolated desktop tests.

LCU is MIT licensed. Release archives contain LCU and third-party setup dependencies. The OpenAI app and its instructions come from your local installation and retain their own terms; see dependency provenance.

Frequently asked questions

Is lcu free to use?

lcu is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does lcu do?

Codex computer use, decoupled from the app, for usage inside any harness.

What is lcu written in?

lcu is primarily written in Python. Its source is publicly available at https://github.com/amontlabs/lcu, and it has 735 GitHub stars.