Your personal Claude AI, accessible via iMessage.
Text Claude from anywhere. Send messages, voice notes, or images — get intelligent responses back to your phone. Built on Sendblue + Claude Code.
- Text Claude - Natural conversation via iMessage
- Voice Notes - Send audio, automatically transcribed via OpenAI Whisper
- Images - Send photos, Claude can see and analyze them
- File Access - Claude has full filesystem access for coding tasks
- Attachments - Claude can send files back to you
- Crash Alerts - Get notified if the daemon goes down
- Queue System - Multiple messages processed in order
brew install node # Node.js 18+
npm install -g @sendblue/cli # Sendblue CLI
npm install -g @anthropic-ai/claude-code # Claude CodeRun the Sendblue setup wizard:
sendblue setupThis creates your account, assigns a phone number, and guides you through verifying your first contact. When done, print your credentials:
sendblue show-keysCopy the API Key, API Secret, and phone number — you'll need them in the next step.
Already have an account? (dashboard method)
- Go to dashboard.sendblue.com
- Settings → API Settings — copy your API Key and API Secret
- Settings → Phone Lines — copy your Sendblue phone number
git clone https://github.com/njerschow/textme.git
cd textme/daemon && npm install && npm run buildmkdir -p ~/.config/claude-imessage
nano ~/.config/claude-imessage/config.json{
"sendblue": {
"apiKey": "YOUR_API_KEY",
"apiSecret": "YOUR_API_SECRET",
"phoneNumber": "+1SENDBLUE_NUMBER"
},
"whitelist": ["+1YOUR_PHONE"],
"pollIntervalMs": 5000,
"conversationWindowSize": 20
}| Field | What to put |
|---|---|
sendblue.apiKey |
Your Sendblue API key (from sendblue show-keys) |
sendblue.apiSecret |
Your Sendblue API secret (from sendblue show-keys) |
sendblue.phoneNumber |
The Sendblue number assigned to you (from sendblue show-keys) |
whitelist |
Array of your personal phone numbers that can text the bot |
To enable voice memo transcription, add your OpenAI API key (run from inside textme/daemon/):
echo "OPENAI_API_KEY=sk-your-key-here" > .envFrom inside textme/daemon/:
npm startText your Sendblue number from your phone: hello
If you want Claude Code to send/receive iMessages directly from your terminal (without running a persistent daemon), add the Sendblue MCP server:
claude mcp add sendblue_api \
--env SENDBLUE_API_API_KEY=your-api-key \
--env SENDBLUE_API_API_SECRET=your-api-secret \
-- npx -y sendblue-api-mcp --client=claude-code --tools=allThis gives Claude Code tools to send iMessages, check number types, manage group chats, and more — all from within your coding session. See Sendblue MCP docs for details.
| Command | Action |
|---|---|
? |
Show commands |
status |
Current status & directory |
queue |
View queued messages |
history |
Recent messages |
home |
Go to home directory |
reset |
Home + clear history |
cd /path |
Change directory |
stop |
Cancel current task |
yes / no |
Approve/reject actions |
pm2 start dist/index.js --name textme
pm2 save
pm2 startupdaemon/
├── src/
│ ├── index.ts # Main loop, message processing, media handling
│ ├── sendblue.ts # Sendblue API (send, receive, upload files)
│ └── ...
├── dist/ # Compiled output
└── package.json
# PM2
pm2 logs textme
# Standalone
tail -f ~/.local/log/claude-imessage.log./scripts/install-launchd.sh # Enable
./scripts/uninstall-launchd.sh # Disablepm2 delete textme # or: pkill -f "node.*daemon/dist"
rm -rf ~/.config/claude-imessage ~/.local/log/claude-imessage.logBuilt with Sendblue + Claude Code
MIT License