Install
openclaw skills install airtapUse this skill when the user wants to operate Airtap or complete a request through a mobile app on an Airtap device. It lists receivers and models, creates Airtap tasks, monitors them locally by default, sends follow-up messages, cancels tasks, updates user location, and can mirror progress updates into OpenClaw when needed.
openclaw skills install airtapUse the bundled scripts/airtap.py CLI to interact with Airtap tasks.
--receiver-id cloud. Do not target a physical receiver unless the user explicitly asks
for that device.task poll is local-only by default. Use OpenClaw delivery only when the host explicitly wants
mirrored updates.scripts/.env file.Run commands from the skill directory.
First, sign in to https://airtap.ai/app, open Settings, create a personal access token, and copy
it.
Create or update scripts/.env with:
python3 scripts/airtap.py --add-token "your-personal-access-token"
Or copy the template and fill in the personal access token:
cp scripts/env.example.txt scripts/.env
The script loads scripts/.env on startup and values from that file override same-named shell
environment variables.
Requires requests and python-dotenv. If missing:
pip3 install -r requirements.txt
Run all commands as python3 scripts/airtap.py <resource> <action> ....
| Command | Use when | Notes |
|---|---|---|
receiver get-list | You need to choose a receiver. | Helpful before task creation. |
model get-list | Model choice matters for the task. | Main Airtap choices are airtap-1.0 and airtap-1.0-flash. |
task create | You want to start a new task. | Add --model-id <id> only to override the default model. |
task get-list | You need recent tasks. | Useful when you need to recover a taskId. |
task get-details | You need a one-time task snapshot. | Useful for debugging or inspecting the final state. |
task poll | You need to monitor a running task. | Polls locally by default and can optionally forward updates into OpenClaw. |
task add-user-message | The task needs more input. | Use for clarification, continuation, or resuming work. |
task cancel | The task should stop. | Use when the user no longer wants the task to continue. |
user update-location | The task depends on user location. | Send the location as raw JSON. |
model get-list for every task.modelId during task creation, Airtap defaults to airtap-1.0-flash.Airtap 1.0 Flash (airtap-1.0-flash) is the default. Use it for shorter tasks that benefit
from lower latency.Airtap 1.0 (airtap-1.0) is slower. Use it for more complex tasks where better reliability
is worth the extra latency.model get-list returns the models available to the current account. Most users see
airtap-1.0 and airtap-1.0-flash. Debug users may also see airtap-1.0-lite.Airtap tasks can take a few seconds to several minutes. Treat them as long-running jobs.
taskId.python3 scripts/airtap.py task poll --task-id "<task-id>".references/openclaw.md and call
task poll with --openclaw-target and any routing fields required for the destination
conversation.task poll keep polling until taskState reaches one of the states in the task-state
glossary below.task poll.task poll is the main monitoring command:
task get-details internally every 10 seconds by default._poll summary.task poll --task-id ... only polls Airtap locally.--openclaw-target.--openclaw-verbose only when the host explicitly wants every Airtap agent update
forwarded.references/openclaw.md.How to read the task details returned by task poll or task get-details:
messages is ordered conversation history. The first message is typically the original user
request. Later entries are usually agent updates.type: "agent" message.text is the main progress update.group and subGroup are UI grouping fields that help categorize the update.queuedUserMessages may contain user follow-ups that have been accepted but not processed yet.COMPLETED: the task finished successfully.FAILED: the task could not be completed.CANCELLED: the task was cancelled.WAITING_FOR_USER_INTERVENTION: the user must perform some action on the device.WAITING_FOR_USER_INPUT: the agent needs clarification before continuing the task.WAITING_FOR_USER_CONTINUE: the task reached the maximum step limit and needs approval to keep
going.task poll with
--openclaw-target and the required routing flags. Otherwise use local-only task poll.--openclaw-verbose only when the host
explicitly wants every Airtap step forwarded.WAITING_FOR_USER_INPUT, ask the user the needed clarification, then forward the answer with
task add-user-message.WAITING_FOR_USER_INTERVENTION, tell the user exactly what action they need to perform on the
device, wait for confirmation, then resume with task add-user-message.WAITING_FOR_USER_CONTINUE, summarize the progress so far, ask whether to continue, and if
the user approves, resume with task add-user-message.COMPLETED, summarize the result using the latest agent updates.FAILED or CANCELLED, report the final state and any useful context from the latest agent
message.404 or another request failure, tell the user to get an updated
version of the Airtap skill before retrying.Create a task with the default model:
python3 scripts/airtap.py task create --message "Open Instagram" --receiver-id cloud
List available models when the task is complex:
python3 scripts/airtap.py model get-list
Create a task with the more reliable Airtap model:
python3 scripts/airtap.py task create \
--message "Compare the price of a product on Amazon and Zepto" \
--receiver-id cloud \
--model-id airtap-1.0
Monitor a running task locally only:
python3 scripts/airtap.py task poll --task-id "task_abc123"
Answer a clarification request or continue a paused task:
python3 scripts/airtap.py task add-user-message --task-id "task_abc123" --message "Continue"
Cancel a task:
python3 scripts/airtap.py task cancel --task-id "task_abc123"
task create and task add-user-message via --image-file.references/openclaw.md.