Skip to main content
An agent uses a cloud phone through phone-harness: the same open-source harness that drives a phone on your desk, pointed at a phone in the cloud over ADB. There is no separate integration per agent, and the agent never needs your API key.

Set up the machine the agent runs on

Once per machine — a laptop, a CI runner, a sandbox image. Works on macOS, Linux and Windows.

Sign in once

A code and a URL print and your browser opens. Sign in — or create an account; sign-up is open and new accounts start with $5 of credit — and approve. The machine is linked to your account from then on; nothing is pasted, and the agent never sees a key.

Let the agent start the phone

That is the whole setup. The agent starts, drives and stops your phone with three commands, which the skill already teaches it:
cloud start connects the phone over ADB and unlocks it itself; every helper then drives it with nothing exported. It is the same phone each time: apps and logins are kept between sessions. phone-harness cloud shows what is running and how long is left, cloud watch reopens the read-only live view, and cloud open opens the dashboard when you want to take the controls yourself — to type a password, say.

Give the agent this prompt

One phone per agent, programmatically

For an agent service, split the work in two. An orchestrator holds an API key and never touches phones:
Each agent sandbox gets only host, port and code, and runs the connection at startup — no account of its own:
It cannot reach any other phone, spend credit, or end sessions. When the agent finishes — or misbehaves — the orchestrator resets the code or ends the session; the phone’s own timeout_seconds is the backstop. Reconnecting is safe to repeat: after a dropped connection, run adb connect and unlock again with the current code.

Notes

  • Serial, not identity. live.phone-harness.com:22220 belongs to a phone only while its session lives; the session id is the stable name.
  • Reconnects need unlock again. Every adb connect is a new connection; cloud start handles this for its own phone.
  • Plaintext. ADB over TCP is not encrypted; do not send secrets through adb shell you would not send in the clear.
  • Appium / uiautomator2 / scrcpy use the same host:port as their serial or udid after the unlock.