Relay — SMS control plane for your own SIMs
Relay is a control plane and API that lets you send and receive SMS (and MMS) through phones you own, using real SIMs—without handing your traffic to a bulk SMS API unless you choose to. Pair the Relay Android app with your account, queue messages from the web or HTTP API, and audit every job from queue to delivery.
Who it’s for
Operators, small teams, and builders who want carrier-native SMS (OTP, alerts, two-way flows, light campaigns) with their hardware, their numbers, and a clear audit trail—plus optional cloud SMS when you need it.
What you get
- Handset gateway — Android app polls your Relay server, sends SMS/MMS and USSD, reports status; inbound can flow back into Relay for inbox, chats, and webhooks.
- Web console — Queue messages, manage devices, bulk uploads, contacts, blocklist, call log, and (for admins) team, billing, and integrations.
- HTTP API — API tokens for your own scripts and systems; webhooks for job and inbound events.
- Optional third-party SMS — Connect Twilio, Textlocal, and similar drivers with per-server rate quotas so you stay under provider limits while mixing SIM and API sends.
- Faster wakeups — Firebase (FCM) can nudge the app when work is queued, with polling as a fallback.
- Credits and plans — Usage can be tied to your plan and credits model so costs stay predictable.
Relay — technology stack
Mobile app (handset)
- Expo (~54) and React Native (0.81)
- React 19 · TypeScript
- expo-camera (QR pairing), expo-font, expo-linear-gradient, expo-system-ui
- Custom native module
expo-sms-gateway(localmodules/expo-sms-gateway)
Android / native gateway
- Kotlin, Kotlin coroutines
- OkHttp (HTTP to Relay API)
- Firebase Cloud Messaging (FCM) for job wakeups
- Gradle / Android foreground service (polling + SMS/USSD/MMS plumbing)
- Expo config plugins (e.g.
withSmsGatewayfor manifest / cleartext dev)
Web & API server
- PHP 8.4+
- Slim Framework 4 (PSR-7 via slim/psr7)
- Twig (slim/twig-view, symfony/twig-bridge)
- PHP-DI 7
- Symfony: Mailer, Mime, Translation, EventDispatcher
- vlucas/phpdotenv (configuration)
Data & persistence
- SQLite (single-file app DB, migrations in-app)
Integrations & libraries
- Stripe (stripe-php) — billing
- Kreait Firebase PHP — server-side FCM sends
- Endroid QR Code — pairing QR
- PhpSpreadsheet — bulk SMS spreadsheets
Ops & tooling
- PHPUnit (tests)
- CLI workers (e.g. PHP
bin/gateway-send-worker.phpfor third-party SMS) - EAS Build / expo prebuild for Android releases (optional Node mock gateway script)