OpenAICodex

Connect Codex to Phone Harness

Run Codex as a hosted agent in NoClick with Phone Harness wired into its tools handle. It can use Phone Harness directly while it works. No glue code, nothing to install. Click below to open a ready-to-run agent and connect your account.
Loading preview…
Opens a workflow with 19 tools ready to use.

Set up in minutes

The open button drops you into a guided setup. It asks exactly this, nothing else:
  1. Choose where it runs

    On your computer through your own Codex, or hosted in the cloud. The rest of setup adapts to your choice:

  2. Pick what it can do in Phone Harness

    A preset of real Phone Harness operations. Each one becomes a tool the agent can call, and it can't touch anything outside the list.

  3. Connect Phone Harness

    One sign-in. The agent acts through your account, scoped to the operations you picked.

  4. Add your personal MCP link

    The last step mints a private MCP URL for this agent and walks you through exactly this, with your real link filled in. The page flips to Connected the moment your Codex first calls in. Codex connects when a session starts — run codex, or restart a running one (in the Codex app, Restart).

    Run this in your terminal. The Codex app shares its config, so it gets the server too

    $codex mcp add noclick --url https://mcp.noclick.app/s/<your-link>

    <your-link> is your personal server URL — setup mints it for you.

Tools Codex gets

Pick the operations you want and each becomes a tool the agent can call directly while it works.

Phone Harness

19 tools
Create Session

Allocate an Android phone asynchronously. HTTP 202 means admitted, not ready. Poll the returned id. The deadline includes provisioning. Use one stable Idempotency-Key per logical Start. Pass your account's profile_id (from GET /me) to use your own phone, which is saved when the session ends and comes back the same way next time; omit it for a temporary phone that keeps nothing. Raw capabilities and runtime resource overrides are not supported. Omit provider to use the service default.

List Sessions

Return this account's sessions known to the live runtime, including provisioning, error, or closing entries. Completed sessions belong in history.

Get Session

Inspect state, deadline, geometry and advertised operations. A valid read-only watch grant may read only its own session. Ready does not mean a browser frame has been displayed.

End Session

Request closure of an owned session. New API operations stop and billable use ends at recorded closure. Capacity stays occupied until cleanup is confirmed. Repeating after the session is removed may return 404; use the create receipt to confirm cleanup.

Recover Create Request

Look up a durable, account-scoped create receipt, including after cleanup. A missing receipt does not justify retrying with a new key; reuse the same key and body for the same logical Start.

Get Owner Viewer

Mint an opaque, expiring interactive viewer URL for a ready, owned session. Treat it as a secret and never log it. Current embedding is restricted to the configured Phone Harness dashboard origin; arbitrary third-party embedding is not a supported integration. Reconnection does not extend the phone deadline. Watch grants cannot call this endpoint.

Get Viewer

Mint an opaque, expiring view-only viewer URL for a ready session: the same live video as the owner viewer, without input. This is what a watch link opens. The session owner may call it with a bearer credential; a watch link's holder passes its view grant as the token query parameter. Treat the URL as a secret and never log it. Embedding is restricted to the Phone Harness dashboard origin. Reconnection does not extend the phone deadline.

Get Account

Read account identity, credits and account capacity. can_rent describes the rental-access gate only; balance and shared capacity are checked separately when creating a session.

Reset Profile

Forget the saved profile phone: its apps, logins and data. The next session started with your profile_id begins with a fresh phone. Refused while a session holds the phone.

Reset Device

Erase one of your iPhones and set it up again: its apps, accounts and data are deleted, and it stays assigned to your account. Takes a few minutes; meanwhile its state in GET /me → available is resetting and a start on it answers 409 device_resetting. It ends available, or reset_failed if the reset did not finish: reset it again (the same call). Refused while a session holds the phone.

List Api Keys

List active keys for your account. Full bearer keys are never returned here.

Create Api Key

Create another account-wide key. The raw secret is shown only once. For your first key, use the authenticated dashboard. A key can manage other keys on the same account.

Revoke Api Key

Revoke a key belonging to this account using its key_hash from the key list, not the raw key. Revoking a key does not end sessions. The response is idempotent and does not prove the identifier existed.

List History Page

Paginated finished-session records ordered by ended time, then session ID, descending. Cursors are opaque and account-bound. History end time is not cleanup confirmation; use the create receipt for that.

Get Recent History

Return up to 100 finished sessions, ordered by creation time descending. This endpoint has no pagination parameters. Prefer GET /history/page for a complete history.

Enable Adb

Return the ADB endpoint and unlock code for one ready session owned by your account. Ready phones already have ADB enabled and carry the same values in the session's adb block, so this is only needed to re-enable after DELETE; it is idempotent. Takes no body. Watch tokens cannot enable access. See the [connection guide](/guides/connect-adb).

Get Adb

Return the ADB endpoint and unlock code for enabled ADB access, or enabled: false. Requires a ready, unexpired session owned by your account. Watch tokens cannot read this endpoint.

Revoke Adb

Revoke ADB access for your session. This does not end the phone or stop its billing; use DELETE /sessions/{sid} to end the session. Revocation can be requested while a live session is closing or its deadline has passed, provided its allocation is still available. An already-removed session returns 404. Watch tokens cannot revoke access.

Reset Adb

Mint a new unlock code for this session and close every existing ADB connection. Use it when the code has been shared too widely. The endpoint's host and port stay the same. Takes no body. Watch tokens cannot reset.

About Codex

Codex is OpenAI's command-line coding agent. NoClick runs it as a hosted agent and lets you connect your apps to it as tools, turning it from a coding assistant into an operator that can act across your systems. Connect an integration to the agent and Codex can query, create, and update records in that app directly. You keep the Codex experience and give it real reach into the tools your team already uses.
Fast, capable code generation and editing
Good at well-scoped, concrete tasks
Strong at API and data manipulation
Familiar to teams already on OpenAI tooling

Frequently asked questions

More ways to connect

Open your Codex agent in one click.

NoClick runs Codex for you with Phone Harness wired in as tools. Connect your account and run.