Back to Blog

Claude Code on WhatsApp

May 11, 20269 min readBy EnvHaven Team

Open the skills browser in your EnvHaven sidebar, install use-whatsapp, and run /use-whatsapp in Claude Code. This will set up the bridge in your workspace with what we believe is the best memory and context management for agents today. You stop repeating yourself, the prompt stays small, and old context ages out before it can rot.

01Text it
Same agent, different surface.
The bridge calls the same Claude Code you use on your workspace computer. Same harness, same tools, same model. Only the surface changes.
You type a message, Claude runs in your workspace, the reply lands in WhatsApp. Threading is per-chat: each conversation picks up where it left off.
Bash, Read, Edit, WebFetch, all of it. Anything you ask Claude Code elsewhere, you can ask the bridge.
The phone is another input for the same Claude Code.
9:41
H
Haven Claudeonline
Message
02What you'd text it
Some ideas to start.

Anything you ask Claude Code at your computer, you can ask from your phone. Run the build you're working on, take care of the personal stuff, or both in the same chat. Use it however suits the day.

Signups

Check this week’s signups.

Ask in plain English. The bridge reads your analytics export or runs the query, and comes back with the numbers in a sentence.

how many signups did we get this week?
127 since monday. up 42% from last week. best week since launch.
Receipt

Log a receipt to a budget.

Send a photo. The bridge transcribes the total, appends it to a markdown ledger, and tells you where you stand for the month.

[photo of receipt]
added $34.20 to may groceries. you’re at $312 of your $500 budget, with room to spare.
Ship

Push a small change live.

Spot a copy tweak, a stale price, a typo. Tell the bridge what to change. It edits the file, commits, and the change is live in seconds.

swap 'super fast' to 'fast' on the pricing page
edited /pricing. committed and live in 30s. easy win.
Reminder

Save the moments that matter.

Tell the bridge in plain English; it sets the schedule. The reminder fires as a WhatsApp message at the right time.

remind me to send the family album to grandma next sunday at 6
done. sunday 6pm. she’s going to love it.
Fans

Hear what people love this week.

Ask the bridge what people are saying. It reads your inbox or support file, pulls the recurring praise, and flags anything that needs attention.

what are people saying about us this week?
23 messages. 'love the new search' came up 8 times. mostly fans this week.
Group

Add the bridge to a group.

When an owner adds the bridge to a WhatsApp group, the bridge auto-allows it. Inside, the bridge replies to whitelisted senders and ignores everyone else.

Family:what time is dinner tonight?
8pm. you booked it tuesday. i told mom to bring dessert.

Three roles handle the social side. Owner is you: full trust, plus authority to edit the whitelist in natural language. Full-trust matches owner, minus whitelist edits. Restricted is read-only. Roles re-read on every message; changes take effect on the next inbound. No restart needed.

03Install it
Install from the sidebar, set up in Claude Code.

Open the skills browser in your EnvHaven sidebar. Find use-whatsapp, click install. The skill lands in your workspace where Claude Code can reach it.

Browse Skills

Type to search skills.sh

Then in Claude Code, type /use-whatsapp. The skill is a wizard: it runs the install, opens a pane for the QR scan, and configures auto-start so the bridge survives restarts. Two minutes, end to end.

▐▛███▜▌ Claude Code v2.1.29
▝▜█████▛▘ Opus 4.5 · Claude Max
▘▘ ▝▝ ~/.use-whatsapp
/use-whatsapp
I'll stand up the WhatsApp bridge in your workspace.
Read(skills/use-whatsapp/SKILL.md)
✓ wizard plan loaded
Bash(npm install --prefix ~/.use-whatsapp baileys)
✓ baileys + 24 deps installed
Bash(tmux new -d -n whatsapp 'node ~/.use-whatsapp/index.js')
→ scan the QR with WhatsApp on your phone
✓ phone linked. bridge live on tmux:whatsapp.
Bash(s6-rc enable use-whatsapp)
✓ auto-start configured. survives restarts.
envhaven|my-workspace2 claude
ctrl+b options · v1.3.12
04Less to build
Most of the stack is already there.

Any agent is comprised of the same two parts: a harness (the loop, the tools, the memory model) and a model (the LLM inside it). Shipping one on a new surface usually needs four pieces: a bridge process, the harness, the model, and a host. Two come from Claude (harness from Claude Code, model from your subscription). One comes from EnvHaven (the host). One is left for the skill: the bridge process.

This is why the install is one click. The container that runs your workspace runs the bridge. No Dockerfile, no infrastructure to spin up, no DNS to thread.

Hermes
bridge process (gateway)
custom harness
model (API key, extra usage $)
host
runs on
your laptop
OpenClaw
bridge process (gateway)
custom harness
model (API key, extra usage $)
host
runs on
your laptop
use-whatsapp
bridge process
harness (Claude Code)
model (via your subscription)
host (EnvHaven)
runs on
EnvHaven
  1. 1
    No VPS

    Your workspace already runs. The bridge is a process inside it.

  2. 2
    No container orchestrator

    EnvHaven is the container. The bridge ships inside it; nothing new to orchestrate.

  3. 3
    No harness

    The bridge calls query() from the Claude Agent SDK. The loop, the tools, and the memory model all come from Claude Code itself.

  4. 4
    No model bill

    The official Claude Code SDK uses your existing Claude credentials and your existing Pro/Max subscription. The logs show total_cost_usd: $0.00.

05Memory
Memory that actually works.

From our experience, most agent tools out there forget things. You tell it you prefer kilometers or that your project is migrating off Express. The session resets and you find yourself saying it all again. Three weeks in, you have typed the same context twenty times.

The bridge is built so you only have to say things once. Every morning at 5am, it runs a single Claude call per active chat, reads yesterday's conversation, and decides what to keep.

What it keeps goes to one of seven plain-markdown surfaces: SOUL.md (who you are), feedback-memory (rules you have stated), project-memory (your current work), reference-memory (services you consume), TOOLS.md (services you operate), CLAUDE.md (the environment), and the journal (the conversation). Each fact lands in exactly one place. Four of those seven come from Claude Code itself, so the skill stays thin and the moving parts are not yours to keep working. Examples below.

Before writing anywhere, Claude searches all seven for the same fact. Duplicates get pruned from the lower-priority surface. The rule about your tone never appears in two places, and never comes back rephrased a week later as a question.

The journal is the only surface that grows by chat, and it ages in tiers. Week one: full body in the prompt. Week three: a summary line. Week four: gone. Token cost stays roughly flat as the bridge lives longer.

AThe seven surfaces · 5am routing
CLAUDE CODE· 4 of 7, already there for youSKILL· 3 thin extras the skill adds
SKILL
SOUL.md
who you are
“I prefer short replies in Spanish.”
CLAUDE CODE
feedback-memory
rules you have stated
“I prefer kilometers over miles.”
CLAUDE CODE
project-memory
your current work
“Planning a trip to Lisbon in June.”
SKILL
journal
the conversation itself
“Today you booked the dentist for thursday.”
SKILL
TOOLS.md
services you operate
Postgres on :5432. Restart with supervisorctl restart pg.
CLAUDE CODE
CLAUDE.md
the environment
Workspace root /config/workspace/api. Bun + Hono.
CLAUDE CODE
reference-memory
services you consume
Stripe API at api.stripe.com. Key in 1Password.

one claude call per active chat at 5am · routing and aging share the same pass

BJournal aging · one chat
Today
T1 · 0–6 days

Booked dentist for thursday. Paid the gas bill.

budget512w
Day 7
T2 · 7–13 days

Planned the Lisbon trip; booked the flights.

budget256w
Day 14
T3 · 14–20 days

Started a budget tracker.

budget128w
Day 21
T4 · 21–27 days

Switched grocery delivery.

budget64w
Day 28
deleted
deleted

Open the bridge directory in your editor. Every byte the bridge remembers about you is there, indexed by chat.

Each WhatsApp chat runs as its own Claude session. Journals and aging clocks are per-chat; context never bleeds from one conversation into another.

Group chats add a privacy rule to the system prompt: abstract file paths, secrets, and architecture details when replying inside a group. This is heuristic. It reduces accidental leaks; a determined sender inside the group can still ask the right questions.

06How it compares
Side by side with Hermes and OpenClaw.

Hermes and OpenClaw cover similar ground. This bridge made different trade-offs.

use-whatsapp
Harness
Claude Code, via the SDK
Model access
Claude, via your subscription
Install
One skill command
Channels
WhatsApp (more on the roadmap)
Where it runs
The EnvHaven workspace you already have
Memory model
7 typed surfaces + tiered journal, plain markdown
Hermes
Harness
Hermes runtime
Model access
Any model, via API key
Install
Curl + setup
Channels
7 channels in one binary
Where it runs
A VPS or machine you provision
Memory model
Persistent memory, history-style
OpenClaw
Harness
OpenClaw runtime
Model access
Any model, via API key
Install
Curl, npm, or git clone
Channels
6 channels in one binary
Where it runs
Your laptop or a machine
Memory model
History + skill files

OpenClaw covers the widest set of channels: Discord, Slack, Signal, iMessage. If you need those today, it is the right pick. Hermes is vendor-neutral; point it at any model, local models included. This bridge is for an EnvHaven workspace plus a WhatsApp number. The catalog below handles the rest, one surface at a time.

07Yours to change
The skill outputs code you can change.

The bridge sits as plain files in a directory your workspace already owns. If you want the 5am reset moved to 4am, or a new role called guest that can only ask about today's schedule, tell Claude on the bridge itself. It reads the files, edits them, restarts the service. No release cycle, no waiting on us.

That is why each skill stays small. Pack seven channels into one binary and you ship seven half-shipped channels, in a binary no one outside the maintainer can edit. We picked the opposite shape: each channel its own skill, each harness and model its own skill. The catalog grows by addition.

One skill, one channel. WhatsApp here. Telegram, Discord, Signal, Email, and Slack each get their own skill when we ship them. Each stays small enough to read in one sitting.

One skill, one harness and model. Claude Code here. Codex on WhatsApp will be its own skill; Aider with a local model on Slack, another. The catalog grows; each entry stays focused.

Three smaller things to know about this particular skill:

  1. 1It needs your workspace running. Pause the workspace and the bridge pauses with it. Auto-start handles crashes; it does not handle shutdowns.
  2. 2The role gates are heuristic. The system prompt tells Claude how to treat each sender; there is no kernel-level enforcement. A determined whitelisted sender could push past the rule and Claude might comply.
  3. 3Image transcription is whatever Claude can see. The Read tool surfaces the photo to Claude; quality matches what Claude can make out. Blurry shot, blurry data.
08What's coming next
The catalog grows next to this one.

use-whatsapp is the first entry. New channels and new harness-and-model combinations arrive as their own skill, browsable next to this one in the sidebar.

Every entry lives on its own. Every entry installs in one click. Every entry ships a SKILL.md you can audit. No release notes, no version pinning, no flags to toggle.

skill catalogupdated may 11 · 8 entries
  • live
    WhatsApp·Claude Code
    use-whatsapp
    this post.
  • next
    Telegram·Claude Code
    use-telegram
    the same memory model, on Telegram’s bot API.
  • next
    Discord·Claude Code
    use-discord
    per-channel sessions, per-server roles.
  • queued
    Signal·Claude Code
    use-signal
    end-to-end on signal-cli; same roles, same memory.
  • queued
    Slack·Claude Code
    use-slack
    one bridge per workspace, threads as sessions.
  • queued
    Email·Claude Code
    use-email
    IMAP in, SMTP out, threads as sessions.
  • queued
    WhatsApp·Codex
    wa-codex
    same bridge, OpenAI’s harness instead of Claude’s.
  • queued
    WhatsApp·Aider
    wa-aider
    same bridge, Aider with a local or hosted model.
Get it

Open the skills browser in your EnvHaven sidebar, install use-whatsapp, scan the QR. From the command line: npx skills add envhaven/envhaven --skill use-whatsapp. The source lives in the envhaven/envhaven repo; the wizard is the SKILL.md Claude follows step-by-step.