Your assistant. On your phone.
The downloadable project is a native Kotlin Android app, not a website or a WebView wrapper. This screen is only its interface preview and build guide.
APK compilation and physical Android testing are not available in this environment. No APK is attached and no phone action is claimed as tested. The ZIP contains source, dependency configuration, and build/test instructions.
Build the Android APK
- 1Extract the ZIP and open its root folder in Android Studio. Use JDK 17, Android SDK 35, NDK 27.0.12077973, CMake 3.22.1, and Gradle 8.7.
The Gradle wrapper JAR is generated locally, not bundled as a fabricated binary.
- 2Run with a local Gradle installation:
gradle wrapper --gradle-version 8.7 ./gradlew :app:assembleBasicDebug
Windows: use gradlew.bat. First-time dependency setup requires a network connection on the build computer.
- 3Install the generated debug APK:
adb install -r app/build/outputs/apk/basic/debug/app-basic-debug.apk
For conversations, build assembleLocalAiDebug on a compatible arm64 phone. Release distribution requires your own signing key.
Implemented in native source
What needs device testing
Speech accuracy, runtime native-library compatibility, model loading, memory use, message-app availability, permission denial, reboot restore, and notification delivery. Automated command-parser tests are included but have not been executed here.
Android limitations
Android controls app launching and system settings. This app does not silently send SMS, place calls, toggle restricted radios, or delete arbitrary personal files. SMS opens a composer after confirmation; sending may incur carrier charges. Notifications are approximate, may be delayed in Doze, and can stop after force-stop until the app is reopened. Basic mode supports Android 9+ on supported ARM devices; local AI may not run on older or low-RAM phones.
A smaller privacy boundary
The native manifest explicitly excludes internet permission and Android backups. Audio is held in memory for transcription; no raw audio is retained. Models are manually imported with the system file picker. Exporting chat or handing a message draft to another app requires confirmation and leaves the assistant's privacy boundary.
Review privacy & permissions →