omo-codex-computer

extensionmaintained

OMO Native plugin for OpenAI Codex Computer Use and first-party Chrome automation through Codex app-server

by — · v0.1.6 · published 2w ago

$ pi install npm:omo-codex-computer
downloads/mo
482
stars
0
last push
2w ago
open issues
0

Signals

license: MITtestspi manifest: missinginstall size: —deps: 0peer deps: 0

Download trend

491 downloads · last 12 weeks (weekly)

README

omo-codex-computer

CI npm GitHub release

Use OpenAI Codex to inspect and operate local macOS apps, or to perform an explicit web task in one constrained Chrome tab.

omo-codex-computer is an OMO Native plugin with two separate automation surfaces:

  • Native Computer Use for local macOS applications.
  • Chrome for explicit website tasks in one new, agent-owned tab.

It does not support other model providers, other browsers, existing Chrome tabs, raw JavaScript, or CDP.

Quick start

  1. Install the published package:

    omo install npm:omo-codex-computer
    
  2. Start OMO and check readiness:

    /codex-computer status
    
  3. Ask Codex to inspect a local app:

    Inspect the current state of Notes and tell me which note is selected.
    

For a website task, explicitly ask Codex to use Chrome:

Use Chrome to open https://example.com, report the exact h1, then close the agent-owned tab.

The tools are searchable through OMO's tool_search. To activate both tool families for the current session, run:

/codex-computer enable

Choose the right surface

SurfaceBest forAccess boundary
Native Computer UseInspecting or operating a local macOS appUses Codex Computer Use and the app's macOS accessibility state.
ChromeAn explicit website taskCreates one opaque tab owned by the current agent run. It cannot inspect, select, or attach to existing tabs.

Native Computer Use

The plugin registers twelve computer_use_* tools:

AccessTools
Read-onlycomputer_use_list_apps, computer_use_get_app_state, computer_use_resolve_app
Write-capablecomputer_use_click, computer_use_type_text, computer_use_press_key, computer_use_scroll, computer_use_drag, computer_use_set_value, computer_use_select_text, computer_use_perform_secondary_action, computer_use_paste

Start with computer_use_list_apps, computer_use_resolve_app, or computer_use_get_app_state. Prefer element indexes over screen coordinates, and inspect state after each change.

Example:

Use Computer Use to inspect Calendar. List the visible calendar names, but do not make any changes.

Chrome

Chrome uses three tools:

ToolPurpose
chrome_openCreate the agent-owned tab and optionally load an HTTP(S) URL.
chrome_observeRead the current page snapshot.
chrome_actPerform one finite navigation, click, fill, keypress, select, check, or close action.

Chrome accepts semantic locators and a fixed key allowlist. It does not expose browser handles, selectors, JavaScript, CDP, history, credentials, uploads, downloads, or browser-authentication primitives.

Example:

Use Chrome to open the site, inspect the form, and fill the requested fields. Stop and ask me before submitting it.

A request to browse or fill fields is not approval to submit, purchase, delete, change security settings, send a message, or transmit sensitive information.

Safety model

Confirmations and permissions

  • All tools delegate authorization to OMO permission presets and explicit rules in interactive, print, and RPC sessions. The plugin adds no extra confirmation dialog.
  • Native Computer Use elicitation fails closed without an interactive UI, except for the explicit development-only app allowlist.
  • Chrome elicitation is always declined.
  • Desktop state, page snapshots, and page text are untrusted content.

Failure boundaries

Native Computer Use prefers the Codex Sky route through node_repl. It may select direct Computer Use MCP only before an action is dispatched. A possible side effect is never replayed.

Chrome validates the bundled first-party Chrome plugin, its canonical artifacts and automation contract, the runtime shape, and the installed Codex app-server version. It never falls back to Computer Use, raw CDP, another browser, or another tab.

If a Chrome action may have happened but cannot be confirmed, the current agent run is poisoned. Stop instead of retrying or rerouting. Normal completion closes the owned tab when the agent settles; session shutdown is the final cleanup boundary.

Requirements

CapabilityRequired setup
All usemacOS, OMO Native, Node.js 24 or newer, and the Codex CLI available as codex on PATH.
Native Computer UseCodex.app or ChatGPT.app with Codex Computer Use available, the bundled computer-use Codex plugin, and Accessibility and Screen Recording permissions when requested.
ChromeGoogle Chrome, the official ChatGPT Chrome extension connected to the desktop app, and a trusted Codex app-server version.

Commands

CommandWhat it does
/codex-computer statusReports Computer Use and static Chrome readiness.
/codex-computer diagnosePrints the same detailed readiness report as status.
/codex-computer trustContract-checks and live-probes the installed Chrome stack, then persists trust for a passing app-server version.
/codex-computer trust clearRemoves persisted Chrome app-server trust.
/codex-computer enableActivates both tool families.
/codex-computer disableDeactivates the tools and stops both runtimes.
/codex-computer restartRestarts the dedicated app-server runtimes.
/codex-computer hide-statusHides the Computer Use footer status.
/codex-computer show-statusShows the Computer Use footer status.

If Chrome reports an untrusted app-server version, run /codex-computer trust. The command verifies the static contract and performs a live open, observe, reload, close, and cleanup probe before persisting trust.

Configuration

VariableEffect
OMO_CODEX_COMPUTER_STATUS=offStart with the Computer Use footer status hidden.
OMO_CODEX_COMPUTER_IDLE_TIMEOUT_MS=<milliseconds>Set the idle child shutdown timeout.
OMO_CODEX_COMPUTER_DEBUG=1Write redacted diagnostics to stderr.
OMO_CODEX_COMPUTER_LOG=<path>Append redacted diagnostics to a log file.
OMO_CODEX_CHROME_TRUST=<versions>Add a comma-separated app-server trust override.
OMO_CODEX_COMPUTER_DEV_AUTO_ACCEPT_APPS=<apps>Set a development-only native permission allowlist.

Persisted Chrome trust is stored locally. Malformed trust entries never add trust.

Troubleshooting

ProblemWhat to do
codex is not foundInstall Codex and ensure codex is on PATH, then run /codex-computer status.
Computer Use is not readyRun /codex-computer status to inspect the app-server, bundled plugin, and selected route. Confirm required macOS permissions when prompted.
A visible local app reports Invalid appCall computer_use_list_apps, then computer_use_resolve_app. Prefer a bundle id, .app path, or exact registered display name.
Chrome reports an untrusted app-server versionRun /codex-computer trust. Do not override a failed contract check or live probe blindly.
Chrome cannot find an elementObserve again and refine the semantic locator. Retry only when the previous result confirms that no action occurred.
Chrome becomes unavailable for the runStop and explain the uncertainty. Do not retry a possible side effect or switch automation surfaces.
A write is blocked outside interactive modeSelect an appropriate OMO permission preset and explicit rules. Native elicitation still fails closed without UI, and Chrome elicitation is always declined.

Remove the package with:

omo remove npm:omo-codex-computer

Development

Install dependencies and run the full local verification suite:

bun install --frozen-lockfile
bun run check
bun run qa:host
npm pack --dry-run

Load the working tree through the real host:

omo -e .

Live native smoke test:

omo --offline --no-session --no-context-files --no-skills \
  -e . \
  --tools computer_use_list_apps \
  --model openai-codex/gpt-5.6-sol \
  -p 'Call computer_use_list_apps exactly once and report the first returned application name.'

Live Chrome smoke test:

omo --offline --no-session --no-context-files --no-skills \
  -e . \
  --tools chrome_open,chrome_observe,chrome_act \
  --model openai-codex/gpt-5.6-sol \
  -p 'Open https://example.com with chrome_open, report the exact h1, then close the owned tab with chrome_act.'

See Contributing for the complete contributor workflow and automation invariants.

Releases and project links

Owner pull requests run the complete check suite and merge automatically only after required CI passes. Qualifying merges produce a patch release with generated GitHub release notes and npm trusted-publishing provenance.

License

MIT