OpenClaw CloudPhone is a plugin that gives AI agents cloud phone automation capabilities through natural language.
With a single instruction, an agent can submit any cloud phone task to the backend AI Agent, which handles the full execution loop — screen observation, LLM planning, and UI actions — and streams the result back in real time.
openclaw plugins install @whateverai/cloudphoneTo update the plugin later, run:
openclaw plugins update @whateverai/cloudphoneSet apikey in plugins.entries.cloudphone.config. The plugin uses built-in defaults for other optional settings.
Add the following configuration to openclaw.json:
- apikey: Obtain your API Key by logging in or signing up at https://whateverai.ai, then add it in your account/settings.
{
"plugins": {
"entries": {
"cloudphone": {
"enabled": true,
"config": {
"apikey": "the apikey you can get from the user center of this website"
}
}
}
}
}- Open the OpenClaw console in your browser.
- Go to the Plugins section, find CloudPhone and enable it.
- Set apikey (from https://whateverai.ai after login or sign-up).
openclaw gateway restartThis plugin exposes the CloudPhone backend AI Agent as three high-level tools:
-
cloudphone_execute— Submit a natural language instruction to the backend. The backend handles LLM interpretation, cloud phone UI automation (observe → plan → act loop), and dispatches all actions automatically. Returns atask_idimmediately. -
cloudphone_execute_and_wait— Auto-chain call: executecloudphone_execute, then automatically run onecloudphone_task_resultpoll and return the first 10-second window result. -
cloudphone_task_result— Subscribe to SSE for a task; each call consumes one 10-second window and returns the thinking delta for that window until terminal status.
The agent no longer needs to directly control UI coordinates, manage screenshots, or call individual tap/swipe/input tools. The backend AI Agent handles the full automation loop.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
apikey |
string | Yes | - | Authorization credential (ApiKey) |
Obtain your API Key by logging in or signing up at https://whateverai.ai, then find it in your account/settings.
Optional fields such as baseUrl and timeout are documented in openclaw.plugin.json and use built-in defaults when omitted.
After the plugin is installed, the agent automatically gets the following tools.
| Tool | Description |
|---|---|
cloudphone_get_user_profile |
Get the current user's basic information |
cloudphone_list_devices |
List cloud phone devices with pagination, keyword search, and status filters |
cloudphone_get_device_info |
Get detailed information for a specific device |
| Tool | Description |
|---|---|
cloudphone_execute |
Submit a natural language instruction; returns task_id immediately |
cloudphone_execute_and_wait |
Auto-chain execute + first task_result poll |
cloudphone_task_result |
Return 10s-window thinking delta and current task status |
After installation and configuration, you can control cloud phones through natural language prompts.
Open WeChat on the cloud phone, search for the "OpenClaw" public account, and follow it
The agent will:
- Call
cloudphone_list_devicesto get the device ID - Call
cloudphone_execute_and_waitto submit and trigger the first poll automatically - If status is
running, continue callingcloudphone_task_resultevery ~10 seconds untilsuccess/done/error
Show me my cloud phone devices
The agent will call cloudphone_list_devices and return the device list.
Agent: cloudphone_execute_and_wait
instruction: "打开抖音,搜索美食视频并点赞第一条"
device_id: "abc123"
→ returns: { ok: false, task_result: { status: "running", thinking: [...] } }
Agent: cloudphone_task_result
task_id: 42
→ returns 10s-window delta until terminal: { ok: true, status: "done", result: {...} }
instruction : string - Natural language task instruction (required)
device_id : string - Device unique ID (recommended)
user_device_id : number - User device ID (compatibility, device_id takes priority)
session_id : string - Optional session ID for streaming persistence
lang : string - Language hint: "cn" (default) or "en"
task_id : number - Task ID from cloudphone_execute (required)
Response fields:
ok : boolean - Whether the operation succeeded
task_id : number - Echo of the input task_id
status : string - "done" | "success" | "error" | "timeout"
thinking : string[] - New thinking lines from the current 10-second polling window (delta)
result : object - Final task result from the backend
message : string - Error message (when status is "error" or "timeout")
keyword : string - Search keyword (device name or device ID)
status : string - Status filter: "online" | "offline"
page : integer - Page number, default 1
size : integer - Items per page, default 20
user_device_id : number - User device ID (required)
Q: The agent cannot find the CloudPhone tools after installation.
Make sure plugins.entries.cloudphone.enabled is set to true in openclaw.json, then restart the Gateway.
Q: Why does cloudphone_task_result return running?
This is expected when the current 10-second polling window has not reached terminal status. Keep calling cloudphone_task_result every ~10 seconds until success/done/error.
Q: A tool call fails with a request error or authorization failure.
- Check whether
apikeyis valid and that you restarted the Gateway after changing config - Check network connectivity and whether the CloudPhone service is reachable
401errors indicate an invalid or expiredapikey
Q: How do I get an apikey?
Log in or sign up at https://whateverai.ai and get your API Key from your account/settings.
Q: Does cloudphone_execute support concurrent tasks?
No, not for the same agent context. The plugin enforces serial execution per agent key (session_id, then device_id, then user_device_id, otherwise default).
If you call cloudphone_execute before the previous task reaches terminal status in cloudphone_task_result, it returns code: "AGENT_BUSY" with blocking_task_id.
Required call order:
cloudphone_execute_and_wait(auto-runs the first poll)cloudphone_task_result(if status isrunning, continue polling until terminal:success/done/error)- Next
cloudphone_execute
Current version: v2026.4.2
- Set default CloudPhone API base URL to
https://whateverai.ai/aiin runtime, manifest defaults, and tests (aligned with product domain) - Synced package/plugin/doc version references to
v2026.4.2
- Added
cloudphone_execute_and_waitto auto-chain task submission and the first result polling - Clarified tool behavior and call sequence documentation for task execution and polling
- Updated
.gitignorewithdocs/andopenspec/entries for cleaner project management - Synced package/plugin/doc version references to
v2026.4.1
- Enhanced task execution and result handling flow in plugin tools
- Improved task-related documentation and reference examples in built-in skills
- Synced package/plugin/doc version references to
v2026.3.31
- Replaced 12 fine-grained UI automation tools (tap, swipe, snapshot, etc.) with 2 high-level backend-delegated tools
- Added
cloudphone_execute: submit natural language instructions to the backend AI Agent - Added
cloudphone_task_result: stream agent thinking and final result via SSE - Removed AutoGLM direct integration (backend now handles the full observe → plan → act loop)
- Simplified plugin config: removed all
autoglm*fields, onlyapikey,baseUrl,timeoutremain - Updated skills, README, and reference docs to reflect new architecture
- Summarized and aligned release notes based on target commit
1da1031 - Synced package/plugin/doc version references to
v2026.3.27
- Enhanced screenshot handling in
cloudphone_render_imagefor improved compatibility - Added the
cloudphone-snapshot-urlskill
- Added the built-in
basic-skillskill distributed with the plugin - Added
reference.mdas a tool parameter quick reference
This plugin follows the license terms of the repository it belongs to.