Nothing is stored
No mirror, no cache, no cloud. Every request reads live, then forgets.
Blue Text Relay turns the Messages database on your Mac into an MCP server for your agents. You pick the threads, dates and limits, and the server enforces them. It stores nothing, and it can't write.
$ brew trust bluetextrelay/tap $ brew install bluetextrelay/tap/imx $ imx setup
$ curl -fsSL https://bluetext.sh | sh $ imx setup
$ claude mcp add --transport http imessage \
http://your-mac.your-tailnet.ts.net:8766/mcp \
--header "Authorization: Bearer $BTR_KEY"# Prefer a menu bar app? Same server, same config. $ open https://bluetextrelay.com/download
Privacy first
Your whole Messages history means two-factor codes, bank alerts and years of family chats. Blue Text Relay gives your agent only what you mean to share, and you own the code, so you can check every line.
No mirror, no cache, no cloud. Every request reads live, then forgets.
Opened read-only, no send tool. Your agent can't send, edit or delete.
Threads, dates, caps and expiry per key. Enforced by the server, not the agent.
Full source with every purchase. Build it, change it, ship your own product on it. How it works.
Fixed, compiled rules. No model ever reads your messages.
No accounts, no telemetry, an offline license. Paddle™ handles payment.
API keys and passwords become [redacted: …]. On by default.
Software, as it should be
Every purchase includes the exact source of the app you run. Read it, build it, change it. Not open source, but nothing is hidden from you.
imx source. Tagged to the build.swift build and run your own binary if you'd rather trust your compiler than ours.* Read it. Mod it. Ship it. That's the whole license.
$ unzip blue-text-relay-1.0.0-source.zip $ cd blue-text-relay-1.0.0-source # every network call: the update check, and imx source on request $ grep -rln URLSession Sources/ Sources/imx/main.swift Sources/ExporterCore/UpdateChecker.swift # how Messages is opened $ grep -rln SQLITE_OPEN_READONLY Sources/ Sources/ExporterCore/SQLite.swift $ swift build -c release && swift test ✓ Executed 68 tests, with 0 failures
Build vs. buy
Five minutes gets you a script that lets your agent read chat.db. What takes weeks is everything after it. That part is already built, tested and turnkey.
The usual route is to give the agent's process Full Disk Access, or run an MCP server that opens the whole Messages database. Blue Text Relay puts a permission layer in between.
[redacted: …] by default, unless you turn it offReturned as-isattributedBody decoded, SMS and iMessage merged, late iCloud deliveries caughtBlank messages and split threads until you work it outIt costs less than those weeks, and probably less than the tokens you'd spend having an agent build them. Save yourself the trouble.
Permissions, not prompts
$ imx keys add "claude-on-mini" --threads 3f9c2e1a,7b0d4e6f \ --daily 500 --per-call 200 --expires 2027-01-01 Created key "claude-on-mini". Token (shown once): •••••••••••••••••••••••••••••••• $ imx history 7b0d4e6f 2026-10-01 Agents can read 7b0d4e6f from Oct 1, 2026 onward # meanwhile, on the agent's machine → get_new_messages {"thread_id": "7b0d4e6f", "cursor": "88190"} ← {"messages": [{"from": "Sam", "text": "staging key is [redacted: Stripe key], deploy at 4"}], "next_cursor": "88213"}
One MCP server with a REST mirror, so Claude Code, Claude Desktop, Cursor or your own script can call it. Pick how it's reached by where your agent runs. Keys, scopes and caps work the same on every connection.
| Connection | Reach | Who can read it in transit | URL | Best for |
|---|---|---|---|---|
| This Mac only | Apps on this Mac | Nobody, it never leaves | localhost | Agents on the same Mac |
| Your own devices | Only you, end-to-end encrypted | Stable | Agents on your other machines | |
| Public, key required | Only you, TLS ends on your Mac | Stable | Cloud agents | |
| Public, key required | Cloudflare could | Changes each start | Quick tests | |
| Public, key required | Cloudflare could | Stable, your domain | Your own domain | |
| Public, key required | ngrok could | Stable, free domain | A fixed URL, no domain |
Setup, limits and every privacy trade-off: Connections and privacy. Want another connector? Tell us.
Tailscale, Cloudflare and ngrok are trademarks of their owners. Blue Text Relay isn't affiliated with or endorsed by them.
Search your threads, not your whole life
MCP over Streamable HTTP with JSON responses, plus a REST mirror under /api. Names are resolved from your contacts, and you show up as you, not "me".
list_threadsIds, names, participants, message counts and each thread's history floor.
get_messagesJSON, oldest first, with since, until and limit.
get_transcriptClean Markdown grouped by day, ready to drop into context.
search_messagesCase-insensitive search across the threads this key can see.
get_new_messagesCursor-based polling that never misses or repeats a message, including late iCloud deliveries.
Headless-first: every setting is an imx command with --json, and it runs as a launchd service on a Mac mini in a closet. Private over Tailscale by default; Funnel, Cloudflare Tunnel or ngrok on your own account. Docs →
Rather do it by hand? The Mac app exports any thread to a Markdown transcript or JSONL, for all time, since your last export, or a date range, with photos and files if you want them. Same thing from the terminal with imx export.
Why I built it
My agent runs on a machine that does real work. It needed a handful of my work threads, kept up to date. What I didn't want was to give that machine every message I've ever received: 2FA codes, bank alerts, family chats, a decade of history. One bad prompt and all of it is in play.
So I built the thing I wanted. It reads my Mac and shares only what I allow, with limits the agent can't talk its way around.
I also wanted you to feel comfortable connecting your messages to it. That's why you (and your agent) can read the source code. Trust, but verify.
Box price · software sold the way it should be
† Or for as long as we keep shipping them. We plan to be at this a while.
Launch price $19.99
imx CLIWhat you won't get
Paddle is our merchant of record. Your key arrives by email within a minute. Our policy is no refunds, but if something's wrong, email us and we'll work it out (refund policy).
Questions
No. It's read-only by design. There is no send tool and no write path.
Yes. The endpoint is live while the app or service runs. Agents are told to back off and retry, and their cursor picks up exactly where it left off.
It uses Full Disk Access, the permission macOS provides for exactly this, to read your own data on your own Mac. It bypasses nothing and modifies nothing. Blue Text Relay is an independent product, not affiliated with Apple.
No. The docs, the security model and this page describe exactly what it does and how, and at $9.99 it's priced so you can just try it. Our policy is no refunds, but if something isn't working, email us and we'll work it out.
Read /llms.txt. Everything you need to install, connect and help your user buy is there.
$ curl -fsSL https://bluetext.sh | sh