PalmClaw
PalmClaw
Your private AI assistant on your phone: simple, safe, and ready anytime.
⬇️ Just want to download? Jump to Quick Start
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.
✨ 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.
🎬 Demos
![]() |
![]() |
![]() |
![]() |
| Initial Setup | Core Features | Tool Usage | Channels Setup |
📰 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! 🎉
🛣️ 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.
📑 Table of Contents
- 📌 Overview
- ✨ Key Features
- 🎬 Demos
- 📰 News
- 📑 Table of Contents
- 🚀 Quick Start
- 🔌 Channels Configuration
- ⚙️ How PalmClaw Works
- 🗂️ Repository Structure
- 🤝 Community
- ⚖️ License
🚀 Quick Start
👤 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.
🛠️ 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.
🔌 Channels Configuration
PalmClaw currently supports these channels:
Telegram
- 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.
Discord
- Set
Channel = Discord. - Fill
Discord Bot Token. - Set target
Discord Channel ID. - Choose response mode (
mentionoropen), optionally set allowed user IDs. - Save binding.
[!TIP] Invite the bot to the target server/channel first.
If using
mentionmode, mention the bot once to trigger replies in guild channels.
Slack
- 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.
[!IMPORTANT] Slack prerequisites:
- Socket Mode enabled
- App token with
connections:write- Bot token with required message/reply scopes
Feishu
- 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.
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.
WeCom
- 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:
⚙️ How PalmClaw Works
- 📩 Message in: input comes from local chat or connected channels.
- 🤖 Agent loop: LLM decides, calls tools when needed, then generates response.
- 🧠 Context: memory + skills guide every turn.
- 📤 Response out: result is written to the session and sent back to the channels.
🗂️ Repository Structure
PalmClaw/
├─ app/
│ ├─ src/main/java/com/palmclaw/
│ │ ├─ ui/ # Compose UI, settings, chat, onboarding
│ │ ├─ runtime/ # agent runtime, always-on, routing
│ │ ├─ channels/ # Telegram / Discord / Slack / Feishu / Email / WeCom
│ │ ├─ config/ # config store and storage paths
│ │ ├─ cron/ # scheduled jobs
│ │ ├─ heartbeat/ # heartbeat runtime
│ │ ├─ tools/ # mobile tools exposed to the agent
│ │ └─ skills/ # skill loading and matching
│ └─ src/main/assets/
│ ├─ templates/ # AGENT / USER / TOOLS / MEMORY / HEARTBEAT
│ └─ skills/ # bundled skills and guidance
├─ docs/assets/
│ ├─ brand/ # shared brand logos and artwork
│ ├─ site/ # docs site fonts, icons, demos, qr and diagrams
│ └─ promo/ # promotional articles and social-media resources
├─ gradle/ # Gradle wrapper files
└─ README.md
🤝 Community
We welcome researchers, builders, and mobile AI practitioners to join the PalmClaw community. 🌍
⚖️ License
This project is offered under a dual licensing model:
Open Source License: See LICENSE
This is the default license for the project. It ensures that any modifications made to the code, when used to provide a service over a network, must also be released under the AGPLv3.Commercial License: See LICENSE-COMMERCIAL
For organizations or individuals who wish to integrate this software into proprietary products or services without being bound by the AGPLv3's copyleft requirements (e.g., keeping modifications private), a commercial license is available.




