A minimal OpenClaw agent that texts you on iMessage. No Mac required.
Fork this, drop in a Claw Messenger API key, run openclaw start, and your agent is texting from a dedicated iMessage number in 10 minutes.
- A working OpenClaw config pre-wired to the
@emotion-machine/claw-messengerchannel plugin - An iMessage-enabled agent that receives texts, calls your tools, and replies as blue bubble
- RCS + SMS fallback for non-iPhone recipients, automatic
- Tapback support, typing indicators, group-chat capability
# 1. Clone
git clone https://github.com/emotion-machine-org/openclaw-imessage-starter
cd openclaw-imessage-starter
# 2. Install OpenClaw and the Claw Messenger plugin
npm install -g openclaw
openclaw plugins install @emotion-machine/claw-messenger
# 3. Configure
cp .env.example .env
# edit .env: paste your Claw Messenger API key + the phone number you want to text from
# 4. Run
openclaw startSend your agent a text from your registered phone. It replies.
- Sign up at clawmessenger.com (7-day free trial, no card required)
- From the dashboard, copy your API key (
cm_live_...) - Register the phone number(s) that should be able to message your agent
- Paste the key into
.env
Pricing starts at $5/mo for 250 messages. Agencies building multi-tenant products can use the agency tier at $3/mo per active sub-tenant.
The full config lives in openclaw.json. The relevant part:
{
"channels": {
"claw-messenger": {
"enabled": true,
"apiKey": "${CLAW_MESSENGER_API_KEY}",
"serverUrl": "wss://claw-messenger.onrender.com",
"preferredService": "iMessage",
"dmPolicy": "allowlist",
"allowFrom": ["${ALLOWED_PHONE_NUMBER}"]
}
}
}preferredService:iMessagefor blue bubble,RCSfor Android-priority,SMSfor guaranteed deliverydmPolicy:allowlist(only the numbers you list can text your agent) is the safest defaultallowFrom: phone numbers in E.164 (e.g.,+15555551234) that are allowed to message your agent
For DM security policies, group chat handling, and tapback configuration see the plugin docs.
If your users live on Android, fork openclaw-android-text-starter instead. Same shape, preferredService: "RCS", automatic SMS fallback.
MIT. Fork freely.