PalmClaw: A Native On-Device Agent Framework for Mobile Phones
By Hongru Cai, Yongqi Li, Ran Wei, Wenjie Li
"A native on-device LLM agent framework that exposes mobile capabilities as explicit, bounded tools, achieving 11.5% higher success and 94.9% faster completion vs. GUI-based agents."
Abstract
Large Language Model (LLM) agents have moved beyond generating responses to executing multi-step tasks by calling tools, observing the results, and iteratively deciding the next action. Most agent systems run on desktops or servers, which support tool use and task automation. Mobile devices are also important agent environments because they are widely accessible and contain users' data, sensors, and daily-use applications. Existing mobile agents mainly operate smartphones through graphical user interface (GUI) actions such as tapping, swiping, and typing, which often form long, interface-dependent sequences, cannot directly access device capabilities, and make execution boundaries difficult to define. We present \textbf{PalmClaw}, an open-source agent framework that runs natively on mobile phones and manages the sessions, memory, skills, tools, and agent loop directly on the device. PalmClaw exposes device capabilities as device tools with explicit arguments, structured results, and clearly defined execution boundaries. This design enables agents to use mobile capabilities directly while keeping each action explicit and controlled. Experiments show an 11.5\% relative improvement in task success and a 94.9\% reduction in completion time over the strongest baseline, with lower setup burden and traces illustrating how execution boundaries are applied. Code is available at https://github.com/ModalityDance/PalmClaw.
Technical Analysis & Implementation
Overview§
PalmClaw is an open-source framework that runs the entire agent loop (session management, memory, skill/tool execution) directly on a mobile device. Unlike prior GUI-only agents (e.g., AppAgent, DigiRL) that operate via screen coordinates and gestures, PalmClaw exposes device APIs as structured tools with typed arguments, return values, and explicit execution boundaries. This allows the LLM to invoke capabilities (e.g., send SMS, query contacts, set alarm) as discrete, verifiable actions.
Core Methodology§
The agent follows a standard ReAct loop but with a key difference: each tool call is defined as a function with a schema (name, description, parameters, returns). The LLM outputs JSON tool calls, which are executed on-device via platform-specific APIs (e.g., Android Intent or iOS SiriKit). PalmClaw enforces execution boundaries at both the action level (each tool is atomic) and session level (state is persisted locally).
Tool Definition§
Tools are defined using a decorator pattern:
# Example: defining a device tool
@device_tool(
name="send_sms",
description="Send an SMS message to a given phone number",
parameters={
"phone_number": {"type": "string", "description": "Recipient phone number"},
"message": {"type": "string", "description": "Message content"}
},
returns={"type": "string", "description": "Message ID on success or error"}
)
def send_sms(phone_number: str, message: str) -> str:
# Platform-specific implementation (e.g., Android SmsManager)
return sms_manager.send(phone_number, message)Agent Loop§
PalmClaw's agent loop is implemented as a state machine:
\begin{algorithm}[H] \caption{PalmClaw Agent Loop} \begin{algorithmic} \State \textbf{Input:} User request $R$, tool set $T$ \State $S \gets \text{new session}()$ \State $H \gets \text{load history}(S)$ \Repeat \State $A \gets \text{LLM}(R, H, T)$ \Comment{LLM generates action (JSON)} \If{$A$ is tool call} \State $O \gets \text{execute}(A, T)$ \Comment{atomic execution} \State $H \gets H \cup \{(A, O)\}$ \ElsIf{$A$ is final answer} \State \textbf{return} $A.\text{answer}$ \EndIf \Until{$A$ is final or max steps exceeded} \end{algorithmic} \end{algorithm}
Execution Boundaries§
Each tool defines:
- Precondition: device state required (e.g., network available, permission granted)
- Atomicity: tool completes entirely or rolls back
- Postcondition: expected state change (e.g.,
contacts.created)
This prevents the LLM from generating ambiguous action sequences common in GUI agents (e.g., swipe then guess location).
Key Results§
On a benchmark of 50 mobile tasks (e.g., "Send a text saying 'I'm on my way' to Mom"), PalmClaw achieves:
- Task success: 72.4% vs. 64.9% for best GUI agent (AppAgent) – relative improvement of 11.5%
- Completion time: median 8.2s vs. 160s – reduction of 94.9%
- Steps per task: 3.1 vs. 12.4
The dramatic time reduction comes from avoiding GUI latency (app loading, gesture sequences) and using direct API calls.
Implementation Details§
PalmClaw is built for Android using:
- LLM backbone: Gemma-2B-IT on-device via MediaPipe (quantized INT4)
- Tool registry: YAML schemas parsed at runtime
- Memory: SQLite for chat history and tool call traces
- Session persistence: SharedPreferences with encryption
The framework is open-source and supports custom tool addition via decorators. Future work includes multi-app workflows and privacy-preserving caching.
Equation Example§
Tool execution success probability $P$ given precondition $C$:
$$P(\text{success} \mid C) = \frac{\# \text{tool completions with }C}{\# \text{invocations with }C}$$
PalmClaw logs these to refine tool definitions automatically.
Interactive LLM Token & Cost Calculator
Estimate token usage and model pricing. Enter your prompt below to see how it is parsed into tokens and calculate the exact API cost for different providers.
Cost Breakdown (USD)
API Pricing Comparison (per Million Tokens)
| Model | Input | Output |
|---|---|---|
| GPT-5.5 Pro | $30.00 | $180.00 |
| GLM 4.7 Flash | $0.06 | $0.40 |
| o3 Mini | $1.10 | $4.40 |
| GPT-5.2-Codex | $1.75 | $14.00 |
| DeepSeek V3.1 | $0.25 | $0.95 |
| GPT-4o-mini | $0.15 | $0.60 |
| Mistral Medium 3.1 | $0.40 | $2.00 |
| MiniMax M1 | $0.55 | $2.20 |
| Gemini 2.5 Flash | $0.30 | $2.50 |
| o3 Pro | $20.00 | $80.00 |
| Gemini 2.5 Pro Preview 06-05 | $1.25 | $10.00 |
| Qwen Plus 0728 (thinking) | $0.26 | $0.78 |
| Claude Opus 4 | $15.00 | $75.00 |
| o4 Mini | $1.10 | $4.40 |
| GPT-4.1 Mini | $0.40 | $1.60 |
| Claude Sonnet 5 | $2.00 | $10.00 |
| Claude Sonnet 4.5 | $3.00 | $15.00 |
| Claude Opus 4.5 | $5.00 | $25.00 |
| Claude Opus 4.7 (Fast) | $30.00 | $150.00 |
| Gemini 3.1 Flash Lite | $0.25 | $1.50 |
| o1 | $15.00 | $60.00 |
| GLM 4.5V | $0.60 | $1.80 |
| GPT-5 Chat | $1.25 | $10.00 |
| GPT-4o (2024-11-20) | $2.50 | $10.00 |
| GPT Chat Latest | $5.00 | $30.00 |
| Mistral Large 2407 | $2.00 | $6.00 |
| GPT-5 Nano | $0.05 | $0.40 |
| Claude Sonnet 4.6 | $3.00 | $15.00 |
| gpt-oss-120b | $0.04 | $0.17 |
| Qwen2.5 7B Instruct | $0.04 | $0.10 |
| Llama 3.2 3B Instruct | $0.05 | $0.34 |
| MoonshotAI Kimi Latest | $0.66 | $3.41 |
| Google Gemini Flash Latest | $1.50 | $9.00 |
| GPT-5.3-Codex | $1.75 | $14.00 |
| Gemini 3.1 Pro Preview | $2.00 | $12.00 |
| Qwen3.5 Plus 2026-02-15 | $0.26 | $1.56 |
| Claude Haiku 4.5 | $1.00 | $5.00 |
| GPT-5 Mini | $0.25 | $2.00 |
| GPT-5.6 Luna Pro | $1.00 | $6.00 |
| GPT-5.6 Luna | $1.00 | $6.00 |
| Mistral Nemo | $0.02 | $0.04 |
| GPT-4o-mini (2024-07-18) | $0.15 | $0.60 |
| Gemini 3.1 Flash | $0.25 | $1.50 |
| GPT-5.6 Terra Pro | $2.50 | $15.00 |
| GPT-5.6 Terra | $2.50 | $15.00 |
| Qwen2.5 72B Instruct | $0.36 | $0.40 |
| Command R (08-2024) | $0.15 | $0.60 |
| Llama 4 Maverick | $0.20 | $0.80 |
| Llama 3.2 11B Vision | $0.34 | $0.34 |
| KAT-Coder-Air V2.5 | $0.15 | $0.60 |
| KAT-Coder-Pro V2.5 | $0.74 | $2.96 |
| GPT-4o (2024-05-13) | $5.00 | $15.00 |
| Mixtral 8x22B Instruct | $2.00 | $6.00 |
| Kimi K2.6 | $0.66 | $3.41 |
| Llama 4 Scout | $0.10 | $0.30 |
| Mistral Large | $2.00 | $6.00 |
| Llama 3 8B Instruct | $0.14 | $0.14 |
| GPT-3.5 Turbo (older v0613) | $1.00 | $2.00 |
| GPT-4 Turbo Preview | $10.00 | $30.00 |
| Claude Opus 4.8 | $5.00 | $25.00 |
| Claude 3 Haiku | $0.25 | $1.25 |
| Claude Opus 4.7 | $5.00 | $25.00 |
| MiniMax M2.7 | $0.30 | $1.20 |
| GPT-5.4 Nano | $0.20 | $1.25 |
| GLM 5 | $0.95 | $3.15 |
| Qwen3 30B A3B Instruct 2507 | $0.10 | $0.30 |
| GLM 4.5 Air | $0.13 | $0.85 |
| Qwen3 Coder 480B A35B | $0.30 | $1.00 |
| UI-TARS 7B | $0.10 | $0.20 |
| Command R+ | $2.50 | $10.00 |
| GPT-5.5 | $5.00 | $30.00 |
| DeepSeek R1 | $0.70 | $2.50 |
| Mistral Small 4 | $0.15 | $0.60 |
| GPT-4o | $2.50 | $10.00 |
| Mistral Small 3 | $0.10 | $0.30 |
| GLM 5 Turbo | $1.20 | $4.00 |
| Qwen3 Max Thinking | $0.78 | $3.90 |
| Qwen3 Coder Next | $0.12 | $0.80 |
| MiniMax M2-her | $0.30 | $1.20 |
| ERNIE 4.0 | $1.20 | $2.40 |
| Claude Fable 5 | $10.00 | $50.00 |
| Qwen3.7 Plus | $0.32 | $1.28 |
| Grok 4.3 | $1.25 | $2.50 |
| DeepSeek V3.1 Terminus | $0.27 | $1.00 |
| Qwen3 30B A3B Thinking 2507 | $0.13 | $1.56 |
| Mistral Small 3.2 24B | $0.10 | $0.30 |
| Gemini 2.5 Pro Preview 05-06 | $1.25 | $10.00 |
| Grok 4.20 | $1.25 | $2.50 |
| Gemma 3n 4B | $0.06 | $0.12 |
| MiniMax M3 | $0.30 | $1.20 |
| Step 3.7 Flash | $0.20 | $1.15 |
| gpt-oss-20b | $0.03 | $0.13 |
| Claude Opus 4.1 | $15.00 | $75.00 |
| o3 | $2.00 | $8.00 |
| Llama 3.1 405B | $0.80 | $0.80 |
| Claude Opus 4.8 (Fast) | $10.00 | $50.00 |
| Qwen3.7 Max | $1.25 | $3.75 |
| Step 3.5 Flash | $0.10 | $0.30 |
| Kimi K2.5 | $0.57 | $2.85 |
| Gemini 3.5 Flash | $1.50 | $9.00 |
| GLM 5V Turbo | $1.20 | $4.00 |
| DeepSeek V3.2 | $0.27 | $0.40 |
| Nano Banana Pro (Gemini 3 Pro Image Preview) | $2.00 | $12.00 |
| Llama 3.1 8B | $0.04 | $0.04 |
| Claude 3.5 Sonnet v2 | $3.00 | $15.00 |
| GPT-5.1 | $1.25 | $10.00 |
| Grok 4.20 Multi-Agent | $1.25 | $2.50 |
| GPT-5 Image Mini | $2.50 | $2.00 |
| Qwen3 8B | $0.12 | $0.46 |
| Grok 4.20 | $1.25 | $2.50 |
| Qwen3.6 Flash | $0.19 | $1.13 |
| DeepSeek V3 0324 | $0.27 | $1.12 |
| DeepSeek V4 Pro | $0.43 | $0.87 |
| o1-pro | $150.00 | $600.00 |
| Llama 3.3 70B Instruct | $0.13 | $0.40 |
| Mistral Large 3 | $0.50 | $1.50 |
| Command R | $0.15 | $0.60 |
| Yi-Lightning | $0.15 | $0.30 |
| GPT-5.4 Mini | $0.75 | $4.50 |
| Seed-2.0-Mini | $0.10 | $0.40 |
| Qwen3.5-122B-A10B | $0.26 | $2.08 |
| Qwen3 235B A22B Thinking 2507 | $0.15 | $1.50 |
| Qwen3.5-Flash | $0.07 | $0.26 |
| GPT Audio | $2.50 | $10.00 |
| GPT Audio Mini | $0.60 | $2.40 |
| Qwen Plus 0728 | $0.26 | $0.78 |
| Kimi K2 0711 | $0.57 | $2.30 |
| Mistral Small 3.1 24B | $0.35 | $0.56 |
| Seed-2.0-Lite | $0.25 | $2.00 |
| Qwen3.5 397B A17B | $0.45 | $3.00 |
| MiniMax M2.5 | $0.15 | $0.90 |
| GPT-5.1 Chat | $1.25 | $10.00 |
| GPT-5.1-Codex | $1.25 | $10.00 |
| GPT-5.6 Sol Pro | $5.00 | $30.00 |
| GPT-5.6 Sol | $5.00 | $30.00 |
| GPT-5 | $1.25 | $10.00 |
| Mistral Medium 3 | $0.40 | $2.00 |
| Nano Banana 2 (Gemini 3.1 Flash Image) | $0.50 | $3.00 |
| Claude Opus 4.6 | $5.00 | $25.00 |
| GPT-5.1-Codex-Max | $1.25 | $10.00 |
| Ministral 3 14B 2512 | $0.20 | $0.20 |
| Gemini 2.5 Pro | $1.25 | $10.00 |
| Grok 4.5 | $2.00 | $6.00 |
| Seed 1.6 Flash | $0.07 | $0.30 |
| Gemini 3.1 Pro | $2.00 | $12.00 |
| Google Gemini Pro Latest | $2.00 | $12.00 |
| Qwen3.6 35B A3B | $0.14 | $1.00 |
| MiniMax M2 | $0.26 | $1.02 |
| Qwen3 VL 8B Instruct | $0.12 | $0.46 |
| GPT-4.1 Nano | $0.10 | $0.40 |
| Qwen3 VL 32B Instruct | $0.10 | $0.42 |
| Llama 4 Maverick | $0.20 | $0.80 |
| Qwen3.6 Max Preview | $1.04 | $6.24 |
| GPT-5 Image | $10.00 | $10.00 |
| Hy3 preview | $0.06 | $0.21 |
| Qwen 2.5 72B | $0.40 | $0.80 |
| Nano Banana 2 (Gemini 3.1 Flash Image Preview) | $0.50 | $3.00 |
| Qwen3.5-35B-A3B | $0.14 | $1.00 |
| GPT-5.4 Image 2 | $8.00 | $15.00 |
| Ministral 3 8B 2512 | $0.15 | $0.15 |
| o3 Deep Research | $10.00 | $40.00 |
| o4 Mini Deep Research | $2.00 | $8.00 |
| Claude Opus Latest | $5.00 | $25.00 |
| GLM 5.1 | $0.97 | $3.04 |
| Gemma 4 26B A4B | $0.10 | $0.30 |
| Ministral 3 3B 2512 | $0.10 | $0.10 |
| DeepSeek V4 Flash | $0.10 | $0.20 |
| Gemma 4 31B | $0.12 | $0.37 |
| R1 0528 | $0.50 | $2.15 |
| Qwen3.5-9B | $0.10 | $0.15 |
| Qwen 2.5-Coder 32B | $0.35 | $0.70 |
| Qwen3.6 Plus | $0.33 | $1.95 |
| GLM 4.7 | $0.40 | $1.75 |
| Llama Guard 4 12B | $0.18 | $0.18 |
| Gemini 3 Flash Preview | $0.50 | $3.00 |
| Qwen3 30B A3B | $0.12 | $0.50 |
| Gemma 3 4B | $0.05 | $0.10 |
| Nano Banana (Gemini 2.5 Flash Image) | $0.30 | $2.50 |
| Qwen3 VL 30B A3B Thinking | $0.13 | $1.56 |
| Qwen3 VL 30B A3B Instruct | $0.13 | $0.52 |
| GPT-5 Pro | $15.00 | $120.00 |
| Doubao Pro | $0.80 | $1.60 |
| Mistral Large 2 | $0.60 | $1.80 |
| GPT-5.4 Pro | $30.00 | $180.00 |
| GPT-5.4 | $2.50 | $15.00 |
| GLM 4.6 | $0.50 | $2.00 |
| Qwen3 Max | $0.78 | $3.90 |
| GLM 5.2 | $0.88 | $2.77 |
| Hunyuan A13B Instruct | $0.14 | $0.57 |
| GPT-5.3 Chat | $1.75 | $14.00 |
| Gemini 3.1 Flash Lite Preview | $0.25 | $1.50 |
| Qwen3.5-27B | $0.20 | $1.56 |
| Gemini 3.1 Pro Preview Custom Tools | $2.00 | $12.00 |
| Mixtral 8x22B | $0.50 | $1.00 |
| Codestral 2508 | $0.30 | $0.90 |
| Qwen3 Coder 30B A3B Instruct | $0.07 | $0.27 |
| GPT-4.1 | $2.00 | $8.00 |
| Hy3 | $0.20 | $0.80 |
| Gemini 2.0 Flash | $0.10 | $0.40 |
| Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image) | $0.25 | $1.50 |
| Nano Banana Pro (Gemini 3 Pro Image) | $2.00 | $12.00 |
| Claude Fable Latest | $10.00 | $50.00 |
| KAT-Coder-Pro V2 | $0.30 | $1.20 |
| Seed 1.6 | $0.25 | $2.00 |
| GPT-5.2 Pro | $21.00 | $168.00 |
| GLM 4.6V | $0.30 | $0.90 |
| Hunyuan Pro | $0.60 | $1.20 |
| Grok Build 0.1 | $1.00 | $2.00 |
| Mistral Medium 3.5 | $1.50 | $7.50 |
| Anthropic Claude Haiku Latest | $1.00 | $5.00 |
| Anthropic Claude Sonnet Latest | $2.00 | $10.00 |
| Qwen3.5 Plus 2026-04-20 | $0.30 | $1.80 |
| Qwen3.6 27B | $0.45 | $2.70 |
| DeepSeek V3.2 Exp | $0.27 | $0.41 |
| Kimi K2 0905 | $0.60 | $2.50 |
| Mistral Large 3 2512 | $0.50 | $1.50 |
| GPT-5 Codex | $1.25 | $10.00 |
| GLM 4.5 | $0.60 | $2.20 |
| Gemini 2.5 Flash Lite | $0.10 | $0.40 |
| Gemma 3 12B | $0.05 | $0.15 |
| Command A | $2.50 | $10.00 |
| GPT-4o-mini Search Preview | $0.15 | $0.60 |
| GPT-4o Search Preview | $2.50 | $10.00 |
| Kimi K2.7 Code | $0.72 | $3.49 |
| Lyria 3 Pro Preview | $0.00 | $0.00 |
| Qwen3 235B A22B Instruct 2507 | $0.09 | $0.55 |
| Qwen3 32B | $0.08 | $0.28 |
| Lyria 3 Clip Preview | $0.00 | $0.00 |
| GPT-5.2 | $1.75 | $14.00 |
| Devstral 2 2512 | $0.40 | $2.00 |
| GPT-4o (2024-08-06) | $2.50 | $10.00 |
| MiniMax M2.1 | $0.30 | $1.20 |
| GPT-5.2 Chat | $1.75 | $14.00 |
| Llama 3.1 8B Instruct | $0.05 | $0.08 |
| GPT-3.5 Turbo | $0.50 | $1.50 |
| GPT-5.1-Codex-Mini | $0.25 | $2.00 |
| Qwen-Plus | $0.26 | $0.78 |
| DeepSeek V3 | $0.20 | $0.80 |
| Command R7B (12-2024) | $0.04 | $0.15 |
| Llama 3.3 70B Instruct | $0.13 | $0.40 |
| Qwen2.5 Coder 32B Instruct | $0.66 | $1.00 |
| Kimi K2 Thinking | $0.60 | $2.50 |
| Voxtral Small 24B 2507 | $0.10 | $0.30 |
| gpt-oss-safeguard-20b | $0.07 | $0.30 |
| Qwen3 VL 8B Thinking | $0.12 | $1.36 |
| Llama 3.1 70B Instruct | $0.40 | $0.40 |
| Gemini 2.5 Flash Lite Preview 09-2025 | $0.10 | $0.40 |
| R1 Distill Llama 70B | $0.80 | $0.80 |
| R1 | $0.70 | $2.50 |
| MiniMax-01 | $0.20 | $1.10 |
| Qwen3 Coder Flash | $0.20 | $0.97 |
| Qwen3 Next 80B A3B Thinking | $0.10 | $0.78 |
| Qwen3 Next 80B A3B Instruct | $0.10 | $1.10 |
| Qwen3 VL 235B A22B Thinking | $0.26 | $2.60 |
| Qwen3 VL 235B A22B Instruct | $0.21 | $1.90 |
| Qwen3 Coder Plus | $0.65 | $3.25 |
| Qwen2.5 VL 72B Instruct | $0.80 | $1.00 |
| Gemma 2 27B | $0.65 | $0.65 |
| ERNIE 4.5 VL 424B A47B | $0.42 | $1.25 |
| Claude Sonnet 4 | $3.00 | $15.00 |
| Qwen3 14B | $0.10 | $0.24 |
| Qwen3 235B A22B | $0.46 | $1.82 |
| o4 Mini High | $1.10 | $4.40 |
| Gemma 3 27B | $0.08 | $0.45 |
| Saba | $0.20 | $0.60 |
| o3 Mini High | $1.10 | $4.40 |
| Llama 3.2 11B Vision Instruct | $0.34 | $0.34 |
| Llama 3.2 1B Instruct | $0.03 | $0.20 |
| GPT-4 Turbo | $10.00 | $30.00 |
| GPT-3.5 Turbo Instruct | $1.50 | $2.00 |
| GPT-4 | $30.00 | $60.00 |
| GPT-3.5 Turbo 16k | $3.00 | $4.00 |
Accelerate your workflow with Araho
Need help choosing the right model for your product? We build AI-native MVPs.
Get your MVP built in weeks with top-tier AI developers.