OpenMessage

4 min read Original article ↗

Open source · Local storage · You choose the AI

Your texts,
AI-native

An open-source Google Messages client that gives AI assistants full read/write access to your SMS and RCS messages via MCP. macOS app or standalone CLI.

OpenMessage app on the left showing a conversation with an AI draft, and Claude Code terminal on the right drafting a reply

Features

Everything you need,
nothing you don't

Full Google Messages parity

SMS, RCS, group chats, inline images and videos, emoji reactions, reply threads, read receipts, delivery status, and contact avatars.

MCP tools + Claude Code plugin

Seven structured tools for AI assistants via Model Context Protocol. Built-in SSE server, plus a Claude Code plugin with /messages command.

Runs locally

Your messages are stored in a local SQLite database — no cloud sync, no accounts, no analytics. When you use AI tools via MCP, only the messages you ask about are sent to your chosen AI provider.

Native macOS app or headless CLI

Swift app with menu bar and notifications, or a standalone Go binary for any platform. Use the GUI, the CLI, or just the MCP server.

Full-text search

Search across all your messages instantly. Keyboard shortcuts (Cmd+K), arrow key navigation, unread badges, and real-time updates.

Open source

Apache 2.0 licensed. Swift + Go, fully tested. Built on the battle-tested mautrix/gmessages library for the Google Messages protocol.

Quick start

Up and running in 60 seconds

1

Download and install

Download OpenMessage.dmg, open it, and drag to Applications.

macOS will block the first launch because the app isn't signed yet. To open it:

  1. Open the app — you'll see "OpenMessage cannot be opened"
  2. Go to System Settings → Privacy & Security
  3. Scroll down and click "Open Anyway" next to the OpenMessage message
  4. Click Open in the confirmation dialog

macOS Privacy & Security settings showing Open Anyway button for OpenMessage

App Store version coming soon — no Gatekeeper workaround needed once it's live.

2

Open and pair

The app walks you through pairing with your phone — scan a QR code and you're done.

3

Connect to AI

The app runs an MCP server automatically. Add it to Claude Code:

claude mcp add -s user --transport sse openmessage http://localhost:7007/mcp/sse

1

Download the binary

Grab the standalone Go binary for your platform:

curl -L https://github.com/MaxGhenis/openmessage/releases/latest/download/openmessage-darwin-arm64.tar.gz | tar xz
sudo mv openmessage-darwin-arm64 /usr/local/bin/openmessage
curl -L https://github.com/MaxGhenis/openmessage/releases/latest/download/openmessage-darwin-amd64.tar.gz | tar xz
sudo mv openmessage-darwin-amd64 /usr/local/bin/openmessage
curl -L https://github.com/MaxGhenis/openmessage/releases/latest/download/openmessage-linux-amd64.tar.gz | tar xz
sudo mv openmessage-linux-amd64 /usr/local/bin/openmessage
curl -L https://github.com/MaxGhenis/openmessage/releases/latest/download/openmessage-linux-arm64.tar.gz | tar xz
sudo mv openmessage-linux-arm64 /usr/local/bin/openmessage

Or build from source: go build -o openmessage . from the repo.

2

Pair with your phone

Run the pairing command — it shows a QR code right in your terminal:

openmessage pair

Open Google Messages on your phone → Settings → Device pairing → Pair a device → scan the QR code.

Note: If you don't see "Pair a device," go to Settings → Device pairing and switch from Google account pairing to QR code pairing.

3

Start the MCP server

One command starts the web UI and MCP server. No macOS app required — works on Linux too.

openmessage serve

Web UI at localhost:7007 · MCP at localhost:7007/mcp/sse

Then connect your AI client:

claude mcp add -s user --transport sse openmessage http://localhost:7007/mcp/sse

AI integration

Let your AI read and send texts

MCP

Model Context Protocol server

OpenMessage runs an SSE-based MCP server at localhost:7007/mcp/sse whenever the app is open. Any MCP-compatible client (Claude Code, Cursor, etc.) can connect.

list_conversations

Recent chats with unread counts

get_messages

Messages in a conversation

search_messages

Full-text search across all texts

send_message

Send SMS/RCS to any number

list_contacts

Known contacts from history

get_conversation

Single conversation details

get_status

Connection status and paired phone info

Plugin

Claude Code plugin

Install the plugin for a /messages slash command that gives Claude context about the MCP tools and best practices for handling texts.

# In your Claude Code settings, add the plugin source:
"pluginSources": {
  "openmessage": "/path/to/openmessage/.claude-plugin"
}

# Then enable it:
"enabledPlugins": {
  "openmessage@openmessage": true
}

🦞

OpenClaw integration

OpenClaw supports WhatsApp, Telegram, Discord, Signal, and iMessage — but not SMS/RCS. OpenMessage fills that gap. Connect via the MCP plugin:

// ~/.openclaw/openclaw.json
"mcp-integration": {
  "enabled": true,
  "config": {
    "servers": {
      "openmessage": {
        "transport": "http",
        "url": "http://localhost:7007/mcp/sse"
      }
    }
  }
}

Any

Works with any MCP client

OpenMessage speaks standard MCP over SSE. Any MCP-compatible client — Cursor, Windsurf, Cline, custom agents — can connect to localhost:7007/mcp/sse and get full read/write access to your texts.