Always-On AI on a Mac Mini — OpenClaw + WhatsApp
An always-on AI agent running on a dedicated box in your house. Same Claude brain you already pay for ($20/mo Pro), but now it lives in a box on your network — and you can talk to it from anywhere, including WhatsApp, from your phone, while you’re walking the dog.
What You’re Building
An open-source agent runtime called OpenClaw, installed on a Mac Mini, connected to your existing Claude Pro subscription, and bridged to WhatsApp Business so you can text it from anywhere.
The end state:
- The agent is always running. You don’t need to open a browser to use it.
- You text it from your phone. It texts back.
- It retains the context you share with it (anything you choose to expose to it).
- It uses your existing Claude Pro subscription — no extra AI costs beyond the $20/mo you already pay.
- It runs in network isolation for privacy and safety.
Hardware — Why a Dedicated Mac Mini
A Mac Mini is the sweet spot for this, but sourcing one can take a long lead time:
- Affordable — base model M4 with 16GB RAM is around $799 new, less refurbished. If you want to run local LLM models too, bump it to 32GB.
- Quiet — fanless or near-fanless under normal load. Stick it on a shelf and forget it.
- Power-efficient — costs pennies a day to run 24/7.
- macOS — same OS as your work laptop probably, easy to manage.
Avoid running this on your daily-driver Mac. The whole point is “always on, doesn’t crash when I close my laptop.” A dedicated box also means you can be selective about what you let it access, without worrying about your personal files.
Pro tip — give your agent its own accounts. Set up the Mac Mini with dedicated service accounts, completely separate from yours:
- macOS user account — a dedicated macOS user for your agent (don’t use your personal Apple ID login)
- Google account — gives it its own Gmail, Google Drive (shared folders with you), and Google Calendar (share a calendar with your personal account — your agent adds events via GCal invite, not direct access to yours)
- iCloud account — a dedicated Apple ID for the Mac Mini. Keeps iCloud, Find My, and macOS services isolated.
This takes 15–20 minutes of one-time setup, but the payoff is big: your agent can autonomously send you emails, manage a shared calendar, store files in Drive, and operate with clear boundaries.
Network Isolation — Put It on the Guest Network
Your AI agent is going to have an internet connection, Claude Pro credentials, and the ability to run code. It is, by definition, a privileged piece of software running on your network. Treat it that way.
Put the Mac Mini on your guest WiFi network. Most modern routers support a guest network that has internet access but is isolated from your main network (laptops, phones, work devices, smart home stuff). If the agent ever does something weird, it can’t see or touch your main devices. The blast radius is the Mac Mini itself.
Install OpenClaw
The official OpenClaw installer detects your OS, installs Node if needed, installs OpenClaw, and launches the interactive onboarding wizard. One command, ~5 minutes total.
Step 0 — Install iTerm2
Download from iterm2.com → drag to Applications → launch. Better than the default macOS Terminal: improved tab handling, search, copy/paste, and color rendering.
Advanced: install VS Code from code.visualstudio.com if you want a full editor with built-in terminal (helpful for editing AGENTS.md and openclaw.json later).
Step 1 — Install OpenClaw
curl -fsSL https://openclaw.ai/install-cli.sh | bash
That’s it. The script puts everything under ~/.openclaw and launches the onboarding wizard automatically.
Step 2 — Complete Onboarding
The wizard is interactive. It walks you through:
- Model / Auth — choose Claude CLI. This reuses the Claude Pro login you already have — no separate API key needed. If Claude CLI isn’t installed yet, install it first (
npm install -g @anthropic-ai/claude-code), then runclaude login. - Workspace — defaults to
~/.openclaw/workspace. Hit Enter. - Gateway — defaults to port 18789 on localhost. Hit Enter.
- Channels — skip for now. We’ll add WhatsApp below.
- Daemon — say YES. Installs a macOS LaunchAgent so OpenClaw auto-starts on boot.
- Health check — wizard confirms the Gateway is running.
When the wizard finishes, your agent is alive. Open http://localhost:18789 in a browser on the Mac Mini to chat via the Control UI.
Step 3 — Give Your Agent a Personality
The onboarding wizard seeded ~/.openclaw/workspace/AGENTS.md — this file is your agent’s “Custom Instructions” (same idea as Cowork, except always loaded). Two ways to fill it in:
- Edit it directly —
nano ~/.openclaw/workspace/AGENTS.mdin iTerm2, or open in VS Code. Add your name, family, pets, time zone, communication style. - Or just chat with your agent at http://localhost:18789 and tell it “remember the following about my household…” — it’ll write to AGENTS.md as you teach it.
Optional — macOS menu-bar app: install OpenClaw.app from openclaw.ai for a system-tray indicator and macOS permissions (Camera, Screen Recording, Automation). The CLI install is enough for headless operation; the .app is a quality-of-life add-on.
WhatsApp Business Bridge — Talk to Your Agent from Anywhere
OpenClaw ships with a WhatsApp channel plugin powered by Baileys (the same library WhatsApp Web itself uses). Your job is to give your agent a phone number, link it, and configure who can talk to it.
Step 1 — Give Your Agent Its Own Phone Number
Your agent needs a dedicated phone number that isn’t your personal WhatsApp. The cleanest free option is Google Voice.
Provision a Google Voice number:
- Go to voice.google.com — sign in with a Google account (create a dedicated one for your agent — see the Pro Tip above)
- Click “Get started” → select a number (search by area code)
- Link it to an existing phone for verification — just for setup, not ongoing use
- Done. You now have a number like +14045550123 that can receive SMS
Why Google Voice: free, receives SMS, no SIM needed, works entirely in software. Alternative: an eSIM from Visible or US Mobile (~$5–10/month) gives you a “real” carrier number.
Step 2 — Register the Number on WhatsApp Business
You need a WhatsApp account on the Google Voice number that’s separate from your personal WhatsApp. The easiest way on iPhone: use the WhatsApp Business app.
- Download WhatsApp Business from the App Store — installs alongside your regular WhatsApp, no conflict
- Open it → enter your Google Voice number
- WhatsApp sends an SMS verification code → check voice.google.com Messages tab
- Complete setup: give the account your agent’s name, skip business details
- Done — you now have a WhatsApp account on a dedicated number
No developer account needed. You don’t need Meta’s WhatsApp Business API or any developer portal. WhatsApp Business app is just a free alternative client that lets you run a second account on the same iPhone.
Step 3 — Add WhatsApp to OpenClaw
From iTerm2 on the Mac Mini, add the WhatsApp channel. This installs the plugin (on demand), configures the channel, and prompts you to scan a QR code:
openclaw channels add --channel whatsapp
When the QR code appears in your terminal:
- Open WhatsApp Business on your iPhone → Settings → Linked Devices → Link a Device
- Scan the QR code in the terminal
- Done — OpenClaw is now connected to your agent’s WhatsApp number
The session is persisted to ~/.openclaw/credentials/whatsapp/default/creds.json. On subsequent starts (including reboots), it reconnects automatically without re-scanning.
Step 4 — Tell Your Agent Who Can Talk to It
The easy path: just ask your agent — “switch the WhatsApp dmPolicy to allowlist and add my number and my spouse’s number.” Your agent has filesystem access on the Mac Mini, so it can edit the config and restart itself.
For reference, here’s what the config looks like in ~/.openclaw/openclaw.json:
{
"channels": {
"whatsapp": {
"enabled": true,
"dmPolicy": "allowlist",
"allowFrom": [
"+1YOUR_NUMBER",
"+1HOUSEHOLD_MEMBER_1",
"+1HOUSEHOLD_MEMBER_2"
],
"groupPolicy": "allowlist",
"groupAllowFrom": ["+1YOUR_NUMBER"]
}
}
}
dmPolicy options:
- “allowlist” — only numbers in allowFrom can DM your agent. Most explicit. Recommended for household use.
- “pairing” — only contacts your agent has messaged first. Looser.
- “open” — anyone with the number can message in. Don’t use this.
- “disabled” — DMs off entirely.
allowFrom — the explicit list of numbers in E.164 format (country code + number, no spaces or dashes, e.g. +14045550123).
Adding a Household Member Later
Easy path: tell your agent — “Add my spouse at +1XXX-XXX-XXXX to the WhatsApp allowlist.” Done.
Optional — per-person customization. You can give individual contacts a custom system prompt:
"direct": {
"+1HOUSEHOLD_MEMBER_1": {
"systemPrompt": "You are talking with [name], my spouse. Keep responses brief and friendly."
}
}
Costs
| Component | Cost |
|---|---|
| Claude Pro subscription | $20/mo (you already pay this) |
| Google Voice number | Free |
| WhatsApp Business app | Free |
| OpenClaw + WhatsApp plugin | Free (open source) |
Total: $0/month beyond your existing $20/mo Claude Pro subscription.
Gotchas
- WhatsApp Web sessions expire. WhatsApp disconnects linked devices after ~14 days of inactivity. Re-scan the QR code with
openclaw channels add --channel whatsapp. Plan to re-scan every few weeks. - Google Voice SMS delivery is sometimes slow. The verification SMS can take 30–60 seconds. Don’t immediately request a call verification — wait for the SMS.
- Use “allowlist”, not “open”. “open” lets anyone with your agent’s number message it. “allowlist” requires you to explicitly add each number.
- Numbers must be E.164 format. Country code + number, no spaces or dashes (+14045550123, not 404-555-0123). Most common cause of “why doesn’t it respond.”
- WhatsApp may flag new numbers. A fresh Google Voice number can get a temporary ban (24–48 hours). Let the account sit for a few days before heavy automation.
- If you skipped daemon install during onboarding, run
openclaw gateway installto add the LaunchAgent later. - Re-scanning doesn’t reset your config. The session file (
creds.json) is separate from your channel config inopenclaw.json.
What This Unlocks
Once the agent is running and reachable via WhatsApp:
- Drive-by tasks. “Add eggs and milk to the grocery list.” “Remind me to call the vet tomorrow morning.” “What’s on my calendar Thursday afternoon?”
- Hands-free decisions. “I’m at Home Depot — should I get the cheaper paint or the better one for what we’re doing in the kitchen?” Your agent has the context.
- Family hand-off. Your spouse can text the same agent. So can your teenager. Same context, same memory, all in one place.
- Background work. “While I’m at dinner, draft me a polite email to the contractor pushing back on the new estimate.” It does the work; you check the draft when you’re back.
It stops being “AI you go talk to” and starts being “household infrastructure that’s just there.”
Coming Next — Part 3
Once you’re using your agent constantly, you’ll notice the same thing I did: most of what you ask it is easy. “What time does Home Depot close?” doesn’t need a frontier model.
Part 3 is multi-model routing — putting two free, fast, local models on the same Mac Mini (Gemma and Qwen) and having your agent decide which one to use. Easy questions stay local. Complex stuff goes to Claude. Your AI bill drops ~80% without losing quality on the hard stuff.