Text an AI over SMS with no mobile data. A standalone Android app that answers texts using your own API key. No server, no backend. Supports Claude, Gemini, OpenAI, Groq and more.
Kotlin
0
26 commits
updated Oct 3, 2026
Ask an AI questions by plain SMS, from any phone, with no mobile data. A spare Android phone at home receives your text, asks the AI provider you chose using your own API key, and texts the answer back.
[!IMPORTANT] This project was entirely generated by AI, from the code to the test cases. The only part done by a human was testing the app on real phones. The maintainer is not an Android developer and can't fully review the code. Please read it before trusting it with your SMS and API keys, and see Contributing if you can help.
Your phone (SMS only, no data)
→ ordinary SMS →
Relay phone (this app, on Wi-Fi or data)
→ Claude / Gemini / OpenAI / Groq / … with your own key
→ reply sent back by SMS
/new or RESET to start a fresh conversation. Conversations also reset after
45 idle minutes (configurable), and only recent history is sent to keep requests small./stop or STOP to cancel the rest (and any question still being answered), which
saves SMS if your plan has a message limit.Not on the Google Play Store, and it won't be. Play only allows the SMS permissions this app needs for apps that are the phone's default SMS app, and this isn't one.
Google has announced developer verification requirements for apps installed from outside the Play Store, rolling out from 2026. Depending on your country and Android version, installing may need extra steps. Check the current status if the install is blocked.
In India, Singapore, Thailand and Brazil, Play Protect blocks installing any app that receives SMS when the APK comes from a browser, messaging app or file manager. It shows a message like "App blocked to protect your device" with no option to continue. This is Google's enhanced fraud protection: fraud apps abuse the SMS permission to steal one-time passwords, so Google blocks the permission itself, whoever made the app. It isn't a sign that this app is harmful, and the app can't work without that permission. Read the source if you want to check what it does with your texts.
In other countries you may instead see an "unsafe app" warning; tap More details → Install anyway.
Option 1: install from a computer with ADB (recommended). Installing over USB isn't covered by the block.
Install Google's Android SDK Platform-Tools
on your computer (Windows, macOS or Linux), which includes adb. If you have Android
Studio, you already have it.
On the relay phone, turn on Developer options: Settings → About phone → tap Build number 7 times (on some phones it's under Software information).
Turn on USB debugging in Settings → System → Developer options.
Connect the phone by USB and tap Allow on the "Allow USB debugging?" prompt.
Download the APK from Releases to your computer, open a terminal in that folder and run:
adb devices
The phone should be listed as device (if it says unauthorized, check the phone for
the prompt). Then install, using the name of the file you downloaded:
adb install sms-ai-relay-v0.7.0.apk
You can turn USB debugging off again afterwards.
Updates downloaded in the browser are blocked the same way, so install them over USB too.
-r replaces the installed version and keeps your settings and history:
adb install -r sms-ai-relay-v0.8.0.apk
If the install fails with INSTALL_FAILED_UPDATE_INCOMPATIBLE, a copy signed with a
different key is installed (for example one you built yourself). Uninstall it first with
adb uninstall com.smsairelay.app; this deletes its settings.
Option 2: pause Play Protect scanning (no computer needed). Less reliable, since Google may change it:
Why not just publish on the Play Store? Play only lets an app receive SMS if it's the phone's default SMS app or fits a short list of exceptions (backup, spam blocking, smartwatch companions and similar), and sending texts to an AI service isn't one of them. See Google's SMS permission policy.
Samsung, Xiaomi, OnePlus, Huawei and others add their own battery managers that can still kill the app. See dontkillmyapp.com for your phone's settings, and also allow the app to run in the background / autostart.
Requires JDK 17–21 (Gradle 8.7 doesn't run on JDK 22+). Android Studio works too, as long as its Gradle JDK is set to 17–21.
./gradlew assembleDebug # APK in app/build/outputs/apk/debug/
./gradlew testDebugUnitTest # unit tests, including Robolectric tests of the Android parts
On Windows use .\gradlew.bat, and set JAVA_HOME to a JDK 17–21 first if your default
java is newer.
SMS behaviour has to be tested on a real phone with a SIM; the emulator can't send real
texts. Watch Logcat for the SmsReceiver, RelayService and SmsRelay tags.
AGENTS.md describes the architecture, design decisions and code layout. RELEASING.md covers signing and publishing releases.
Help from people who know Android is especially welcome, because nobody has reviewed this code yet. Useful contributions:
OpenAiClient instance with a different base URL and a new AiProvider entry.Please open an issue before large changes. CI runs the unit tests on every pull request,
and new code needs tests: a PR fails if under 80% of the app lines it adds or
changes are run by a test. The check's summary page lists the untested lines. Run
./gradlew createDebugUnitTestCoverageReport to see coverage locally.
This project deliberately has no server component. See AGENTS.md for the reasoning before proposing one.
GPL-3.0. You can use, modify and share it; if you distribute a modified version, it must stay open source under the same license.
Kotlin
90.3%
HTML
9.7%
Text an AI over SMS with no mobile data. A standalone Android app that answers texts using your own API key. No server, no backend. Supports Claude, Gemini, OpenAI, Groq and more.
Kotlin
0
26 commits
updated Oct 3, 2026
Ask an AI questions by plain SMS, from any phone, with no mobile data. A spare Android phone at home receives your text, asks the AI provider you chose using your own API key, and texts the answer back.
[!IMPORTANT] This project was entirely generated by AI, from the code to the test cases. The only part done by a human was testing the app on real phones. The maintainer is not an Android developer and can't fully review the code. Please read it before trusting it with your SMS and API keys, and see Contributing if you can help.
Your phone (SMS only, no data)
→ ordinary SMS →
Relay phone (this app, on Wi-Fi or data)
→ Claude / Gemini / OpenAI / Groq / … with your own key
→ reply sent back by SMS
/new or RESET to start a fresh conversation. Conversations also reset after
45 idle minutes (configurable), and only recent history is sent to keep requests small./stop or STOP to cancel the rest (and any question still being answered), which
saves SMS if your plan has a message limit.Not on the Google Play Store, and it won't be. Play only allows the SMS permissions this app needs for apps that are the phone's default SMS app, and this isn't one.
Google has announced developer verification requirements for apps installed from outside the Play Store, rolling out from 2026. Depending on your country and Android version, installing may need extra steps. Check the current status if the install is blocked.
In India, Singapore, Thailand and Brazil, Play Protect blocks installing any app that receives SMS when the APK comes from a browser, messaging app or file manager. It shows a message like "App blocked to protect your device" with no option to continue. This is Google's enhanced fraud protection: fraud apps abuse the SMS permission to steal one-time passwords, so Google blocks the permission itself, whoever made the app. It isn't a sign that this app is harmful, and the app can't work without that permission. Read the source if you want to check what it does with your texts.
In other countries you may instead see an "unsafe app" warning; tap More details → Install anyway.
Option 1: install from a computer with ADB (recommended). Installing over USB isn't covered by the block.
Install Google's Android SDK Platform-Tools
on your computer (Windows, macOS or Linux), which includes adb. If you have Android
Studio, you already have it.
On the relay phone, turn on Developer options: Settings → About phone → tap Build number 7 times (on some phones it's under Software information).
Turn on USB debugging in Settings → System → Developer options.
Connect the phone by USB and tap Allow on the "Allow USB debugging?" prompt.
Download the APK from Releases to your computer, open a terminal in that folder and run:
adb devices
The phone should be listed as device (if it says unauthorized, check the phone for
the prompt). Then install, using the name of the file you downloaded:
adb install sms-ai-relay-v0.7.0.apk
You can turn USB debugging off again afterwards.
Updates downloaded in the browser are blocked the same way, so install them over USB too.
-r replaces the installed version and keeps your settings and history:
adb install -r sms-ai-relay-v0.8.0.apk
If the install fails with INSTALL_FAILED_UPDATE_INCOMPATIBLE, a copy signed with a
different key is installed (for example one you built yourself). Uninstall it first with
adb uninstall com.smsairelay.app; this deletes its settings.
Option 2: pause Play Protect scanning (no computer needed). Less reliable, since Google may change it:
Why not just publish on the Play Store? Play only lets an app receive SMS if it's the phone's default SMS app or fits a short list of exceptions (backup, spam blocking, smartwatch companions and similar), and sending texts to an AI service isn't one of them. See Google's SMS permission policy.
Samsung, Xiaomi, OnePlus, Huawei and others add their own battery managers that can still kill the app. See dontkillmyapp.com for your phone's settings, and also allow the app to run in the background / autostart.
Requires JDK 17–21 (Gradle 8.7 doesn't run on JDK 22+). Android Studio works too, as long as its Gradle JDK is set to 17–21.
./gradlew assembleDebug # APK in app/build/outputs/apk/debug/
./gradlew testDebugUnitTest # unit tests, including Robolectric tests of the Android parts
On Windows use .\gradlew.bat, and set JAVA_HOME to a JDK 17–21 first if your default
java is newer.
SMS behaviour has to be tested on a real phone with a SIM; the emulator can't send real
texts. Watch Logcat for the SmsReceiver, RelayService and SmsRelay tags.
AGENTS.md describes the architecture, design decisions and code layout. RELEASING.md covers signing and publishing releases.
Help from people who know Android is especially welcome, because nobody has reviewed this code yet. Useful contributions:
OpenAiClient instance with a different base URL and a new AiProvider entry.Please open an issue before large changes. CI runs the unit tests on every pull request,
and new code needs tests: a PR fails if under 80% of the app lines it adds or
changes are run by a test. The check's summary page lists the untested lines. Run
./gradlew createDebugUnitTestCoverageReport to see coverage locally.
This project deliberately has no server component. See AGENTS.md for the reasoning before proposing one.
GPL-3.0. You can use, modify and share it; if you distribute a modified version, it must stay open source under the same license.
Kotlin
90.3%
HTML
9.7%