Install guide

Ten minutes, two phones, one QR scan. You need:

Step 1 — the bridge phone

  1. Install SimTether Bridge on the SIM phone — free, sideload the APK fromGitHub Releases(simtether-bridge.apk). Sideloading is normal and safe here; Android will ask you to allow installs from your browser once. A Google Play listing is coming.
  2. Open it and grant the permissions it asks for — SMS and call access is the job, plus notifications and nearby-device access to keep the link up. Keep the status notification visible; hiding it stops the bridge.
  3. Connect it to power and WiFi. The bridge shows a QR code.
Turn off RCS ("chat features") on the bridge phone.SimTether relays carrier SMS — texts that go through the mobile network. RCS chats (on by default in Google Messages) travel over the internet straight into the messaging app; they never touch SMS, so the bridge can't see them — and no Android API can change that. On the bridge phone: Google Messages → profile icon → Messages settings → RCS chats → off (in other messaging apps, disable their "chat" settings the same way). With RCS off, senders fall back to SMS automatically — nothing is missed.

Step 2 — your main phone

  1. Install SimTether from Google Play — a one-time purchase. The listing is going live shortly; the client app is only distributed there.
  2. Open it, tap Pair, and scan the QR on the bridge. That's the entire pairing — keys are exchanged and pinned in that scan.
  3. Done. SMS and call events now arrive on your main phone.
The bridge works best left alone: plugged in, on stable WiFi, with battery optimization disabled for the app (it will ask). Treat it like a router — set it up once and forget it exists.

Optional — remote access

Off by default. If you want the link to keep working when your main phone leaves home:

  1. In the bridge app: Settings → Remote access → enable. The bridge registers with a relay over TLS.
  2. Enable the same toggle on your main phone.
  3. Traffic stays end-to-end encrypted — the relay forwards ciphertext only. Advanced users can point both phones at a self-hosted relay.
The hosted relay is a best-effort service — it may be discontinued or become a paid feature later. Local/hotspot mode and self-hosted relays are free and unaffected either way. The app never depends on our infrastructure to function.

Advanced — run your own relay

If you'd rather not use the hosted relay at all, the relay is a single small jar you can run on any VPS, home server, or Docker host. It only ever forwards ciphertext.

  1. Build it: ./gradlew :relay:fatJar — or grabsimtether-relay.jar from GitHub Releases.
  2. Run it: ACCESS_TOKEN=your-token java -jar simtether-relay.jar(listens on port 44711). Put a TLS terminator in front — Caddy, nginx, or any reverse proxy — so the apps can reach it as wss://.
  3. In the bridge app: Settings → Remote access → enter your wss://your-host:port and the same token. Pair again so the QR carries your relay to the client.
Run exactly one instance — rooms live in memory and there is no cross-server lookup. Full options (env vars, limits) are inrelay/README.md in the repository.

The rooted build

StandardRooted bridge
WhereGitHub Releases (Play soon)GitHub Releases only
SMS + call controlyesyes
Live call audionoyes — requires a rooted bridge phone
Statusstablein development

Root lets the bridge capture GSM call audio — the one thing Android keeps away from normal apps. If your bridge phone is rooted, the rooted build adds audio streaming to your main phone; everything else is identical.

The rooted build is experimental — install it only from the official GitHub Releases page. To verify any build is genuinely ours, compare the signing certificate against the fingerprint published inSECURITY.md:apksigner verify --print-certs file.apk. A fingerprint that doesn't match is not our build.

Troubleshooting

SymptomUsually means
"Pairing rejected"The QR expired or the bridge was re-paired — show a fresh QR on the bridge and scan again.
Client can't find the bridgePhones aren't on the same network, or the bridge phone's battery saver killed the service — disable optimization for the app.
Some texts reach the bridge phone but never arrive on the main phoneThose arrived as RCS chats, not SMS — disable chat features in the bridge's messaging app (see step 1).
Remote access never connectsCheck the relay address in bridge settings, and that remote access is enabled on both phones.
Keystore warning bannerThis device's Android Keystore is broken — stored secrets fall back to plain files. A factory image / different phone is the real fix.