Agent skill
bluebubbles-setup
Set up BlueBubbles for iMessage integration with OpenClaw. Use when: (1) configuring iMessage on macOS, (2) troubleshooting BlueBubbles webhooks, (3) fixing config validation errors, (4) setting up allowlists and policies. Covers Full Disk Access, Cloudflare tunnels, and OpenClaw channel config.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/bluebubbles-setup
SKILL.md
BlueBubbles Setup
Configure BlueBubbles for iMessage integration with OpenClaw on macOS.
Prerequisites
| Requirement | Details |
|---|---|
| macOS | 15+ (Sequoia) recommended |
| BlueBubbles Server | Download from bluebubbles.app/downloads/server |
| OpenClaw | Running with gateway enabled |
| Full Disk Access | Required for BlueBubbles to read Messages database |
Step 1: Install BlueBubbles Server
- Download from bluebubbles.app/downloads/server
- Move to Applications folder
- Right-click and select "Open" to bypass Gatekeeper
- Grant Full Disk Access when prompted
Granting Full Disk Access
If BlueBubbles shuts down requesting Full Disk Access:
- Open System Settings
- Go to Privacy & Security
- Click Full Disk Access
- Click the + button
- Add BlueBubbles from Applications
- Toggle it ON
- Reopen BlueBubbles
Step 2: Configure BlueBubbles Server
Required Settings
| Setting | Value |
|---|---|
| Auto Start Method | Launch Agent |
| Prevent Sleep | ON |
| Auto Check Updates | ON |
Server Settings
In BlueBubbles Settings, find:
| Setting | Location |
|---|---|
| Server URL | Connection Settings (Cloudflare recommended) |
| Server Password | Connection Settings |
| Local Port | Usually 1234 |
Note the Server URL and Password. You need these for OpenClaw.
Step 3: Configure OpenClaw
Add BlueBubbles channel to OpenClaw config:
{
"channels": {
"bluebubbles": {
"enabled": true,
"serverUrl": "https://your-cloudflare-url.trycloudflare.com",
"password": "your-server-password",
"webhookPath": "/bluebubbles-webhook",
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567"],
"groupPolicy": "disabled",
"sendReadReceipts": true
}
}
}
Policy Options
| Policy | Value | Requires |
|---|---|---|
| dmPolicy: "allowlist" | Only respond to listed contacts | allowFrom array |
| dmPolicy: "pairing" | Require pairing code | Nothing extra |
| dmPolicy: "open" | Respond to everyone | allowFrom: ["*"] |
| groupPolicy: "disabled" | Ignore group messages | Nothing extra |
| groupPolicy: "open" | Respond in groups | groupAllowFrom: ["*"] |
Critical Config Rule
Open policies require wildcards:
dmPolicy: "open"requiresallowFrom: ["*"]groupPolicy: "open"requiresgroupAllowFrom: ["*"]
Forgetting the wildcard crashes the gateway.
Fix with: openclaw doctor --fix
Step 4: Set Up Webhook
In BlueBubbles API & Webhooks section:
- Click to add a new webhook
- Set URL to:
http://localhost:18789/bluebubbles-webhook?password=YOUR_PASSWORD - Enable All Events
- Save the webhook
The webhook connects BlueBubbles to OpenClaw.
Step 5: Verify Connection
openclaw status --deep
Should show:
Channels
┌─────────────┬─────────┬────────┬─────────────┐
│ Channel │ Enabled │ State │ Detail │
├─────────────┼─────────┼────────┼─────────────┤
│ BlueBubbles │ ON │ OK │ configured │
└─────────────┴─────────┴────────┴─────────────┘
Troubleshooting
Gateway Crashes on Startup
Symptom: Gateway exits immediately after config change.
Cause: Open policy without wildcard.
Fix:
openclaw doctor --fix
openclaw gateway restart
Messages Not Received
Symptom: Send a message but OpenClaw does not respond.
Check:
- Is the sender in
allowFrom? - Is the webhook URL correct?
- Is BlueBubbles webhook showing in the list?
Debug:
tail -f /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log | grep -i bubble
Private API Not Enabled
Symptom: Error about "Private API not enabled."
Impact: Read receipts and typing indicators will not work.
Resolution: This is optional. Messaging still works without it.
Pairing Codes
When using dmPolicy: "pairing":
- New contacts receive a pairing code
- Approve with:
openclaw pairing approve bluebubbles CODE - List pending:
openclaw pairing list bluebubbles
Security Notes
- Keep the server password secret
- Use allowlists in production
- Avoid
dmPolicy: "open"unless needed - Consider
groupPolicy: "disabled"to prevent unintended group responses
Skill Chaining
| Chain To | When |
|---|---|
| imessage-tone | After setup, for message formatting |
| doc-maintenance | After completing setup |
| Chains From | Condition |
|---|---|
| project-init | When iMessage integration requested |
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?