Skip to content
 
 

Repository files navigation

TextMe

iMessage integration for Claude Code. Text Claude from your phone while it works.

When you're AFK, enable /textme mode and Claude will communicate with you via iMessage instead of the terminal - sending status updates, asking questions, and waiting for your responses.


Features

  • Two-way messaging - Send and receive iMessages through Claude Code
  • Textme mode - Claude texts you instead of printing to terminal when you're AFK
  • Typing indicators - See "..." before messages arrive (natural UX)
  • Pending message check - Claude sees your messages before responding (no crossed wires)
  • Expressive styles - Send with balloons, fireworks, confetti, etc.
  • Double-text support - 5-second grace period collects rapid-fire messages
  • Conversation history - Context preserved across sessions

Installation

1. Get Sendblue API Keys (Free Tier Available)

  1. Sign up at dashboard.sendblue.com
  2. Get your API Key and API Secret from Dashboard → API Keys
  3. Note your Sendblue phone number (the number that will send/receive)
  4. Add your personal phone to the whitelist

2. Set Environment Variables

Add to your shell profile (~/.zshrc or ~/.bashrc):

export SENDBLUE_API_KEY="your_api_key"
export SENDBLUE_API_SECRET="your_api_secret"
export SENDBLUE_PHONE_NUMBER="+1XXXXXXXXXX"  # Your Sendblue number
export IMESSAGE_WHITELIST="+1XXXXXXXXXX"      # Your personal phone

Reload: source ~/.zshrc

3. Configure Claude Code Settings

The plugin needs a longer MCP timeout since send_and_wait blocks while waiting for your reply (default timeout is too short).

Add to ~/.claude/settings.json:

{
  "env": {
    "MCP_TOOL_TIMEOUT": "604800000"
  }
}

This sets the timeout to 1 week (in milliseconds).

4. Install the Plugin

In Claude Code, run:

/plugin marketplace add konarkm/textme
/plugin install imessage@textme

5. Install Dependencies

After installing the plugin, install the server dependencies:

cd ~/.claude/plugins/cache/textme/imessage/*/server && npm install

This builds native modules for your platform. You'll see the install output directly - if there are errors, you can debug them here.

6. Restart Claude Code

Restart Claude Code to connect to the MCP server.

7. Verify

Check the plugin is connected:

/mcp

You should see imessage MCP server with status "connected".


Usage

Quick Test

> Use send_message to text me "Hello from Claude!"

Check your phone - you should receive the message.

Textme Mode (AFK)

When you're stepping away:

> /textme

Claude will now:

  • Send all status updates via iMessage (not terminal)
  • Ask questions via iMessage and wait for your response
  • Check in before stopping

To disable:

> /textme off

Available Tools

Tool Description
send_and_wait Send a message and wait for reply
send_message Send without waiting (status updates)
check_messages Check for pending messages
wait_for_message Wait for user to text first
get_conversation View conversation history

Expressive Styles

Add effects to your messages:

> Send "Happy birthday!" with balloons

Available: celebration, fireworks, balloons, confetti, lasers, love, spotlight, echo, invisible, gentle, loud, slam, shooting_star


How It Works

  1. Polling-based - MCP server polls Sendblue every 5-10 seconds (no webhooks needed)
  2. Typing indicators - 1-second delay with "..." before messages send
  3. Pending check - Before sending, checks if you texted first (prevents crossed messages)
  4. Message IDs - Tracked for future tapback reactions (when Sendblue enables V2 API)

Configuration

Environment variables:

Variable Required Description
SENDBLUE_API_KEY Yes Your Sendblue API key
SENDBLUE_API_SECRET Yes Your Sendblue API secret
SENDBLUE_PHONE_NUMBER Yes Your Sendblue phone number
IMESSAGE_WHITELIST Yes Comma-separated allowed phone numbers
IMESSAGE_POLL_INTERVAL_MS No Poll interval (default: 5000)

Troubleshooting

Messages not sending?

  • Check claude mcp list shows imessage as connected
  • Verify environment variables are set: echo $SENDBLUE_API_KEY
  • Check Sendblue dashboard for API errors

Not receiving messages?

  • Ensure your phone is in IMESSAGE_WHITELIST
  • Phone number must be E.164 format: +1XXXXXXXXXX

MCP shows "failed"?

  • Make sure you ran npm install in the server directory (step 5)
  • Check for npm errors: cd ~/.claude/plugins/cache/textme/imessage/*/server && npm install
  • Verify Node.js is installed: node --version (requires v18+)

Plugin not loading?

  • Run /plugin list in Claude Code to verify installation
  • Make sure you restarted Claude Code after installing
  • Try /mcp to check if the imessage MCP server is connected

Future Features (Waiting on Sendblue)

These are implemented but commented out until Sendblue enables their V2 API:

  • Tapback reactions - React to messages with ❤️ 👍 😂 etc.
  • Read receipts - Show "Read" when Claude sees your messages

See Sendblue Roadmap for status.


License

MIT

Built with Sendblue + Claude Code

About

Text Claude from your phone via iMessage

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages