PalmClaw
Your private AI assistant on your phone: simple, safe, and ready anytime. 你手机里的私人 AI 助手:简单、安全,随时可用。
Install / Use
/learn @ModalityDance/PalmClawREADME
<a name="readme-top"></a>
<p align="right"><a href="./README.zh-CN.md">简体中文</a></p> <div align="center"> <h1> <img src="./docs/assets/brand/PalmClaw-removebg-black.png#gh-light-mode-only" alt="PalmClaw Line Logo (light mode)" width="56" /> <img src="./docs/assets/brand/PalmClaw-removebg-preview.png#gh-dark-mode-only" alt="PalmClaw Line Logo (dark mode)" width="56" /> PalmClaw </h1> <p>Your private AI assistant on your phone: simple, safe, and ready anytime.</p> </div> <div align="center"> <a href="https://modalitydance.github.io/PalmClaw/"> <img src="https://img.shields.io/badge/Project-Website-0A84FF?style=for-the-badge" alt="Project Website"> </a> <a href="https://github.com/ModalityDance/PalmClaw/releases/latest/download/app-release.apk"> <img src="https://img.shields.io/badge/Download-APK-f39c12?style=for-the-badge&logo=android&logoColor=white" alt="Download APK"> </a> <a href="./docs/assets/site/weixingroup.jpg"> <img src="https://img.shields.io/badge/WeChat-Group-07C160?style=for-the-badge&logo=wechat&logoColor=white" alt="WeChat Open Source Group"> </a> <a href="https://github.com/ModalityDance/PalmClaw/releases"> <img src="https://img.shields.io/github/downloads/ModalityDance/PalmClaw/total?style=for-the-badge&label=Release%20Downloads" alt="Release Downloads"> </a> <img src="https://img.shields.io/badge/Platform-Android-3DDC84?style=for-the-badge&logo=android&logoColor=white" alt="Android"> <img src="https://img.shields.io/badge/Language-Kotlin-7F52FF?style=for-the-badge&logo=kotlin&logoColor=white" alt="Kotlin"> </div> <p align="center"><strong>⬇️ Just want to download? <a href="#quick-start-download">Jump to Quick Start</a></strong></p><a name="overview"></a>
📌 Overview
PalmClaw is a personal assistant on your phone inspired by OpenClaw, but designed for direct mobile deployment: run your AI agent on your phone without a PC.
- 📱 Deploy and operate directly on Android.
- 🔒 Local-first runtime for a safer and more private workflow.
- ⚡ Simpler setup and daily use, while still supporting channels, tools, and automation.
<a name="key-features"></a>
✨ Key Features
-
📱 Mobile-native deployment
Deploy and run directly on Android, with built-in access to local hardware and files. -
✨ Simple workflow
All operations are done directly in the app UI, making setup and usage easier. -
🔐 Stronger safety
Android App sandbox isolation provides a naturally safer runtime boundary. -
🧠 Full agent stack included
Memory, skills, tools, and channels are all available in one mobile runtime.
<a name="demos"></a>
🎬 Demos
<div align="center"> <table width="100%"> <tr> <td align="center"><img src="./docs/assets/site/demos/start.gif" alt="Initial Setup Demo" width="96%"></td> <td align="center"><img src="./docs/assets/site/demos/func.gif" alt="Core Features Demo" width="96%"></td> <td align="center"><img src="./docs/assets/site/demos/tool.gif" alt="Tool Usage Demo" width="96%"></td> <td align="center"><img src="./docs/assets/site/demos/channel.gif" alt="Channels Configuration Demo" width="96%"></td> </tr> <tr> <td align="center"><sub>Initial Setup</sub></td> <td align="center"><sub>Core Features</sub></td> <td align="center"><sub>Tool Usage</sub></td> <td align="center"><sub>Channels Setup</sub></td> </tr> </table> </div><a name="news"></a>
📰 News
- ✨ [2026.03.28] v0.1.4 Channels, UI & Auto Update: Improved channel connection flow and stability, refined UI structure, added more unit tests, and introduced automatic update checks and downloads.
- ✨ [2026.03.25] v0.1.3 Custom Provider & Auto-Detect Update: Added custom provider naming, improved endpoint auto-detection, and remembered successful provider resolution.
- ✨ [2026.03.24] v0.1.2 Provider & Settings Refresh: Added Volcengine, BytePlus, and Mistral presets, improved model setup, and refined settings UX.
- 🌏 [2026.03.21] v0.1.1 Chinese Docs & UX Update: Added a Chinese README, improved Chinese error messages, and fixed the MiniMax API endpoint.
- 🚀 [2026.03.16] Initial Release: PalmClaw v0.1.0 is now live! 🎉
<a name="roadmap"></a>
🛣️ Roadmap
- [ ] Integrate SkillHub.
- [ ] Build a conversion skill: desktop skill -> mobile-ready skill.
- [ ] More channel integrations.
- [ ] Better tool support.
- [ ] Stronger web search tools, like brave or tavily.
- [ ] Expand Android-native capabilities.
- [ ] Local app integration.
- [ ] Screen reading and interaction.
- [ ] Multimodal input and output.
<a name="table-of-contents"></a>
📑 Table of Contents
- 📌 Overview
- ✨ Key Features
- 🎬 Demos
- 📰 News
- 📑 Table of Contents
- 🚀 Quick Start
- 🔌 Channels Configuration
- ⚙️ How PalmClaw Works
- 🗂️ Repository Structure
- 🤝 Community
- ⚖️ License
<a name="quick-start"></a> <a name="quick-start-download"></a>
🚀 Quick Start
<a name="for-normal-users"></a>
👤 For Normal Users
- Download the latest APK from the Releases page.
- Install the APK on your Android phone.
- Open PalmClaw and follow the in-app onboarding guide.
- Finish provider setup, then start chatting in the local session!
[!IMPORTANT] PalmClaw does not include hosted model access by default. You need to configure your own provider API key during setup.
<a name="for-developers"></a>
🛠️ For Developers
- Install Android Studio and JDK 17.
- Clone the repository:
git clone https://github.com/ModalityDance/PalmClaw.git
cd PalmClaw
- Open the project in Android Studio and wait for Gradle sync.
- Ensure
local.propertiespoints to your Android SDK path. - Run the app on a physical device or emulator.
[!NOTE]
local.propertiesis machine-specific and should not be committed.
<a name="channels-configuration"></a>
🔌 Channels Configuration
PalmClaw currently supports these channels:
<details> <summary><strong>Telegram</strong></summary>- Set
Channel = Telegram. - Fill
Telegram Bot Tokenand save. - Send one message to your bot in Telegram.
- Tap
Detect Chats. - Select detected chat, then save binding.
- Set
Channel = Discord. - Fill
Discord Bot Token. - Set target
Discord Channel ID. - Choose response mode (
mentionoropen), optionally set allowed user IDs. - Save binding.
</details> <details> <summary><strong>Slack</strong></summary>[!TIP] Invite the bot to the target server/channel first.
If using
mentionmode, mention the bot once to trigger replies in guild channels.
- Set
Channel = Slack. - Fill
Slack App Token (xapp...)andSlack Bot Token (xoxb...). - Set target
Slack Channel ID. - Choose response mode (
mentionoropen), optionally set allowed user IDs. - Save binding.
</details> <details> <summary><strong>Feishu</strong></summary>[!IMPORTANT] Slack prerequisites:
- Socket Mode enabled
- App token with
connections:write- Bot token with required message/reply scopes
- Set
Channel = Feishu. - Fill
Feishu App IDandFeishu App Secret, then save once in PalmClaw. - In Feishu Open Platform, make sure Bot capability is enabled. In
Events & Callbacks, selectLong Connection, then addim.message.receive_v1. - In
Permission Management, addim:message(send messages) andim:message.p2p_msg:readonly(receive messages). If you test by@-mentioning the bot in a group, also addim:message.group_at_msg:readonly. - Publish the app, open it in Feishu, and confirm the
Long Connectionconfiguration while PalmClaw is still running. - Send one message to the bot from Feishu.
- Tap
Detect Chats. - Select detected target (
open_idfor private chat,chat_idfor group), then save again. - Optional: set
Allowed Open IDs.
</details> <details> <summary><strong>Email</strong></summary>If outbound works but inbound does not, the usual cause is that the receive permission, event subscription, publish/open step, or Long Connection confirmation is still incomplete.
- Set
Channel = Email. - Enable consent.
- Fill IMAP settings: host, port, username, password.
- Fill SMTP settings: host, port, username, password, from address.
- Save once to start mailbox polling.
- Send one email to this mailbox from target sender.
- Tap
Detect Senders. - Select sender and save again.
- Optional: toggle auto-reply on/off.
- Set
Channel = WeCom. - Fill
WeCom Bot IDandWeCom Secret. - Save once to start long connection.
- Send one message to the bot from WeCom.
- Tap
Detect Chats. - Select detected target and save again.
- Optional: set
Allowed User IDs.
[!NOTE] Recommended order for any channel:
- Open the target sess
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
