PhoneClaw turns phones into local AI agent runtimes with on-device models, native mobile Skills, LiveLand, and optional Mac Gateway inference.
See the code
Turn your phone into a local AI agent runtime.
Website · TestFlight · 中文 · Report an Issue · Request a Feature
Core Features · Built-in Skills · Technical Notes · Quick Start · Mac Remote · Custom Skills · FAQ · Roadmap
PhoneClaw is a local AI agent framework for phones and edge devices. It runs Gemma 4 E2B / E4B via LiteRT and MiniCPM-V 4.6 on device, uses native mobile Skills for Calendar, Reminders, Contacts, Clipboard, Health data, image understanding, voice, and LiveLand, and lets you explicitly choose Web Search, webpage reading, or LAN-based Mac Gateway inference when a task needs it.
PhoneClaw (this project) is unrelated to the Android automation repo "rohanarun/phoneclaw" or the "phoneclaw" GitHub organization. Android app-store search results may also show a separate app with the same name.
Demo: PhoneClaw running Gemma 4 on-device via LiteRT, executing native iOS Skills.
2026-06-23
2026-06-08
Mac Remote page in iPhone settings: discover Macs on the same LAN, approve pairing on the Mac, choose a Mac-side model, then use it from the normal chat screenPhoneClawGateway.app, allow Local Network permission, then pair from Mac Remote on the iPhone; see Use the Mac client for remote inference2026-06-05
Private Local Agent: Run inference and Skill calls directly on device. Use natural language to work with Calendar, Reminders, Contacts, Clipboard, Health data, and other local tasks.
Mac Remote Inference: Optionally pair with a Mac on the same LAN through PhoneClaw Gateway and use Mac-side Ollama, Codex CLI, or Antigravity CLI models while keeping the native iPhone chat and Skill experience.
Image Understanding and LIVE Vision: Ask questions about photos from the camera or photo picker, or enable the camera in LIVE mode so the model can understand the scene in real time.
Personal Data Analysis: Read local schedules, Health data, contacts, reminders, and clipboard content to generate summaries, availability analysis, and next-step suggestions. Personal data is processed on-device by default.
Realtime Information: When explicitly requested, search public webpages, fetch readable webpage text, and summarize live information into an actionable answer.
Voice Interaction: Supports voice input and LIVE real-time conversation for hands-free questions, notes, and actions.
File-Driven Skill System: Each capability is defined by a single Markdown file (SKILL.md). Adding or modifying a skill can happen through the Skill file. Skills are language-agnostic — anyone can write and share them.
Model Management and Resumable Downloads: Gemma main models and LIVE voice models can be downloaded, canceled, resumed, and retried directly on iPhone, or bundled into the app at build time.
Fully Offline First with Clear Data Flow: Inference and local Skill calls run on-device by default. Conversations, images, and personal data stay on iPhone. Web Search, webpage reading, and paired Mac remote inference are explicit user-triggered capabilities; Mac remote inference sends the current request to your paired Mac, and any further upstream access depends on the provider selected in the Mac client.
Mobile Memory Optimization: Includes model switching, system prompt editing, cache cleanup, and history trimming tuned for phone-scale on-device inference limits.
Bilingual Experience: Choose Auto, Chinese, or English in settings. The UI, default system prompt, built-in Skills, tool results, and permission text switch together.
Calendar: Create calendar events, query schedules, and analyze busyness or free time using natural language.
"Schedule a meeting at Hightech Park tomorrow at 2pm"
"What is on my calendar today?"
"How busy am I this week?"
Reminders: Set time-based reminders that fire a system push notification exactly on schedule.
"Remind me tonight at 8 to send the file to my boss"
Contacts: Search, save, update, or delete contacts with name, phone, company, email, and notes. Automatically deduped by phone number.
"Save Wang's number 13812345678, he's from Bytedance"
"Check Sarah Lee's phone number"
Clipboard: Read and write the system clipboard. Useful as a data relay in multi-step tasks.
"Copy that text to the clipboard"
Translate: Translate between any pair of languages, with automatic source detection.
"Translate that last line into Japanese"
Health Data: Read HealthKit steps, distance, calories, heart rate, sleep, and workout records after user authorization. All data stays on-device.
"How many steps did I take today?"
"How did I sleep last night?"
"How are my steps this week?"
"What's my resting heart rate?"
Web Search: When explicitly requested, search public webpages or read a URL, then summarize realtime information into an answer.
"Search the web for today's AI news"
"Read and summarize this page: https://example.com"
Model recommendation:
| Model | Use case |
|---|---|
| Gemma 4 E2B | Lightweight: chat / translation / single-turn queries, A16 and above |
| Gemma 4 E4B | Full-featured: multi-turn tool conversations and complex agent flows, iPhone 15 Pro and above |
| MiniCPM-V 4.6 | Multimodal: image Q&A / real-time camera in LIVE mode, A17 Pro and above recommended |
Recommended install: TestFlight. After installing, download a model in Model Settings, then enable the Skills you need.
Building from source requires macOS + Xcode 16, iOS 17+, CocoaPods, a real device, and an Apple ID.
git clone https://github.com/kellyvv/phoneclaw.git
cd phoneclaw
pod install
The default recommended flow is now:
Model SettingsGemma 4 E2B or Gemma 4 E4B directly on the phoneYou only need the Models/ directory on your Mac if you want to bundle a model inside the app itself.
Gemma 4 now runs on LiteRT-LM: each model is a single .litertlm file in place of an MLX weight directory. Install the Hugging Face CLI first:
brew install hf
# or
pip install -U "huggingface_hub"
E2B only (recommended):
mkdir -p ./Models
hf download litert-community/gemma-4-E2B-it-litert-lm gemma-4-E2B-it.litertlm --local-dir ./Models
E4B only:
mkdir -p ./Models
hf download litert-community/gemma-4-E4B-it-litert-lm gemma-4-E4B-it.litertlm --local-dir ./Models
Both models:
mkdir -p ./Models
hf download litert-community/gemma-4-E2B-it-litert-lm gemma-4-E2B-it.litertlm --local-dir ./Models
hf download litert-community/gemma-4-E4B-it-litert-lm gemma-4-E4B-it.litertlm --local-dir ./Models
Expected files after download:
Models/
├── gemma-4-E2B-it.litertlm
└── gemma-4-E4B-it.litertlm
Models/is listed in.gitignoreand stays outside commits. Approximate file sizes: E2B ~2.4 GB, E4B ~3.4 GB. In mainland China, setHF_ENDPOINT=https://hf-mirror.comto use the mirror, or download the same file from the ModelScope mirror.
LIVE Mode (voice interaction) additional models
If you want to use LIVE mode with voice recognition and synthesis, download the ASR and TTS models:
# ASR — Chinese streaming speech recognition (zipformer, int8, ~160MB)
hf download csukuangfj/sherpa-onnx-streaming-zipformer-zh-int8-2025-06-30 \
--local-dir ./Models/sherpa-asr-zh \
--exclude "test_wavs/*" "*.md" ".gitattributes"
# TTS — Chinese text-to-speech (keqing, ~125MB)
hf download csukuangfj/vits-zh-hf-keqing \
--local-dir ./Models/vits-zh-hf-keqing \
--exclude "*.py" "*.sh" ".gitattributes"
After downloading, add Models/sherpa-asr-zh and Models/vits-zh-hf-keqing as folder references to Copy Bundle Resources in Xcode. LIVE mode can also use system speech as a fallback.
open PhoneClaw.xcworkspace
Always open
.xcworkspace.
On first install, if prompted to trust the developer certificate: Settings → General → VPN & Device Management → Trust
After opening the app:
Download in the model settings page firstDownload a model first, then enable Calendar, Reminders, and Contacts in the permissions page, then try:
Remind me tonight at 8 to send the file
Save Wang's phone number 13812345678
Translate that last line into English
The Mac client turns a Mac on the same LAN into an optional remote inference source for the phone runtime. PhoneClaw still uses its chat UI and Skill system, while model inference requests are sent to your paired Mac.
Option A: download the release (recommended)
PhoneClawGateway.appPhoneClawGateway.app, then choose OpenGateway listens on port 18080 by default and advertises the _phoneclaw-llm._tcp Bonjour service.
Option B: build from source
cd MacGateway
bash build-app.sh
open PhoneClawGateway.app
The source-built app also needs macOS Local Network permission.
Configure the Mac runtime source
PhoneClawGateway.appollama pull gemma3:4b
Pair from the iPhone
Mac RemoteRemote models appear under the Remote section in the model picker. For Mac discovery, check that the Mac client is running, Local Network permission is allowed, both devices are on the same Wi-Fi, and the macOS firewall allows PhoneClawGateway.app to accept LAN connections.
This is now the default recommended setup.
Advantages:
By default, the project builds a lightweight app while model files download on device or get copied explicitly during custom builds.
Models/gemma-4-E2B-it.litertlm, remove Models/gemma-4-E4B-it.litertlmgemma-4-E2B-it.litertlm is included as a single file resourceallModels in LLM/Models/PredefinedModels.swift to only include the models actually shipped (otherwise the settings page will show options that don't exist)Download both models:
brew install hf
mkdir -p ./Models
hf download litert-community/gemma-4-E2B-it-litert-lm gemma-4-E2B-it.litertlm --local-dir ./Models
hf download litert-community/gemma-4-E4B-it-litert-lm gemma-4-E4B-it.litertlm --local-dir ./Models
Then add both .litertlm files into Xcode's Copy Bundle Resources.
Create a SKILL.md file in the app's data directory and hot-reload in-app:
Application Support/PhoneClaw/skills/<skill-id>/SKILL.md
---
name: MySkill
name-zh: My Skill
description: What this skill does
version: "1.0.0"
icon: star
disabled: false
type: device # device = native API; content = prompt-only; network = public internet access
triggers:
- schedule planning
allowed-tools:
- my-tool-name
examples:
- query: "How a user might phrase it"
scenario: "What scenario triggers this"
---
# Skill Instructions
Tell the model when to call tools, how to structure arguments, and when to answer directly.
The type field controls routing: device calls native iOS APIs, content is prompt-only text processing, and network is for explicit live web search or webpage reading. If this skill needs to call native APIs or network tools, register the tool in Tools/ToolRegistry.swift (and add a handler under Tools/Handlers/). The framework validates allowed-tools against the registry at startup, so any typo will surface immediately in the console.
How do I trigger permission dialogs after install? Permission dialogs appear when a Skill reaches the related system API call. After a previous denial, re-enable the permission in system Settings.
Why does the model fail to load after switching?
Verify that the model file name matches allModels in LLM/Models/PredefinedModels.swift, that the model has finished downloading on-device if you are using the shell-only install flow, or that it was actually included in the app bundle if you are shipping it built-in, and that the device has enough memory.
Why does creating a reminder fail? The latest code first attempts to reuse an existing writable reminder list. If none is found, it tries to automatically create a PhoneClaw list. If that also fails, the system reminder source itself is likely read-only.
How do I make the iPhone discover the Mac client?
Make sure PhoneClawGateway.app is running and macOS has allowed Local Network permission. The iPhone and Mac must be on the same LAN. If discovery still fails, check that the macOS firewall allows the app to accept incoming connections, or rebuild the app with bash MacGateway/build-app.sh and open the generated app again.
Continue breaking capabilities into focused Skills with clear model, tool, and permission responsibilities. Directions worth adding:
Beyond the main chat model, suitable additions include:
This moves PhoneClaw from "one big model doing everything" toward "multiple local models working together."
PhoneClaw uses the cross-app capabilities that iOS actually provides:
A realistic goal: pass content between apps, open a specific app to a specific screen, and compress multi-step operations into a single natural language command.
Explore connecting external video input and screen understanding with local models, so PhoneClaw goes beyond answering questions in isolation and develops stronger real-world perception and scheduling capabilities.
Apache 2.0
38 followers · starred Jun 2026
269 followers · starred May 2026
26 followers · starred May 2026
PhoneClaw turns phones into local AI agent runtimes with on-device models, native mobile Skills, LiveLand, and optional Mac Gateway inference.
See the code
Turn your phone into a local AI agent runtime.
Website · TestFlight · 中文 · Report an Issue · Request a Feature
Core Features · Built-in Skills · Technical Notes · Quick Start · Mac Remote · Custom Skills · FAQ · Roadmap
PhoneClaw is a local AI agent framework for phones and edge devices. It runs Gemma 4 E2B / E4B via LiteRT and MiniCPM-V 4.6 on device, uses native mobile Skills for Calendar, Reminders, Contacts, Clipboard, Health data, image understanding, voice, and LiveLand, and lets you explicitly choose Web Search, webpage reading, or LAN-based Mac Gateway inference when a task needs it.
PhoneClaw (this project) is unrelated to the Android automation repo "rohanarun/phoneclaw" or the "phoneclaw" GitHub organization. Android app-store search results may also show a separate app with the same name.
Demo: PhoneClaw running Gemma 4 on-device via LiteRT, executing native iOS Skills.
2026-06-23
2026-06-08
Mac Remote page in iPhone settings: discover Macs on the same LAN, approve pairing on the Mac, choose a Mac-side model, then use it from the normal chat screenPhoneClawGateway.app, allow Local Network permission, then pair from Mac Remote on the iPhone; see Use the Mac client for remote inference2026-06-05
Private Local Agent: Run inference and Skill calls directly on device. Use natural language to work with Calendar, Reminders, Contacts, Clipboard, Health data, and other local tasks.
Mac Remote Inference: Optionally pair with a Mac on the same LAN through PhoneClaw Gateway and use Mac-side Ollama, Codex CLI, or Antigravity CLI models while keeping the native iPhone chat and Skill experience.
Image Understanding and LIVE Vision: Ask questions about photos from the camera or photo picker, or enable the camera in LIVE mode so the model can understand the scene in real time.
Personal Data Analysis: Read local schedules, Health data, contacts, reminders, and clipboard content to generate summaries, availability analysis, and next-step suggestions. Personal data is processed on-device by default.
Realtime Information: When explicitly requested, search public webpages, fetch readable webpage text, and summarize live information into an actionable answer.
Voice Interaction: Supports voice input and LIVE real-time conversation for hands-free questions, notes, and actions.
File-Driven Skill System: Each capability is defined by a single Markdown file (SKILL.md). Adding or modifying a skill can happen through the Skill file. Skills are language-agnostic — anyone can write and share them.
Model Management and Resumable Downloads: Gemma main models and LIVE voice models can be downloaded, canceled, resumed, and retried directly on iPhone, or bundled into the app at build time.
Fully Offline First with Clear Data Flow: Inference and local Skill calls run on-device by default. Conversations, images, and personal data stay on iPhone. Web Search, webpage reading, and paired Mac remote inference are explicit user-triggered capabilities; Mac remote inference sends the current request to your paired Mac, and any further upstream access depends on the provider selected in the Mac client.
Mobile Memory Optimization: Includes model switching, system prompt editing, cache cleanup, and history trimming tuned for phone-scale on-device inference limits.
Bilingual Experience: Choose Auto, Chinese, or English in settings. The UI, default system prompt, built-in Skills, tool results, and permission text switch together.
Calendar: Create calendar events, query schedules, and analyze busyness or free time using natural language.
"Schedule a meeting at Hightech Park tomorrow at 2pm"
"What is on my calendar today?"
"How busy am I this week?"
Reminders: Set time-based reminders that fire a system push notification exactly on schedule.
"Remind me tonight at 8 to send the file to my boss"
Contacts: Search, save, update, or delete contacts with name, phone, company, email, and notes. Automatically deduped by phone number.
"Save Wang's number 13812345678, he's from Bytedance"
"Check Sarah Lee's phone number"
Clipboard: Read and write the system clipboard. Useful as a data relay in multi-step tasks.
"Copy that text to the clipboard"
Translate: Translate between any pair of languages, with automatic source detection.
"Translate that last line into Japanese"
Health Data: Read HealthKit steps, distance, calories, heart rate, sleep, and workout records after user authorization. All data stays on-device.
"How many steps did I take today?"
"How did I sleep last night?"
"How are my steps this week?"
"What's my resting heart rate?"
Web Search: When explicitly requested, search public webpages or read a URL, then summarize realtime information into an answer.
"Search the web for today's AI news"
"Read and summarize this page: https://example.com"
Model recommendation:
| Model | Use case |
|---|---|
| Gemma 4 E2B | Lightweight: chat / translation / single-turn queries, A16 and above |
| Gemma 4 E4B | Full-featured: multi-turn tool conversations and complex agent flows, iPhone 15 Pro and above |
| MiniCPM-V 4.6 | Multimodal: image Q&A / real-time camera in LIVE mode, A17 Pro and above recommended |
Recommended install: TestFlight. After installing, download a model in Model Settings, then enable the Skills you need.
Building from source requires macOS + Xcode 16, iOS 17+, CocoaPods, a real device, and an Apple ID.
git clone https://github.com/kellyvv/phoneclaw.git
cd phoneclaw
pod install
The default recommended flow is now:
Model SettingsGemma 4 E2B or Gemma 4 E4B directly on the phoneYou only need the Models/ directory on your Mac if you want to bundle a model inside the app itself.
Gemma 4 now runs on LiteRT-LM: each model is a single .litertlm file in place of an MLX weight directory. Install the Hugging Face CLI first:
brew install hf
# or
pip install -U "huggingface_hub"
E2B only (recommended):
mkdir -p ./Models
hf download litert-community/gemma-4-E2B-it-litert-lm gemma-4-E2B-it.litertlm --local-dir ./Models
E4B only:
mkdir -p ./Models
hf download litert-community/gemma-4-E4B-it-litert-lm gemma-4-E4B-it.litertlm --local-dir ./Models
Both models:
mkdir -p ./Models
hf download litert-community/gemma-4-E2B-it-litert-lm gemma-4-E2B-it.litertlm --local-dir ./Models
hf download litert-community/gemma-4-E4B-it-litert-lm gemma-4-E4B-it.litertlm --local-dir ./Models
Expected files after download:
Models/
├── gemma-4-E2B-it.litertlm
└── gemma-4-E4B-it.litertlm
Models/is listed in.gitignoreand stays outside commits. Approximate file sizes: E2B ~2.4 GB, E4B ~3.4 GB. In mainland China, setHF_ENDPOINT=https://hf-mirror.comto use the mirror, or download the same file from the ModelScope mirror.
LIVE Mode (voice interaction) additional models
If you want to use LIVE mode with voice recognition and synthesis, download the ASR and TTS models:
# ASR — Chinese streaming speech recognition (zipformer, int8, ~160MB)
hf download csukuangfj/sherpa-onnx-streaming-zipformer-zh-int8-2025-06-30 \
--local-dir ./Models/sherpa-asr-zh \
--exclude "test_wavs/*" "*.md" ".gitattributes"
# TTS — Chinese text-to-speech (keqing, ~125MB)
hf download csukuangfj/vits-zh-hf-keqing \
--local-dir ./Models/vits-zh-hf-keqing \
--exclude "*.py" "*.sh" ".gitattributes"
After downloading, add Models/sherpa-asr-zh and Models/vits-zh-hf-keqing as folder references to Copy Bundle Resources in Xcode. LIVE mode can also use system speech as a fallback.
open PhoneClaw.xcworkspace
Always open
.xcworkspace.
On first install, if prompted to trust the developer certificate: Settings → General → VPN & Device Management → Trust
After opening the app:
Download in the model settings page firstDownload a model first, then enable Calendar, Reminders, and Contacts in the permissions page, then try:
Remind me tonight at 8 to send the file
Save Wang's phone number 13812345678
Translate that last line into English
The Mac client turns a Mac on the same LAN into an optional remote inference source for the phone runtime. PhoneClaw still uses its chat UI and Skill system, while model inference requests are sent to your paired Mac.
Option A: download the release (recommended)
PhoneClawGateway.appPhoneClawGateway.app, then choose OpenGateway listens on port 18080 by default and advertises the _phoneclaw-llm._tcp Bonjour service.
Option B: build from source
cd MacGateway
bash build-app.sh
open PhoneClawGateway.app
The source-built app also needs macOS Local Network permission.
Configure the Mac runtime source
PhoneClawGateway.appollama pull gemma3:4b
Pair from the iPhone
Mac RemoteRemote models appear under the Remote section in the model picker. For Mac discovery, check that the Mac client is running, Local Network permission is allowed, both devices are on the same Wi-Fi, and the macOS firewall allows PhoneClawGateway.app to accept LAN connections.
This is now the default recommended setup.
Advantages:
By default, the project builds a lightweight app while model files download on device or get copied explicitly during custom builds.
Models/gemma-4-E2B-it.litertlm, remove Models/gemma-4-E4B-it.litertlmgemma-4-E2B-it.litertlm is included as a single file resourceallModels in LLM/Models/PredefinedModels.swift to only include the models actually shipped (otherwise the settings page will show options that don't exist)Download both models:
brew install hf
mkdir -p ./Models
hf download litert-community/gemma-4-E2B-it-litert-lm gemma-4-E2B-it.litertlm --local-dir ./Models
hf download litert-community/gemma-4-E4B-it-litert-lm gemma-4-E4B-it.litertlm --local-dir ./Models
Then add both .litertlm files into Xcode's Copy Bundle Resources.
Create a SKILL.md file in the app's data directory and hot-reload in-app:
Application Support/PhoneClaw/skills/<skill-id>/SKILL.md
---
name: MySkill
name-zh: My Skill
description: What this skill does
version: "1.0.0"
icon: star
disabled: false
type: device # device = native API; content = prompt-only; network = public internet access
triggers:
- schedule planning
allowed-tools:
- my-tool-name
examples:
- query: "How a user might phrase it"
scenario: "What scenario triggers this"
---
# Skill Instructions
Tell the model when to call tools, how to structure arguments, and when to answer directly.
The type field controls routing: device calls native iOS APIs, content is prompt-only text processing, and network is for explicit live web search or webpage reading. If this skill needs to call native APIs or network tools, register the tool in Tools/ToolRegistry.swift (and add a handler under Tools/Handlers/). The framework validates allowed-tools against the registry at startup, so any typo will surface immediately in the console.
How do I trigger permission dialogs after install? Permission dialogs appear when a Skill reaches the related system API call. After a previous denial, re-enable the permission in system Settings.
Why does the model fail to load after switching?
Verify that the model file name matches allModels in LLM/Models/PredefinedModels.swift, that the model has finished downloading on-device if you are using the shell-only install flow, or that it was actually included in the app bundle if you are shipping it built-in, and that the device has enough memory.
Why does creating a reminder fail? The latest code first attempts to reuse an existing writable reminder list. If none is found, it tries to automatically create a PhoneClaw list. If that also fails, the system reminder source itself is likely read-only.
How do I make the iPhone discover the Mac client?
Make sure PhoneClawGateway.app is running and macOS has allowed Local Network permission. The iPhone and Mac must be on the same LAN. If discovery still fails, check that the macOS firewall allows the app to accept incoming connections, or rebuild the app with bash MacGateway/build-app.sh and open the generated app again.
Continue breaking capabilities into focused Skills with clear model, tool, and permission responsibilities. Directions worth adding:
Beyond the main chat model, suitable additions include:
This moves PhoneClaw from "one big model doing everything" toward "multiple local models working together."
PhoneClaw uses the cross-app capabilities that iOS actually provides:
A realistic goal: pass content between apps, open a specific app to a specific screen, and compress multi-step operations into a single natural language command.
Explore connecting external video input and screen understanding with local models, so PhoneClaw goes beyond answering questions in isolation and develops stronger real-world perception and scheduling capabilities.
Apache 2.0
38 followers · starred Jun 2026
269 followers · starred May 2026
26 followers · starred May 2026