Local-first Google Messages + WhatsApp inbox for Mac, web, and MCP.
翻訳待ち
Loading the full README.
Read the full README ↗OpenMessage is a local-first messaging workspace for Google Messages, WhatsApp, and Signal. Use it from the native macOS app, the localhost web UI, or any MCP-compatible client.
Built on mautrix/gmessages (libgm) for the Google Messages protocol and mcp-go for the MCP server.
git clone https://github.com/MaxGhenis/openmessage.git
cd openmessage
go build -o openmessage .
OpenMessage uses Google Account pairing with emoji confirmation. QR setup is no longer supported: Google documents that QR pairing is unavailable in the US, and the upstream transport retired QR login.
On your phone, open Google Messages > Account menu > Device pairing and sign in to your Google Account. On your computer, open Messages for web and sign in to the same account.
For the CLI on any platform:
messages.google.com with a Cookie request header, and copy that header's value (or Copy as cURL if it includes a Cookie header)../openmessage pair --google
The CLI also accepts a JSON object of cookie names and values through stdin or --google-file path. Treat this input as a credential; keep it local. The session saves to ~/.local/share/openmessage/session.json by default, or OPENMESSAGES_DATA_DIR when set.
On macOS, you can instead read cookies from a signed-in Chrome profile:
./openmessage pair --google-chrome # Default profile
./openmessage pair --google-chrome "Profile 1" # Another profile
The native macOS app offers Google sign-in and an advanced cookie-paste method. If embedded sign-in fails, use the advanced method. Running bare openmessage pair prints account-pairing instructions before opening a connection or changing a session.
./openmessage serve
This starts the Web UI at http://127.0.0.1:7007. A bare serve is web-only.
MCP transports require an explicit opt-in:
./openmessage serve --mcp-sse starts MCP Streamable HTTP and SSE without the web UI../openmessage serve --web --mcp-sse starts the web UI and both HTTP MCP endpoints../openmessage serve --mcp-stdio starts MCP over stdio for pipe-based clients.After serve is running, open the local UI and link WhatsApp or Signal from the Connections surface. OpenMessage keeps those bridges local and syncs them into the same inbox as Google Messages.
./openmessage demo
or:
./openmessage serve --demo
Demo mode starts the same local UI on the normal port, but:
This is the safest way to capture website screenshots, App Store assets, or demo recordings without real messages bleeding back in.
Add to ~/.mcp.json:
{
"mcpServers": {
"openmessage": {
"command": "/path/to/openmessage",
"args": ["serve", "--mcp-stdio"]
}
}
}
Restart Claude Code. The MCP tools appear automatically.
To let a client connect over HTTP, start OpenMessage with --mcp-sse (or --web --mcp-sse to keep the web UI), then point it at:
http://127.0.0.1:7007/mcphttp://127.0.0.1:7007/mcp/sseThis is the beginning of the README. Read the rest at the original. Read the full README ↗