### Quick Start Installation Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install the open-computer-use package globally using npm. ```bash npm i -g open-computer-use ``` -------------------------------- ### Verification After Setup Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/skills/open-computer-use/references/installation.md Verifies CLI and MCP setup by calling specific commands. ```sh open-computer-use call list_apps open-computer-use call get_app_state --args '{"app":"TextEdit"}' ``` -------------------------------- ### Install The CLI Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/skills/open-computer-use/references/installation.md Installs the Open Computer Use CLI using npm. ```sh npm install -g open-computer-use ``` -------------------------------- ### Install into OpenCode MCP Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install open-computer-use into opencode. ```bash # Install into opencode by writing to ~/.config/opencode/opencode.json (or the active config file) open-computer-use install-opencode-mcp ``` -------------------------------- ### Install Skill for Codex Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install the open-computer-use skill globally for Codex and verify the installation. ```bash # Install for Codex npx skills add iFurySt/open-codex-computer-use -g -a codex --skill open-computer-use -y npx skills ls -g -a codex | rg 'open-computer-use' ``` -------------------------------- ### Install as Codex Plugin Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install open-computer-use as a plugin for Codex App. ```bash open-computer-use install-codex-plugin ``` -------------------------------- ### Install into Gemini CLI (Local Project) Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install open-computer-use into Gemini CLI for the current project. ```bash # Install into Gemini CLI for the current project by writing to ./.gemini/settings.json open-computer-use install-gemini-mcp ``` -------------------------------- ### Verify CLI Installation Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/skills/open-computer-use/references/installation.md Verifies the CLI installation and checks basic functionality. ```sh open-computer-use -h open-computer-use call list_apps ``` -------------------------------- ### Install into Codex MCP Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install open-computer-use into Codex by writing to the configuration file. ```bash # Install into Codex by writing to ~/.codex/config.toml open-computer-use install-codex-mcp ``` -------------------------------- ### Install into Gemini CLI (User Config) Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install open-computer-use into Gemini CLI user configuration. ```bash # Install into Gemini CLI user config instead open-computer-use install-gemini-mcp --scope user ``` -------------------------------- ### Update Existing Skill Install Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/skills/open-computer-use/references/installation.md Updates an existing global skill installation. ```sh npx skills update open-computer-use -g -y npx skills upgrade open-computer-use -g -y ``` -------------------------------- ### Install Skill for Codex Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/skills/open-computer-use/references/installation.md Installs the Open Computer Use skill for Codex. ```sh npx skills add iFurySt/open-codex-computer-use -g -a codex --skill open-computer-use -y npx skills ls -g -a codex | rg 'open-computer-use' ``` -------------------------------- ### Explicit Transport Examples Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/scripts/computer-use-cli/README.md Examples demonstrating the use of explicit transport methods. ```bash go run . list-tools --transport app-server go run . list-tools --transport direct --server-bin /path/to/open-computer-use go run . call list_apps --transport direct --server-bin /path/to/open-computer-use go run . call-seq --transport direct --server-bin /path/to/open-computer-use --calls-file /tmp/calls.json ``` -------------------------------- ### Install Skill for Claude Code Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install the open-computer-use skill globally for Claude Code. ```bash npx skills add iFurySt/open-codex-computer-use -g -a claude-code --skill open-computer-use -y ``` -------------------------------- ### Toolchain Installation Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/references/codex-computer-use-reverse-engineering/background-click-free-tooling.md Commands to install necessary free tools using Homebrew and pip. ```bash brew install ghidra radare2 python3 -m pip install --user frida-tools lief capstone ``` -------------------------------- ### Install into Claude Code MCP Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Install open-computer-use into Claude Code by writing to the configuration file. ```bash # Install into Claude Code by writing to ~/.claude.json open-computer-use install-claude-mcp ``` -------------------------------- ### Basic Usage Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/scripts/computer-use-cli/README.md Examples of running the computer-use-cli for various operations. ```bash cd scripts/computer-use-cli go run . list-tools --transport app-server go run . call list_apps --transport direct --server-bin /path/to/open-computer-use go run . call-seq --transport direct --server-bin /path/to/open-computer-use --calls-file /tmp/calls.json ``` -------------------------------- ### Example A: START HANDLE Impact Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/references/codex-computer-use-reverse-engineering/software-cursor-slider-parameter-investigation.md Observed impact of START HANDLE adjustments in Example A. ```text -25% when chosen path length is approx 744.1, max deviation from chord is approx 44.6 +25% when chosen path length is approx 776.9, max deviation from chord is approx 49.8 ``` -------------------------------- ### Example working comparison flow against a local repo build Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/scripts/computer-use-cli/README.md This sequence of commands shows how to build the project, navigate to the CLI directory, and then run the CLI in direct mode with a local plugin root and server binary, using a predefined sequence of calls. ```bash swift build --product OpenComputerUse cd scripts/computer-use-cli go run . call-seq \ --transport direct \ --plugin-root ../.. \ --server-bin ../../.build/debug/OpenComputerUse \ --calls-file ../../examples/textedit-overlay-seq.json ``` -------------------------------- ### Directory Structure Example Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/HISTORY_GUIDE.md Example of the directory structure for storing history files. ```text docs/histories/ 2026-04/ 20260408-1430-bootstrap-template.md ``` -------------------------------- ### Quick Start Running Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Run the open-computer-use service. On macOS, this step requires granting Accessibility and Screen Recording permissions. ```bash open-computer-use ``` -------------------------------- ### Shell Scripts Calling Node Helper Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/histories/2026-04/20260420-1806-remove-python-from-installers.md Examples of how the install scripts now invoke the Node.js helper instead of relying on Python. ```bash #!/bin/bash # Ensure Node.js is available if ! command -v node &> /dev/null then echo "Node.js is required but not found. Please install Node.js." exit 1 fi # Path to the Node.js helper script NODE_HELPER="$(dirname "$0")/install-config-helper.mjs" # Example: Installing Codex MCP # This would involve reading/writing config using the helper # For demonstration, let's assume we are setting a config value # Example: Reading a config value # node "$NODE_HELPER" readConfig codex "$CODEX_HOME" # Example: Writing a config value # node "$NODE_HELPER" writeConfig codex '{ "some_key": "some_value" }' "$CODEX_HOME" # The actual logic would be more complex, involving parsing arguments and managing state. # This is a placeholder to show the invocation pattern. echo "Running install-codex-mcp.sh using Node.js helper..." # Actual installation logic here, using the helper for config operations. exit 0 ``` ```bash #!/bin/bash # Ensure Node.js is available if ! command -v node &> /dev/null then echo "Node.js is required but not found. Please install Node.js." exit 1 fi # Path to the Node.js helper script NODE_HELPER="$(dirname "$0")/install-config-helper.mjs" # Example: Installing Claude MCP # This would involve reading/writing config using the helper # Example: Reading a config value # node "$NODE_HELPER" readConfig claude "$CLAUDE_CONFIG_PATH" # Example: Writing a config value # node "$NODE_HELPER" writeConfig claude '{ "another_key": "another_value" }' "$CLAUDE_CONFIG_PATH" # The actual logic would be more complex, involving parsing arguments and managing state. # This is a placeholder to show the invocation pattern. echo "Running install-claude-mcp.sh using Node.js helper..." # Actual installation logic here, using the helper for config operations. exit 0 ``` ```bash #!/bin/bash # Ensure Node.js is available if ! command -v node &> /dev/null then echo "Node.js is required but not found. Please install Node.js." exit 1 fi # Path to the Node.js helper script NODE_HELPER="$(dirname "$0")/install-config-helper.mjs" # Example: Installing Codex Plugin # This would involve reading/writing plugin manifests and config using the helper # Example: Reading a plugin manifest # node "$NODE_HELPER" readManifest plugin "$CODEX_HOME" # Example: Writing a plugin manifest # node "$NODE_HELPER" writeManifest plugin '{ "plugin_name": "my_plugin" }' "$CODEX_HOME" # Example: Updating config.toml # node "$NODE_HELPER" writeConfig codex '{ "plugin_cache_path": "/path/to/cache" }' "$CODEX_HOME" # The actual logic would be more complex, involving parsing arguments and managing state. # This is a placeholder to show the invocation pattern. echo "Running install-codex-plugin.sh using Node.js helper..." # Actual installation logic here, using the helper for config operations. exit 0 ``` -------------------------------- ### Example working invocation against open-computer-use Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/scripts/computer-use-cli/README.md This command demonstrates how to invoke the CLI in direct mode to list tools, specifying the server binary path. ```bash go run . list-tools \ --transport direct \ --server-bin ~/.codex/plugins/cache/open-computer-use-local/open-computer-use/0.1.51/scripts/launch-open-computer-use.sh ``` -------------------------------- ### Install Into Agent MCP Configs Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/skills/open-computer-use/references/installation.md Installs Open Computer Use into various agent MCP configurations. ```sh open-computer-use install-codex-mcp open-computer-use install-claude-mcp open-computer-use install-gemini-mcp open-computer-use install-gemini-mcp --scope user open-computer-use install-opencode-mcp ``` -------------------------------- ### Show Help Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Display the help message for the open-computer-use command. ```bash # Show help open-computer-use -h ``` -------------------------------- ### Verify Version After Local Install Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/histories/2026-04/20260423-1151-add-cross-platform-npm-packages.md Command to verify the installed version after a local npm prefix installation. ```bash open-computer-use --version ``` -------------------------------- ### Example inventory probe against the official bundled computer-use Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/scripts/computer-use-cli/README.md This command illustrates how to use the CLI in app-server mode to list tools from the official bundled computer-use. ```bash go run . list-tools --transport app-server ``` -------------------------------- ### Key Actions in Changes Overview Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/histories/2026-04/20260419-1333-add-binary-guided-cursor-motion-re-demo.md A list of key actions taken as part of the changes, including adding execution plans, implementing a scriptable reverse-engineering tool, and creating a binary-guided demo. ```text - **[新增独立执行计划]**: 在 `docs/exec-plans/active/` 下为这条逆向 + 脚本化 demo 线路单独建 plan,并显式声明不触碰 `CursorMotion`。 - **[实现脚本化逆向工具]**: 新增 `scripts/cursor-motion-re/`,用纯 Python 实现最小 Mach-O section 解析、Swift field metadata 恢复和官方 binary 中的常量 / 候选系数表提取。 - **[实现 binary-guided demo]**: 新增 CLI,支持 `inspect` 和 `demo` 两个子命令;`demo` 可对指定起终点生成候选路径、measurement 和采样点 JSON,并默认输出精简版 `candidate_summaries + chosen_candidate`。 - **[确认候选打分与选择]**: 把 `0x100060da0` 中的 score 公式和 “prefer in-bounds, then choose minimum score” 策略回填进脚本输出,不再沿用之前的猜测权重。 - **[继续 lift 候选几何]**: 把 `0x10005fd98` 里 `CursorMotionPath/Segment` 的真实字段布局、guide vector、两条 base candidate、`3 x 3 x 2` arched candidate 以及 `20` 条候选总数直接落到脚本里,不再停留在“缺第二条 base candidate”的状态。 - **[补齐 timing 实证]**: 从 Swift metadata、type descriptor 和函数链继续下钻,确认 `ComputerUseCursor.CloseEnoughConfiguration`、`CursorNextInteractionTiming`、`Animation.SpringParameters`、`AnimationDescriptor`、`Transaction`、`VelocityVerletSimulation.Configuration` 的真实字段关系,并把 cursor path animation 的 `response=1.4`、`dampingFraction=0.9`、`dt=1/240`、`idleVelocityThreshold=28800` 和 `ComputerUseCursor.Window` 的 animation 状态槽位写回脚本与文档。 - **[补平 VelocityVerlet 数学公式]**: 继续深挖 `0x100593cfc`、`0x100593f18`、`0x100593404`、`0x100594110`,把 `stiffness = min((2π / response)^2, 28800)`、`drag = 2 * dampingFraction * sqrt(stiffness)`、stale-time clamp,以及单步 `VelocityVerlet` 更新顺序全部落进独立脚本。 - **[恢复 SpringAnimation finished predicate]**: 继续拆 `0x1005761bc` / `0x1005934b0`,确认 frame update 会在推进 simulation 后跑 finished predicate,并记录 threshold-square gate、`0.01` float literal 广播、exact-zero 双向比较,以及“端点先锁住、finished 仍可能稍后才成立”的谨慎 inference。 - **[固化函数级分析]**: 新增 `software-cursor-motion-reconstruction.md`,把已确认的 `sample(progress)`、`CursorMotionPathMeasurement`、候选 score 公式和候选总量形状单独沉淀。 - **[同步目录导航]**: 更新 reverse-engineering README,把新的 reconstruction 文档纳入索引。 ``` -------------------------------- ### Cursor Motion DMG Build Script Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/CICD.md Locally builds Cursor Motion.app and packages it into dist/release/cursor-motion/CursorMotion-.dmg, supporting native, arm64, x86_64, and universal architectures. ```bash scripts/build-cursor-motion-dmg.sh ``` -------------------------------- ### Codex Configuration Example Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/references/codex-computer-use-reverse-engineering/packaging-and-lifecycle-integration.md Example of the `notify` configuration in `~/.codex/config.toml`. ```toml notify = ["/Users/.../SkyComputerUseClient", "turn-ended"] ``` -------------------------------- ### Check Permissions Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/README.md Check system permissions required by open-computer-use. Onboarding prompts only appear when permissions are missing. ```bash # Check permissions; onboarding only opens when something is missing open-computer-use doctor ``` -------------------------------- ### Sample 3: set_value - System Settings (screen) Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/references/codex-computer-use-reverse-engineering/tool-call-samples-2026-04-17.md Sample request and response excerpt for setting a value (screen) in System Settings. ```json { "app": "System Settings", "element_index": "3", "value": "screen" } ``` -------------------------------- ### Install Config Helper Script Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/histories/2026-04/20260420-1806-remove-python-from-installers.md The new Node.js module for handling shared installation configuration, including reading and writing Claude JSON, Codex TOML, and plugin manifests. ```javascript import * as fs from 'fs'; import * as path from 'path'; const CONFIG_FILES = { claude: 'config.json', codex: 'config.toml', }; const MANIFEST_FILES = { plugin: 'plugin.json', }; function getConfigPath(type, homeDir) { const fileName = CONFIG_FILES[type]; if (!fileName) throw new Error(`Unknown config type: ${type}`); return path.join(homeDir || process.env.CODEX_HOME || process.env.CLAUDE_CONFIG_PATH || process.cwd(), fileName); } function getManifestPath(type, homeDir) { const fileName = MANIFEST_FILES[type]; if (!fileName) throw new Error(`Unknown manifest type: ${type}`); return path.join(homeDir || process.env.CODEX_HOME || process.cwd(), fileName); } function readConfig(type, homeDir) { const configPath = getConfigPath(type, homeDir); try { const data = fs.readFileSync(configPath, 'utf-8'); if (type === 'codex') { // Basic TOML parsing for Codex config const lines = data.split('\n'); const config = {}; lines.forEach(line => { if (line.includes('=')) { const [key, value] = line.split('=', 2).map(s => s.trim()); if (key && value) { config[key] = value.replace(/^"|"$/g, ''); // Remove surrounding quotes if any } } }); return config; } else { return JSON.parse(data); } } catch (e) { if (e.code === 'ENOENT') return null; // File not found is not an error throw e; } } function writeConfig(type, config, homeDir) { const configPath = getConfigPath(type, homeDir); const dir = path.dirname(configPath); if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } let data; if (type === 'codex') { data = Object.entries(config).map(([key, value]) => `${key} = "${value}"`).join('\n'); } else { data = JSON.stringify(config, null, 2); } fs.writeFileSync(configPath, data, 'utf-8'); } function readManifest(type, homeDir) { const manifestPath = getManifestPath(type, homeDir); try { const data = fs.readFileSync(manifestPath, 'utf-8'); return JSON.parse(data); } catch (e) { if (e.code === 'ENOENT') return null; throw e; } } function writeManifest(type, manifest, homeDir) { const manifestPath = getManifestPath(type, homeDir); const dir = path.dirname(manifestPath); if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } const data = JSON.stringify(manifest, null, 2); fs.writeFileSync(manifestPath, data, 'utf-8'); } export default { readConfig, writeConfig, readManifest, writeManifest, getConfigPath, getManifestPath, }; ``` -------------------------------- ### Open Computer Use Linux Build Script Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/CICD.md Locally builds the experimental Linux open-computer-use binary, supporting arm64 and amd64. The release package includes these artifacts in dist/linux/. ```bash scripts/build-open-computer-use-linux.sh ``` -------------------------------- ### Open Computer Use Windows Build Script Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/CICD.md Locally builds the experimental Windows open-computer-use.exe, supporting arm64 and amd64. The release package includes these artifacts in dist/windows/. ```bash scripts/build-open-computer-use-windows.sh ``` -------------------------------- ### Setting up Environment Variables for Target Binaries Source: https://github.com/ifuryst/open-codex-computer-use/blob/main/docs/references/codex-computer-use-reverse-engineering/background-click-free-tooling.md Environment variables to locate the bundled plugin and target binaries. ```bash CODEX_HOME="${CODEX_HOME:-$HOME/.codex}" APP="$CODEX_HOME/plugins/cache/openai-bundled/computer-use/1.0.755/Codex Computer Use.app" SERVICE="$APP/Contents/MacOS/SkyComputerUseService" CLIENT="$APP/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient" ```