Install
openclaw skills install computer-takeoverFull unattended remote control of paired devices (nodes) — screen capture, file management, shell commands, app control, camera, notifications, and process management. Use when: (1) remotely accessing or controlling a paired Windows/macOS/Android/iOS device without user interaction, (2) running commands installing apps or managing files on a remote node, (3) capturing screen or camera feeds from a remote device, (4) monitoring device health battery storage or network status, (5) automating actions on a remote device click type open app etc, (6) any form of remote desktop-style takeover or device ghosting.
openclaw skills install computer-takeoverUnattended remote control of paired OpenClaw nodes. Controls the remote device as if physically sitting in front of it — no user presence required on the remote end.
Always start by listing available nodes to find the target device:
nodes(action="status")
Then describe the node to confirm it's the right one:
nodes(action="describe", node="<node-id>")
nodes(action="status") // List all paired nodes
nodes(action="device_info", node="<id>")
nodes(action="device_health", node="<id>")
nodes(action="device_permissions", node="<id>")
nodes(action="device_status", node="<id>") // battery, storage, network
nodes(action="screen_record", node="<id>", outPath="C:/temp/screen.mp4", durationMs=30000)
nodes(action="photos_latest", node="<id>", limit=5) // screenshots stored as photos
For live screen viewing, use the canvas tool with target="node" and the node's gateway URL.
nodes(action="camera_snap", node="<id>", facing="front|back")
nodes(action="camera_clip", node="<id>", facing="front|back", durationMs=10000)
Use nodes(action="invoke", node="<id>", invokeCommand="<command>", invokeParamsJson="{}").
Windows (PowerShell):
{
"invokeCommand": "powershell",
"invokeParamsJson": "{\"command\": \"Get-Process | Select -First 10 Name, CPU, WorkingSet\"}"
}
Android (adb):
{
"invokeCommand": "adb",
"invokeParamsJson": "{\"command\": \"shell dumpsys battery\"}"
}
Linux/macOS (SSH-style):
{
"invokeCommand": "bash",
"invokeParamsJson": "{\"command\": \"ls -la /tmp | head -20\"}"
}
# Windows: list directory
nodes(action="invoke", node="<id>", invokeCommand="powershell", invokeParamsJson="{\"command\": \"Get-ChildItem C:/Users/ -Depth 1 | Format-Table Name, Length, LastWriteTime\"}")
# Windows: read file
nodes(action="invoke", node="<id>", invokeCommand="powershell", invokeParamsJson="{\"command\": \"Get-Content C:/temp/log.txt -Tail 50\"}")
# Windows: write file
nodes(action="invoke", node="<id>", invokeCommand="powershell", invokeParamsJson="{\"command\": \"Set-Content -Path C:/temp/output.txt -Value 'Hello from remote'\"}")
nodes(action="invoke", node="<id>", invokeCommand="powershell", invokeParamsJson="{\"command\": \"Start-Process notepad\"}") // launch
nodes(action="invoke", node="<id>", invokeCommand="powershell", invokeParamsJson="{\"command\": \"Get-Process | Where Name -eq 'notepad' | Stop-Process\"}") // close
nodes(action="invoke", node="<id>", invokeCommand="powershell", invokeParamsJson="{\"command\": \"winget install Microsoft.PowerToys --silent\"}") // install
nodes(action="invoke", node="<id>", invokeCommand="powershell", invokeParamsJson="{\"command\": \"Get-Process | Sort CPU -Descending | Select -First 20 Name, Id, CPU, @{N='MEM_MB';E={[math]::Round($_.WorkingSet/1MB,1)}} | Format-Table -AutoSize\"}")
nodes(action="notifications_list", node="<id>", limit=20)
nodes(action="notifications_action", node="<id>", notificationKey="<key>", notificationAction="open|reply|dismiss")
nodes(action="location_get", node="<id>", desiredAccuracy="precise")
To pair a new device, use the node-connect skill and follow the pairing flow. Pairing requires the device to have the OpenClaw companion app installed and connected to the same gateway.
nodes(action="status") — find the node IDnodes(action="device_info", node="<id>") — confirm device name/typenodes(action="screen_record", node="<id>", ...) or canvas tool — see what they're doingnodes(action="invoke", ...)invokeTimeoutMs is 30000ms. Increase for long-running commands.canvas tool with remote screen, the node must have gateway.remote.url configured and accessible.nodes tool docs: see OpenClaw tool reference for all actions and parametersnode-connect skill for setup troubleshootinggateway.remote.url in OpenClaw config controls accessibility