1.1.0-beta-snapshot · self-hosted

SMS Bridge

A single-owner relay so your assistant can read SMS/MMS text and send SMS from your phone through your server. Sideload the companion app, run the Python bridge yourself, pair to your own hostname.

Downloads

Full kit ZIP

Complete 1.1.0-beta snapshot: Android companion source, server, tests, MCP adapter, templates, and guide.

83,709 bytes
SHA-256 1033b7079b4e5d93068827a010db7e751fa194e900814284e2d81cf195bff27f

Companion APK

Generic package org.smsbridge.companion. Empty default server URL — enter your HTTPS host when pairing. Sideload only.

53,882 bytes
SHA-256 a1fe98ae611b629e0b65970293df63a6c057517b88ed88013ca37cf959e31b16

How-to + checksums

Rendered guide on this site, plus plain Markdown and SHA-256 list for verification.

Guide MD 9,573 bytes
SHA-256 920855852f5b226eb1c1a6bfbf4657cc946bc0fde57ba9cfa48872da781ba30a

Verified in this snapshot

  • Individual SMS send through the phone (explicit approval / confirm=true)
  • SMS + MMS text read, including group MMS participants — tested on one Samsung
  • Self-hosted Python bridge + MCP adapter + Caddy/systemd templates in the ZIP

Not in 1.1.0: MMS image/attachment byte retrieval; reliable auto-start after every boot/update (best-effort only — reopen and tap Start bridge after APK updates).

What you need

  • An Android phone you control (sideload + SMS permissions; Samsung may need Allow restricted settings)
  • A Linux host with Python 3 for the bridge + SQLite
  • Your own dedicated HTTPS hostname and reverse proxy
  • An assistant environment that can run a custom MCP command

Phone install (short)

  1. Install the companion APK (allow installs from that source).
  2. Open App info → grant SMS / Phone / Notifications.
  3. If SMS is denied: return to the main App info screen → ⋮ menu → Allow restricted settings, then grant SMS again.
  4. Battery → Unrestricted.
  5. Enter your https://… bridge URL and a one-time code from your pair.sh.
  6. Tap Pair, then Start bridge. After updates, open the app and Start again.

Your server (short)

  1. Unpack the ZIP; copy server/ files to a private directory (e.g. ~/sms-bridge).
  2. Run scripts/bootstrap-mcp-token.sh to create a fresh MCP token + hash (mode 0600). Never paste tokens into chat.
  3. Install the user systemd unit; bind loopback; set SMSB_PROXY when behind a reverse proxy (fail-closed if unset).
  4. Put your own Caddy (or other) site in front using the example template — dedicated hostname, public paths only: /status, /device/*, /mcp.
  5. Register the MCP stdio adapter against your HTTPS /mcp URL and token file.

Open the full how-to for architecture, threat model, rollback, and exact commands.